github.com/triarius/goreleaser@v1.12.5/internal/pipe/brew/template.go (about) 1 package brew 2 3 import "github.com/triarius/goreleaser/pkg/config" 4 5 type templateData struct { 6 Name string 7 Desc string 8 Homepage string 9 Version string 10 License string 11 Caveats []string 12 Plist string 13 PostInstall []string 14 Dependencies []config.HomebrewDependency 15 Conflicts []string 16 Tests []string 17 CustomRequire string 18 CustomBlock []string 19 LinuxPackages []releasePackage 20 MacOSPackages []releasePackage 21 Service []string 22 HasOnlyAmd64MacOsPkg bool 23 } 24 25 type releasePackage struct { 26 DownloadURL string 27 SHA256 string 28 OS string 29 Arch string 30 DownloadStrategy string 31 Install []string 32 } 33 34 const formulaTemplate = `# typed: false 35 # frozen_string_literal: true 36 37 # This file was generated by GoReleaser. DO NOT EDIT. 38 {{ if .CustomRequire -}} 39 require_relative "{{ .CustomRequire }}" 40 {{ end -}} 41 class {{ .Name }} < Formula 42 desc "{{ .Desc }}" 43 homepage "{{ .Homepage }}" 44 version "{{ .Version }}" 45 {{- if .License }} 46 license "{{ .License }}" 47 {{- end }} 48 {{- with .Dependencies }} 49 {{ range $index, $element := . }} 50 depends_on "{{ .Name }}" 51 {{- if .Type }} => :{{ .Type }}{{- else if .Version }} => "{{ .Version }}"{{- end }} 52 {{- end }} 53 {{- end -}} 54 55 {{- if and (not .LinuxPackages) .MacOSPackages }} 56 depends_on :macos 57 {{- end }} 58 {{- if and (not .MacOSPackages) .LinuxPackages }} 59 depends_on :linux 60 {{- end }} 61 {{- printf "\n" }} 62 63 {{- if .MacOSPackages }} 64 on_macos do 65 {{- range $element := .MacOSPackages }} 66 {{- if eq $element.Arch "all" }} 67 url "{{ $element.DownloadURL }}" 68 {{- if .DownloadStrategy }}, using: {{ .DownloadStrategy }}{{- end }} 69 sha256 "{{ $element.SHA256 }}" 70 71 def install 72 {{- range $index, $element := .Install }} 73 {{ . -}} 74 {{- end }} 75 end 76 {{- else if $.HasOnlyAmd64MacOsPkg }} 77 url "{{ $element.DownloadURL }}" 78 {{- if .DownloadStrategy }}, using: {{ .DownloadStrategy }}{{- end }} 79 sha256 "{{ $element.SHA256 }}" 80 81 def install 82 {{- range $index, $element := .Install }} 83 {{ . -}} 84 {{- end }} 85 end 86 87 if Hardware::CPU.arm? 88 def caveats 89 <<~EOS 90 The darwin_arm64 architecture is not supported for the {{ $.Name }} 91 formula at this time. The darwin_amd64 binary may work in compatibility 92 mode, but it might not be fully supported. 93 EOS 94 end 95 end 96 {{- else }} 97 {{- if eq $element.Arch "amd64" }} 98 if Hardware::CPU.intel? 99 {{- end }} 100 {{- if eq $element.Arch "arm64" }} 101 if Hardware::CPU.arm? 102 {{- end}} 103 url "{{ $element.DownloadURL }}" 104 {{- if .DownloadStrategy }}, using: {{ .DownloadStrategy }}{{- end }} 105 sha256 "{{ $element.SHA256 }}" 106 107 def install 108 {{- range $index, $element := .Install }} 109 {{ . -}} 110 {{- end }} 111 end 112 end 113 {{- end }} 114 {{- end }} 115 end 116 {{- end }} 117 118 {{- if and .MacOSPackages .LinuxPackages }}{{ printf "\n" }}{{ end }} 119 120 {{- if .LinuxPackages }} 121 on_linux do 122 {{- range $element := .LinuxPackages }} 123 {{- if eq $element.Arch "amd64" }} 124 if Hardware::CPU.intel? 125 {{- end }} 126 {{- if eq $element.Arch "arm" }} 127 if Hardware::CPU.arm? && !Hardware::CPU.is_64_bit? 128 {{- end }} 129 {{- if eq $element.Arch "arm64" }} 130 if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? 131 {{- end }} 132 url "{{ $element.DownloadURL }}" 133 {{- if .DownloadStrategy }}, using: {{ .DownloadStrategy }}{{- end }} 134 sha256 "{{ $element.SHA256 }}" 135 136 def install 137 {{- range $index, $element := .Install }} 138 {{ . -}} 139 {{- end }} 140 end 141 end 142 {{- end }} 143 end 144 {{- end }} 145 146 {{- with .Conflicts }} 147 {{ range $index, $element := . }} 148 conflicts_with "{{ . }}" 149 {{- end }} 150 {{- end }} 151 152 {{- with .CustomBlock }} 153 {{ range $index, $element := . }} 154 {{ . }} 155 {{- end }} 156 {{- end }} 157 158 {{- with .PostInstall }} 159 160 def post_install 161 {{- range . }} 162 {{ . }} 163 {{- end }} 164 end 165 {{- end -}} 166 167 {{- with .Caveats }} 168 169 def caveats 170 <<~EOS 171 {{- range $index, $element := . }} 172 {{ . -}} 173 {{- end }} 174 EOS 175 end 176 {{- end -}} 177 178 {{- with .Plist }} 179 180 plist_options startup: false 181 182 def plist 183 <<~EOS 184 {{ . }} 185 EOS 186 end 187 {{- end -}} 188 189 {{- with .Service }} 190 191 service do 192 {{- range . }} 193 {{ . }} 194 {{- end }} 195 end 196 {{- end -}} 197 198 {{- if .Tests }} 199 200 test do 201 {{- range $index, $element := .Tests }} 202 {{ . -}} 203 {{- end }} 204 end 205 {{- end }} 206 end 207 `