class {{ formula_class }} < Formula desc "{{ desc }}" {%- if homepage %} homepage "{{ homepage }}" {%- endif %} version "{{ inner.app_version }}" {#- note: this is a jinja2 macro: <https://jinja.palletsprojects.com/en/stable/templates/#macros> #} {%- macro fragment_url_and_hash(frag, cond) %} {%- if frag %} {%- if cond is defined %} if {{ cond }} url "{{ inner.base_url }}/{{ frag.id }}" {%- if frag.sha256 %} sha256 "{{ frag.sha256 }}" {%- endif %} end {%- else %} url "{{ inner.base_url }}/{{ frag.id }}" {%- if frag.sha256 %} sha256 "{{ frag.sha256 }}" {%- endif %} {%- endif %} {%- endif %} {%- endmacro %} {%- if arm64_macos or x86_64_macos %} if OS.mac? {%- if arm64_macos and x86_64_macos and arm64_macos.id == x86_64_macos.id %} {{- fragment_url_and_hash(arm64_macos) }} {%- else %} {{- fragment_url_and_hash(arm64_macos, "Hardware::CPU.arm?") }} {{- fragment_url_and_hash(x86_64_macos, "Hardware::CPU.intel?") }} {%- endif %} end {%- endif %} {%- if arm64_linux or x86_64_linux %} if OS.linux? {%- if arm64_linux and x86_64_linux and arm64_linux.id == x86_64_linux.id %} {{- fragment_url_and_hash(arm64_linux) }} {%- else %} {{- fragment_url_and_hash(arm64_linux, "Hardware::CPU.arm?") }} {{- fragment_url_and_hash(x86_64_linux, "Hardware::CPU.intel?") }} {%- endif %} end {%- endif %} {%- if license %} license {{ license }} {%- endif -%} {% for dep in dependencies %} depends_on "{{ dep }}" {%- endfor %} BINARY_ALIASES = {{ inner.bin_aliases | tojson(indent=2) | indent(2) }} def target_triple cpu = Hardware::CPU.arm? ? "aarch64" : "x86_64" os = OS.mac? ? "apple-darwin" : "unknown-linux-gnu" "#{cpu}-#{os}" end def install_binary_aliases! BINARY_ALIASES[target_triple.to_sym].each do |source, dests| dests.each do |dest| bin.install_symlink bin/source.to_s => dest end end end def install {%- macro install_fragment(frag, cond) %} {%- if frag %} if {{ cond }} {%- if frag.executables %} bin.install {% for binary in frag.executables %}"{{ binary }}"{{ ", " if not loop.last else "" }}{% endfor %} {%- endif %} {%- if frag.cdylibs and "cdylib" in install_libraries %} lib.install {% for library in frag.cdylibs %}"{{ library }}"{{ ", " if not loop.last else "" }}{% endfor %} {%- endif %} {%- if frag.cstaticlibs and "cstaticlib" in install_libraries %} lib.install {% for library in frag.cstaticlibs %}"{{ library }}"{{ ", " if not loop.last else "" }}{% endfor %} {%- endif %} end {%- endif %} {%- endmacro %} {{- install_fragment(arm64_macos, "OS.mac? && Hardware::CPU.arm?") }} {{- install_fragment(x86_64_macos, "OS.mac? && Hardware::CPU.intel?") }} {{- install_fragment(arm64_linux, "OS.linux? && Hardware::CPU.arm?") }} {{- install_fragment(x86_64_linux, "OS.linux? && Hardware::CPU.intel?") }} install_binary_aliases! # Homebrew will automatically install these, so we don't need to do that doc_files = Dir["README.*", "readme.*", "LICENSE", "LICENSE.*", "CHANGELOG.*"] leftover_contents = Dir["*"] - doc_files # Install any leftover files in pkgshare; these are probably config or # sample files. pkgshare.install(*leftover_contents) unless leftover_contents.empty? end end