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  `