Skip to content

Commit c1df39a

Browse files
Fix CLI version detection to use package.json instead of constant
- Replace CLI_KIT_VERSION constant with cliVersion() function - Read version dynamically from package.json at runtime - Add isMajorVersionChange helper function - Remove bin/update-cli-kit-version.js (no longer needed) - Update .github/workflows/release.yml validation message - Update bin/release to remove update-cli-kit-version.js call - Update package.json changeset-manifests script - Update all imports across the codebase Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent da3a512 commit c1df39a

File tree

32 files changed

+151
-146
lines changed

32 files changed

+151
-146
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ jobs:
6666
comment_suffix: "
6767
> [!CAUTION]
6868
69-
> After installing, validate the version by running just `shopify` in your terminal.
69+
> After installing, validate the version by running `shopify version` in your terminal.
7070
7171
> If the versions don't match, you might have multiple global instances installed.
7272

bin/release

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ fi
1616
if [ "$tag" = "nightly" ] || [ "$tag" = "experimental" ]; then
1717
echo -e "---\n'"'@shopify/cli'"': patch\n---" > .changeset/force-release.md
1818
pnpm changeset version --snapshot $tag
19-
./bin/update-cli-kit-version.js
2019
fi
2120

2221
# Bundle the packages

bin/update-cli-kit-version.js

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"build:affected": "nx affected --target=build",
99
"build": "nx run-many --target=build --all --skip-nx-cache",
1010
"bundle-for-release": "nx run-many --target=bundle --all --skip-nx-cache",
11-
"changeset-manifests": "changeset version && pnpm install --no-frozen-lockfile && pnpm refresh-manifests && pnpm refresh-readme && pnpm refresh-code-documentation && bin/update-cli-kit-version.js",
11+
"changeset-manifests": "changeset version && pnpm install --no-frozen-lockfile && pnpm refresh-manifests && pnpm refresh-readme && pnpm refresh-code-documentation",
1212
"clean": "nx run-many --target=clean --all --skip-nx-cache && nx reset",
1313
"create-app": "nx build create-app && node packages/create-app/bin/dev.js --package-manager npm",
1414
"deploy-experimental": "node bin/deploy-experimental.js",

