diff --git a/bin/create-homebrew-pr.js b/bin/create-homebrew-pr.js index 9021b8af9c..155374a3d3 100755 --- a/bin/create-homebrew-pr.js +++ b/bin/create-homebrew-pr.js @@ -45,11 +45,10 @@ program switch (templateVersion) { case "stable": files["shopify-cli.rb"] = (await readFile(path.join(outputDirectory, "shopify-cli.rb"))).toString() - // Only keep the @3 versioned formula up to date while we are on major version 3. - // Once we move to v4+, shopify-cli@3.rb stays frozen at the last 3.x release. - if (majorVersion === 3) { - files["shopify-cli@3.rb"] = (await readFile(path.join(outputDirectory, "shopify-cli@3.rb"))).toString() - } + // Always keep the versioned formula for the current major up to date. + // When we bump to the next major, the previous major's formula naturally + // freezes at its last release since we stop updating it. + files[`shopify-cli@${majorVersion}.rb`] = await renderVersionedFormula(majorVersion, homebrewVariables) break case "pre": files["shopify-cli-pre.rb"] = (await readFile(path.join(outputDirectory, "shopify-cli-pre.rb"))).toString() @@ -115,6 +114,13 @@ function getTemplateVersion(version) { throw `Unrecognized version string ${version}` } +async function renderVersionedFormula(majorVersion, variables) { + const engine = new Liquid({root: packagingDirectory}) + const templatePath = path.join(packagingDirectory, "stable/src/shopify-cli.rb.liquid") + const content = (await readFile(templatePath)).toString() + return engine.render(engine.parse(content), {...variables, formulaVersion: String(majorVersion)}) +} + async function getHomebrewVariables(cliVersion) { const [cliTarball, cliSha] = await getTarballAndShaForPackage('@shopify/cli', cliVersion) return {cliTarball, cliSha} diff --git a/packaging/stable/src/shopify-cli.rb.liquid b/packaging/stable/src/shopify-cli.rb.liquid index 65d8695ab6..2d4d8afaae 100644 --- a/packaging/stable/src/shopify-cli.rb.liquid +++ b/packaging/stable/src/shopify-cli.rb.liquid @@ -4,7 +4,7 @@ require "formula" require "language/node" require "fileutils" -class ShopifyCli{% if formulaVersion %}{% if formulaVersion == '3' %}AT3{% else %}{{ formulaVersion | capitalize }}{% endif %}{% endif %} < Formula +class ShopifyCli{% if formulaVersion %}{% if formulaVersion == 'nightly' or formulaVersion == 'pre' %}{{ formulaVersion | capitalize }}{% else %}AT{{ formulaVersion }}{% endif %}{% endif %} < Formula desc "A CLI tool to build for the Shopify platform" homepage "https://github.com/shopify/cli#readme" url "{{ cliTarball }}" @@ -31,13 +31,13 @@ class ShopifyCli{% if formulaVersion %}{% if formulaVersion == '3' %}AT3{% else system "npm", "install", *Language::Node.std_npm_install_args(libexec) original_executable_path = "#{libexec}/bin/shopify" - executable_path = "#{original_executable_path}{% if formulaVersion %}{% if formulaVersion != '3' %}-{% endif %}{{formulaVersion}}{% endif %}" + executable_path = "#{original_executable_path}{% if formulaVersion %}{% if formulaVersion == 'nightly' or formulaVersion == 'pre' %}-{% endif %}{{formulaVersion}}{% endif %}" new_original_executable_path = "#{executable_path}-original" FileUtils.move(original_executable_path, new_original_executable_path) executable_content = <<~SCRIPT #!/usr/bin/env #{Formula["node"].opt_bin}/node - process.env.SHOPIFY_HOMEBREW_FORMULA = "shopify-cli{% if formulaVersion %}{% if formulaVersion == '3' %}@{% else %}-{% endif %}{{formulaVersion}}{% endif %}" + process.env.SHOPIFY_HOMEBREW_FORMULA = "shopify-cli{% if formulaVersion %}{% if formulaVersion == 'nightly' or formulaVersion == 'pre' %}-{% else %}@{% endif %}{{formulaVersion}}{% endif %}" import("#{new_original_executable_path}") SCRIPT diff --git a/packaging/stable/src/shopify-cli@3.rb.liquid b/packaging/stable/src/shopify-cli@3.rb.liquid deleted file mode 100644 index 52515a93cf..0000000000 --- a/packaging/stable/src/shopify-cli@3.rb.liquid +++ /dev/null @@ -1,5 +0,0 @@ -{% render 'stable/src/shopify-cli.rb.liquid', - formulaVersion: '3', - cliTarball: cliTarball, - cliSha: cliSha, -%}