Skip to content

Commit eaeab71

Browse files
Merge pull request #7310 from Shopify/homebrew-versioned-formulas
Make Homebrew versioned formula generation dynamic
2 parents 7fd3ee7 + 2ac3237 commit eaeab71

3 files changed

Lines changed: 14 additions & 13 deletions

File tree

bin/create-homebrew-pr.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,10 @@ program
4545
switch (templateVersion) {
4646
case "stable":
4747
files["shopify-cli.rb"] = (await readFile(path.join(outputDirectory, "shopify-cli.rb"))).toString()
48-
// Only keep the @3 versioned formula up to date while we are on major version 3.
49-
// Once we move to v4+, shopify-cli@3.rb stays frozen at the last 3.x release.
50-
if (majorVersion === 3) {
51-
files["shopify-cli@3.rb"] = (await readFile(path.join(outputDirectory, "shopify-cli@3.rb"))).toString()
52-
}
48+
// Always keep the versioned formula for the current major up to date.
49+
// When we bump to the next major, the previous major's formula naturally
50+
// freezes at its last release since we stop updating it.
51+
files[`shopify-cli@${majorVersion}.rb`] = await renderVersionedFormula(majorVersion, homebrewVariables)
5352
break
5453
case "pre":
5554
files["shopify-cli-pre.rb"] = (await readFile(path.join(outputDirectory, "shopify-cli-pre.rb"))).toString()
@@ -115,6 +114,13 @@ function getTemplateVersion(version) {
115114
throw `Unrecognized version string ${version}`
116115
}
117116

117+
async function renderVersionedFormula(majorVersion, variables) {
118+
const engine = new Liquid({root: packagingDirectory})
119+
const templatePath = path.join(packagingDirectory, "stable/src/shopify-cli.rb.liquid")
120+
const content = (await readFile(templatePath)).toString()
121+
return engine.render(engine.parse(content), {...variables, formulaVersion: String(majorVersion)})
122+
}
123+
118124
async function getHomebrewVariables(cliVersion) {
119125
const [cliTarball, cliSha] = await getTarballAndShaForPackage('@shopify/cli', cliVersion)
120126
return {cliTarball, cliSha}

packaging/stable/src/shopify-cli.rb.liquid

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ require "formula"
44
require "language/node"
55
require "fileutils"
66

7-
class ShopifyCli{% if formulaVersion %}{% if formulaVersion == '3' %}AT3{% else %}{{ formulaVersion | capitalize }}{% endif %}{% endif %} < Formula
7+
class ShopifyCli{% if formulaVersion %}{% if formulaVersion == 'nightly' or formulaVersion == 'pre' %}{{ formulaVersion | capitalize }}{% else %}AT{{ formulaVersion }}{% endif %}{% endif %} < Formula
88
desc "A CLI tool to build for the Shopify platform"
99
homepage "https://github.com/shopify/cli#readme"
1010
url "{{ cliTarball }}"
@@ -31,13 +31,13 @@ class ShopifyCli{% if formulaVersion %}{% if formulaVersion == '3' %}AT3{% else
3131
system "npm", "install", *Language::Node.std_npm_install_args(libexec)
3232

3333
original_executable_path = "#{libexec}/bin/shopify"
34-
executable_path = "#{original_executable_path}{% if formulaVersion %}{% if formulaVersion != '3' %}-{% endif %}{{formulaVersion}}{% endif %}"
34+
executable_path = "#{original_executable_path}{% if formulaVersion %}{% if formulaVersion == 'nightly' or formulaVersion == 'pre' %}-{% endif %}{{formulaVersion}}{% endif %}"
3535
new_original_executable_path = "#{executable_path}-original"
3636
FileUtils.move(original_executable_path, new_original_executable_path)
3737
executable_content = <<~SCRIPT
3838
#!/usr/bin/env #{Formula["node"].opt_bin}/node
3939

40-
process.env.SHOPIFY_HOMEBREW_FORMULA = "shopify-cli{% if formulaVersion %}{% if formulaVersion == '3' %}@{% else %}-{% endif %}{{formulaVersion}}{% endif %}"
40+
process.env.SHOPIFY_HOMEBREW_FORMULA = "shopify-cli{% if formulaVersion %}{% if formulaVersion == 'nightly' or formulaVersion == 'pre' %}-{% else %}@{% endif %}{{formulaVersion}}{% endif %}"
4141

4242
import("#{new_original_executable_path}")
4343
SCRIPT

packaging/stable/src/shopify-cli@3.rb.liquid

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)