packages/app/src/cli/services/dev/graphiql/server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {filterCustomHeaders} from './utilities.js'
44
import express from 'express'
55
import bodyParser from 'body-parser'
66
import {performActionWithRetryAfterRecovery} from '@shopify/cli-kit/common/retry'
7-
import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version'
7+
import {cliVersion} from '@shopify/cli-kit/node/version'
88
import {AbortError} from '@shopify/cli-kit/node/error'
99
import {adminUrl, supportedApiVersions} from '@shopify/cli-kit/node/api/admin'
1010
import {fetch} from '@shopify/cli-kit/node/http'
@@ -195,7 +195,7 @@ export function setupGraphiQLServer({
195195
Accept: 'application/json',
196196
'Content-Type': 'application/json',
197197
'X-Shopify-Access-Token': await token(),
198-
'User-Agent': `ShopifyCLIGraphiQL/${CLI_KIT_VERSION}`,
198+
'User-Agent': `ShopifyCLIGraphiQL/${cliVersion()}`,
199199
}
200200

201201
return fetch(graphqlUrl, {

packages/app/src/cli/services/info.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
stringifyMessage,
1616
} from '@shopify/cli-kit/node/output'
1717
import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/node/ui'
18-
import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version'
18+
import {cliVersion} from '@shopify/cli-kit/node/version'
1919

2020
export type Format = 'json' | 'text'
2121
export interface InfoOptions {
@@ -265,7 +265,7 @@ class AppInfo {
265265
async systemInfoSection(): Promise<AlertCustomSection> {
266266
const {platform, arch} = platformAndArch()
267267
return this.tableSection('Tooling and System', [
268-
['Shopify CLI', CLI_KIT_VERSION],
268+
['Shopify CLI', cliVersion()],
269269
['Package manager', this.app.packageManager],
270270
['OS', `${platform}-${arch}`],
271271
['Shell', process.env.SHELL ?? 'unknown'],

packages/app/src/cli/services/init/template/npm.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {platform} from 'os'
77

88
vi.mock('os')
99
vi.mock('@shopify/cli-kit/node/node-package-manager')
10-
vi.mock('@shopify/cli-kit/common/version', () => ({CLI_KIT_VERSION: '1.2.3'}))
10+
vi.mock('@shopify/cli-kit/node/version', () => ({cliVersion: () => '1.2.3'}))
1111

1212
describe('updateCLIDependencies', () => {
1313
test('updates @shopify/cli and deletes @shopify/app if not using global CLI', async () => {

packages/app/src/cli/services/init/template/npm.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {PackageManager, installNodeModules, PackageJson} from '@shopify/cli-kit/node/node-package-manager'
22
import {moduleDirectory, normalizePath} from '@shopify/cli-kit/node/path'
33
import {findPathUp} from '@shopify/cli-kit/node/fs'
4-
import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version'
4+
import {cliVersion} from '@shopify/cli-kit/node/version'
55
import {platform} from 'os'
66

77
interface UpdateCLIDependenciesOptions {
@@ -20,7 +20,7 @@ export async function updateCLIDependencies({
2020
if (useGlobalCLI) {
2121
delete packageJSON.dependencies['@shopify/cli']
2222
} else {
23-
packageJSON.dependencies['@shopify/cli'] = CLI_KIT_VERSION
23+
packageJSON.dependencies['@shopify/cli'] = cliVersion()
2424
}
2525

2626
delete packageJSON.dependencies['@shopify/app']

packages/app/src/cli/utilities/developer-platform-client/app-management-client.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {CreateAssetUrl} from '../../api/graphql/app-management/generated/create-
3333
import {SourceExtension} from '../../api/graphql/app-management/generated/types.js'
3434
import {ListOrganizations} from '../../api/graphql/business-platform-destinations/generated/organizations.js'
3535
import {describe, expect, test, vi, beforeEach} from 'vitest'
36-
import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version'
36+
import {cliVersion} from '@shopify/cli-kit/node/version'
3737
import {fetch} from '@shopify/cli-kit/node/http'
3838
import {
3939
businessPlatformOrganizationsRequest,
@@ -69,7 +69,7 @@ const templateDisallowedByMinimumCliVersion: GatedExtensionTemplate = {
6969
...testRemoteExtensionTemplates[2]!,
7070
organizationBetaFlags: ['allowedFlag'],
7171
// minimum CLI version is higher than the current CLI version
72-
minimumCliVersion: `1${CLI_KIT_VERSION}`,
72+
minimumCliVersion: `1${cliVersion()}`,
7373
}
7474
const templateDisallowedByDeprecatedFromCliVersion: GatedExtensionTemplate = {
7575
...testRemoteExtensionTemplates[2]!,

packages/app/src/cli/utilities/developer-platform-client/app-management-client.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,14 @@ import {
161161
businessPlatformRequestDoc,
162162
BusinessPlatformRequestOptions,
163163
} from '@shopify/cli-kit/node/api/business-platform'
164-
import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version'
164+
import {cliVersion, isPreReleaseVersion} from '@shopify/cli-kit/node/version'
165165
import {versionSatisfies} from '@shopify/cli-kit/node/node-package-manager'
166166
import {outputDebug} from '@shopify/cli-kit/node/output'
167167
import {developerDashboardFqdn, normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn'
168168
import {TokenItem} from '@shopify/cli-kit/node/ui'
169169
import {functionsRequestDoc, FunctionsRequestOptions} from '@shopify/cli-kit/node/api/functions'
170170
import {fileExists, readFile} from '@shopify/cli-kit/node/fs'
171171
import {JsonMapType} from '@shopify/cli-kit/node/toml'
172-
import {isPreReleaseVersion} from '@shopify/cli-kit/node/version'
173172
import {UnauthorizedHandler} from '@shopify/cli-kit/node/api/graphql'
174173
import {Variables} from 'graphql-request'
175174
import {webhooksRequestDoc, WebhooksRequestOptions} from '@shopify/cli-kit/node/api/webhooks'
@@ -1318,7 +1317,7 @@ export async function allowedTemplates(
13181317
templates: GatedExtensionTemplate[],
13191318
betaFlagsFetcher: (betaFlags: string[]) => Promise<{[key: string]: boolean}>,
13201319
expFlagsFetcher: (expFlags: string[]) => Promise<{[key: string]: boolean}>,
1321-
version: string = CLI_KIT_VERSION,
1320+
version: string = cliVersion(),
13221321
): Promise<GatedExtensionTemplate[]> {
13231322
// Extract both types of flags from templates
13241323
const allBetaFlags = Array.from(new Set(templates.map((ext) => ext.organizationBetaFlags ?? []).flat()))

0 commit comments

Comments
 (0)