package brew type templateData struct { Name string Desc string Homepage string DownloadURL string Version string Caveats []string SHA256 string Plist string DownloadStrategy string Install []string Dependencies []string Conflicts []string Tests []string } const formulaTemplate = `class {{ .Name }} < Formula desc "{{ .Desc }}" homepage "{{ .Homepage }}" url "{{ .DownloadURL }}" {{- if .DownloadStrategy }}, :using => {{ .DownloadStrategy }}{{- end }} version "{{ .Version }}" sha256 "{{ .SHA256 }}" {{- with .Dependencies }} {{ range $index, $element := . }} depends_on "{{ . }}" {{- end }} {{- end -}} {{- with .Conflicts }} {{ range $index, $element := . }} conflicts_with "{{ . }}" {{- end }} {{- end }} def install {{- range $index, $element := .Install }} {{ . -}} {{- end }} end {{- with .Caveats }} def caveats; <<~EOS {{- range $index, $element := . }} {{ . -}} {{- end }} EOS end {{- end -}} {{- with .Plist }} plist_options :startup => false def plist; <<~EOS {{ . }} EOS end {{- end -}} {{- if .Tests }} test do {{- range $index, $element := .Tests }} {{ . -}} {{- end }} end {{- end }} end `