From 07e03e6e0a4187afdb4312ecbb0928de9ecb604f Mon Sep 17 00:00:00 2001 From: Nick Wesselman <27013789+nickwesselman@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:09:06 -0400 Subject: [PATCH 1/2] Add agent-compatible device auth with explicit CLI commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When an agent runs a Shopify CLI command requiring auth, the device code polling loop blocks the process. This adds explicit commands that agents can orchestrate: - `shopify auth whoami` โ€” check for a valid session (exit 0/1) - `shopify auth login --no-polling` โ€” start device flow, print URL, exit - `shopify auth login --resume` โ€” exchange stashed device code for token Also extracts `completeAuthFlow` from the private session module so the resume path can reuse the post-auth token exchange logic. Co-Authored-By: Claude Opus 4.6 --- .../cli-kit/src/private/node/conf-store.ts | 30 + packages/cli-kit/src/private/node/session.ts | 24 +- .../node/session/device-authorization.ts | 47 +- packages/cli-kit/src/public/node/session.ts | 111 + packages/cli/README.md | 5 +- packages/cli/oclif.manifest.json | 11317 ++++++++-------- .../cli/src/cli/commands/auth/login.test.ts | 78 + packages/cli/src/cli/commands/auth/login.ts | 40 +- .../cli/src/cli/commands/auth/whoami.test.ts | 32 + packages/cli/src/cli/commands/auth/whoami.ts | 17 + packages/cli/src/index.ts | 2 + 11 files changed, 6291 insertions(+), 5412 deletions(-) create mode 100644 packages/cli/src/cli/commands/auth/whoami.test.ts create mode 100644 packages/cli/src/cli/commands/auth/whoami.ts diff --git a/packages/cli-kit/src/private/node/conf-store.ts b/packages/cli-kit/src/private/node/conf-store.ts index 1c585eae41a..b3c122ec6d5 100644 --- a/packages/cli-kit/src/private/node/conf-store.ts +++ b/packages/cli-kit/src/private/node/conf-store.ts @@ -26,12 +26,21 @@ interface Cache { [rateLimitKey: RateLimitKey]: CacheValue } +export interface PendingDeviceAuth { + deviceCode: string + interval: number + expiresAt: number + verificationUriComplete: string + scopes: string[] +} + export interface ConfSchema { sessionStore: string currentSessionId?: string devSessionStore?: string currentDevSessionId?: string cache?: Cache + pendingDeviceAuth?: PendingDeviceAuth } let _instance: LocalStorage | undefined @@ -112,6 +121,27 @@ export function removeCurrentSessionId(config: LocalStorage = cliKit config.delete(currentSessionIdKey()) } +/** + * Get pending device auth state (used for non-interactive login flow). + */ +export function getPendingDeviceAuth(config: LocalStorage = cliKitStore()): PendingDeviceAuth | undefined { + return config.get('pendingDeviceAuth') +} + +/** + * Stash pending device auth state for later resumption. + */ +export function setPendingDeviceAuth(auth: PendingDeviceAuth, config: LocalStorage = cliKitStore()): void { + config.set('pendingDeviceAuth', auth) +} + +/** + * Clear pending device auth state. + */ +export function clearPendingDeviceAuth(config: LocalStorage = cliKitStore()): void { + config.delete('pendingDeviceAuth') +} + type CacheValueForKey = NonNullable['value'] /** diff --git a/packages/cli-kit/src/private/node/session.ts b/packages/cli-kit/src/private/node/session.ts index 91cd578c5b7..3f711f718fd 100644 --- a/packages/cli-kit/src/private/node/session.ts +++ b/packages/cli-kit/src/private/node/session.ts @@ -293,8 +293,6 @@ The CLI is currently unable to prompt for reauthentication.`, */ async function executeCompleteFlow(applications: OAuthApplications): Promise { const scopes = getFlattenScopes(applications) - const exchangeScopes = getExchangeScopes(applications) - const store = applications.adminApi?.storeFqdn if (firstPartyDev()) { outputDebug(outputContent`Authenticating as Shopify Employee...`) scopes.push('employee') @@ -314,6 +312,22 @@ async function executeCompleteFlow(applications: OAuthApplications): Promise { + const exchangeScopes = getExchangeScopes(applications) + const store = applications.adminApi?.storeFqdn + // Exchange identity token for application tokens outputDebug(outputContent`CLI token received. Exchanging it for application tokens...`) const result = await exchangeAccessForApplicationTokens(identityToken, exchangeScopes, store) @@ -322,17 +336,13 @@ async function executeCompleteFlow(applications: OAuthApplications): Promise { +export async function requestDeviceAuthorization( + scopes: string[], + {noPrompt = false}: {noPrompt?: boolean} = {}, +): Promise { const fqdn = await identityFqdn() const identityClientId = clientId() const queryParams = {client_id: identityClientId, scope: scopes.join(' ')} @@ -69,32 +73,31 @@ export async function requestDeviceAuthorization(scopes: string[]): Promise { + if (noPrompt) { + outputInfo(outputContent`\nUser verification code: ${jsonResult.user_code}`) outputInfo(outputContent`๐Ÿ‘‰ Open this link to start the auth process: ${linkToken}`) - } - - if (isCloudEnvironment() || !isTTY()) { - cloudMessage() } else { - outputInfo('๐Ÿ‘‰ Press any key to open the login page on your browser') - await keypress() - const opened = await openURL(jsonResult.verification_uri_complete) - if (opened) { - outputInfo(outputContent`Opened link to start the auth process: ${linkToken}`) + outputInfo('\nTo run this command, log in to Shopify.') + outputInfo(outputContent`User verification code: ${jsonResult.user_code}`) + + if (isCI()) { + throw new AbortError( + 'Authorization is required to continue, but the current environment does not support interactive prompts.', + 'To resolve this, specify credentials in your environment, or run the command in an interactive environment such as your local terminal.', + ) + } else if (isCloudEnvironment() || !isTTY()) { + outputInfo(outputContent`๐Ÿ‘‰ Open this link to start the auth process: ${linkToken}`) } else { - cloudMessage() + outputInfo('๐Ÿ‘‰ Press any key to open the login page on your browser') + await keypress() + const opened = await openURL(jsonResult.verification_uri_complete) + if (opened) { + outputInfo(outputContent`Opened link to start the auth process: ${linkToken}`) + } else { + outputInfo(outputContent`๐Ÿ‘‰ Open this link to start the auth process: ${linkToken}`) + } } } diff --git a/packages/cli-kit/src/public/node/session.ts b/packages/cli-kit/src/public/node/session.ts index 9757e55862e..7c391d15eb9 100644 --- a/packages/cli-kit/src/public/node/session.ts +++ b/packages/cli-kit/src/public/node/session.ts @@ -1,9 +1,11 @@ import {shopifyFetch} from './http.js' import {nonRandomUUID} from './crypto.js' import {getCliToken} from './environment.js' +import {identityFqdn} from './context/fqdn.js' import {AbortError, BugError} from './error.js' import {outputContent, outputToken, outputDebug} from './output.js' import * as sessionStore from '../../private/node/session/store.js' +import {getCurrentSessionId, setCurrentSessionId} from '../../private/node/conf-store.js' import { exchangeCustomPartnerToken, exchangeCliTokenForAppManagementAccessToken, @@ -274,6 +276,27 @@ ${outputToken.json(scopes)} return tokens.businessPlatform } +/** + * Returns info about the currently logged-in user, or undefined if not logged in. + * Does not trigger any authentication flow. + * + * @returns The current user's alias, or undefined if not logged in. + */ +export async function getCurrentUserInfo(): Promise<{alias: string} | undefined> { + const currentSessionId = getCurrentSessionId() + if (!currentSessionId) return undefined + + const sessions = await sessionStore.fetch() + if (!sessions) return undefined + + const fqdn = await identityFqdn() + const session = sessions[fqdn]?.[currentSessionId] + if (!session) return undefined + + const alias = session.identity.alias ?? currentSessionId + return {alias} +} + /** * Logout from Shopify. * @@ -283,6 +306,94 @@ export function logout(): Promise { return sessionStore.remove() } +/** + * Start the device authorization flow without polling. + * Stashes the device code for later resumption via `resumeDeviceAuth`. + * + * @returns The verification URL the user must visit to authorize. + */ +export async function startDeviceAuthNoPolling(): Promise<{verificationUriComplete: string}> { + const {requestDeviceAuthorization} = await import('../../private/node/session/device-authorization.js') + const {allDefaultScopes} = await import('../../private/node/session/scopes.js') + const {setPendingDeviceAuth} = await import('../../private/node/conf-store.js') + + const scopes = allDefaultScopes() + const deviceAuth = await requestDeviceAuthorization(scopes, {noPrompt: true}) + + setPendingDeviceAuth({ + deviceCode: deviceAuth.deviceCode, + interval: deviceAuth.interval ?? 5, + expiresAt: Date.now() + deviceAuth.expiresIn * 1000, + verificationUriComplete: deviceAuth.verificationUriComplete ?? deviceAuth.verificationUri, + scopes, + }) + + return {verificationUriComplete: deviceAuth.verificationUriComplete ?? deviceAuth.verificationUri} +} + +export type ResumeDeviceAuthResult = + | {status: 'success'; alias: string} + | {status: 'pending'; verificationUriComplete: string} + | {status: 'expired'; message: string} + | {status: 'denied'; message: string} + | {status: 'no_pending'; message: string} + +/** + * Resume a previously started device authorization flow. + * Exchanges the stashed device code for tokens and stores the session. + * + * @returns The result of the resume attempt. + */ +export async function resumeDeviceAuth(): Promise { + const {exchangeDeviceCodeForAccessToken} = await import('../../private/node/session/exchange.js') + const {getPendingDeviceAuth, clearPendingDeviceAuth} = await import('../../private/node/conf-store.js') + const {completeAuthFlow} = await import('../../private/node/session.js') + + const pending = getPendingDeviceAuth() + if (!pending) { + return {status: 'no_pending', message: 'No pending login flow. Run `shopify auth login --no-polling` first.'} + } + + if (Date.now() > pending.expiresAt) { + clearPendingDeviceAuth() + return {status: 'expired', message: 'The login flow has expired. Run `shopify auth login --no-polling` again.'} + } + + const result = await exchangeDeviceCodeForAccessToken(pending.deviceCode) + + if (result.isErr()) { + const error = result.error + if (error === 'authorization_pending') { + return {status: 'pending', verificationUriComplete: pending.verificationUriComplete} + } + if (error === 'expired_token') { + clearPendingDeviceAuth() + return {status: 'expired', message: 'The login flow has expired. Run `shopify auth login --no-polling` again.'} + } + // access_denied or unknown + clearPendingDeviceAuth() + return {status: 'denied', message: `Authorization failed: ${error}`} + } + + // Successfully got an identity token โ€” complete the flow + const identityToken = result.value + const session = await completeAuthFlow(identityToken, {}) + const fqdn = await identityFqdn() + + // Store the session + const existingSessions = (await sessionStore.fetch()) ?? {} + const newSessionId = session.identity.userId + const updatedSessions = { + ...existingSessions, + [fqdn]: {...existingSessions[fqdn], [newSessionId]: session}, + } + await sessionStore.store(updatedSessions) + setCurrentSessionId(newSessionId) + + clearPendingDeviceAuth() + return {status: 'success', alias: session.identity.alias ?? newSessionId} +} + /** * Ensure that we have a valid Admin session for the given store, with access on behalf of the app. * diff --git a/packages/cli/README.md b/packages/cli/README.md index def3a91294f..18888ef00cf 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -1054,10 +1054,13 @@ Logs you in to your Shopify account. ``` USAGE - $ shopify auth login [--alias ] + $ shopify auth login [--alias ] [--no-polling] [--resume] FLAGS --alias= [env: SHOPIFY_FLAG_AUTH_ALIAS] Alias of the session you want to login to. + --no-polling [env: SHOPIFY_FLAG_AUTH_NO_POLLING] Start the login flow without polling. Prints the auth URL and + exits immediately. + --resume [env: SHOPIFY_FLAG_AUTH_RESUME] Resume a previously started login flow. DESCRIPTION Logs you in to your Shopify account. diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index 329f37fb024..de48e608df9 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -1,55 +1,58 @@ { "commands": { "app:build": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "aliases": [], + "args": {}, "description": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a \"theme app extension\" (https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", - "descriptionWithMarkdown": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a [theme app extension](https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -57,93 +60,174 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, "skip-dependencies-installation": { - "allowNo": false, "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", "hidden": false, "name": "skip-dependencies-installation", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "app:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Build the app, including extensions." + "summary": "Build the app, including extensions.", + "descriptionWithMarkdown": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a [theme app extension](https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", + "customPluginName": "@shopify/app" }, "app:bulk:cancel": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "aliases": [], + "args": {}, "description": "Cancels a running bulk operation by ID.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, "multiple": false, - "name": "config", "type": "option" }, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "allowNo": false, + "type": "boolean" + }, "id": { "description": "The bulk operation ID to cancel (numeric ID or full GID).", "env": "SHOPIFY_FLAG_ID", - "hasDynamicHelp": false, - "multiple": false, "name": "id", "required": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, + "store": { + "char": "s", + "description": "The store domain. Must be an existing dev store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:bulk:cancel", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Cancel a bulk operation.", + "customPluginName": "@shopify/app" + }, + "app:bulk:status": { + "aliases": [], + "args": {}, + "description": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", + "flags": { "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -151,44 +235,46 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, + "id": { + "description": "The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations belonging to this app on this store in the last 7 days.", + "env": "SHOPIFY_FLAG_ID", + "name": "id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, "store": { "char": "s", "description": "The store domain. Must be an existing dev store.", "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:bulk:cancel", + "hiddenAliases": [], + "id": "app:bulk:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Cancel a bulk operation." + "summary": "Check the status of bulk operations.", + "descriptionWithMarkdown": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", + "customPluginName": "@shopify/app" }, - "app:bulk:execute": { + "app:config:validate": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk status`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", - "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk status`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", + "description": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", + "descriptionWithMarkdown": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -220,17 +306,6 @@ "name": "no-color", "type": "boolean" }, - "output-file": { - "dependsOn": [ - "watch" - ], - "description": "The file path where results should be written if --watch is specified. If not specified, results will be written to STDOUT.", - "env": "SHOPIFY_FLAG_OUTPUT_FILE", - "hasDynamicHelp": false, - "multiple": false, - "name": "output-file", - "type": "option" - }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", @@ -240,24 +315,6 @@ "noCacheDefault": true, "type": "option" }, - "query": { - "char": "q", - "description": "The GraphQL query or mutation to run as a bulk operation.", - "env": "SHOPIFY_FLAG_QUERY", - "hasDynamicHelp": false, - "multiple": false, - "name": "query", - "required": false, - "type": "option" - }, - "query-file": { - "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", - "env": "SHOPIFY_FLAG_QUERY_FILE", - "hasDynamicHelp": false, - "multiple": false, - "name": "query-file", - "type": "option" - }, "reset": { "allowNo": false, "description": "Reset all your settings.", @@ -269,38 +326,6 @@ "name": "reset", "type": "boolean" }, - "store": { - "char": "s", - "description": "The store domain. Must be an existing dev store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "variable-file": { - "description": "Path to a file containing GraphQL variables in JSONL format (one JSON object per line). Can't be used with --variables.", - "env": "SHOPIFY_FLAG_VARIABLE_FILE", - "exclusive": [ - "variables" - ], - "hasDynamicHelp": false, - "multiple": false, - "name": "variable-file", - "type": "option" - }, - "variables": { - "char": "v", - "description": "The values for any GraphQL variables in your mutation, in JSON format. Can be specified multiple times.", - "env": "SHOPIFY_FLAG_VARIABLES", - "exclusive": [ - "variable-file" - ], - "hasDynamicHelp": false, - "multiple": true, - "name": "variables", - "type": "option" - }, "verbose": { "allowNo": false, "description": "Increase the verbosity of the output.", @@ -308,91 +333,71 @@ "hidden": false, "name": "verbose", "type": "boolean" - }, - "version": { - "description": "The API version to use for the bulk operation. If not specified, uses the latest stable version.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, - "multiple": false, - "name": "version", - "type": "option" - }, - "watch": { - "allowNo": false, - "description": "Wait for bulk operation results before exiting. Defaults to false.", - "env": "SHOPIFY_FLAG_WATCH", - "name": "watch", - "type": "boolean" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:bulk:execute", + "id": "app:config:validate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute bulk operations." + "summary": "Validate your app configuration and extensions." }, - "app:bulk:status": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", - "descriptionWithMarkdown": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", + "app:deploy": { + "aliases": [], + "args": {}, + "description": "\"Builds the app\" (https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your \"web app\" (https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to \"deploy your web app\" (https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "id": { - "description": "The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations belonging to this app on this store in the last 7 days.", - "env": "SHOPIFY_FLAG_ID", "hasDynamicHelp": false, "multiple": false, - "name": "id", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -400,86 +405,145 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "store": { - "char": "s", - "description": "The store domain. Must be an existing dev store.", - "env": "SHOPIFY_FLAG_STORE", + "force": { + "char": "f", + "description": "[Deprecated] Deploy without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": false, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "allow-updates": { + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", + "allowNo": false, + "type": "boolean" + }, + "allow-deletes": { + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", + "allowNo": false, + "type": "boolean" + }, + "no-release": { + "description": "Creates a version but doesn't release it - it's not made available to merchants. With this flag, a user confirmation is not required.", + "env": "SHOPIFY_FLAG_NO_RELEASE", + "exclusive": [ + "allow-updates", + "allow-deletes" + ], + "hidden": false, + "name": "no-release", + "allowNo": false, + "type": "boolean" + }, + "no-build": { + "description": "Use with caution: Skips building any elements of the app that require building. You should ensure your app has been prepared in advance, such as by running `shopify app build` or by caching build artifacts.", + "env": "SHOPIFY_FLAG_NO_BUILD", + "name": "no-build", + "allowNo": false, + "type": "boolean" + }, + "message": { + "description": "Optional message that will be associated with this version. This is for internal use only and won't be available externally.", + "env": "SHOPIFY_FLAG_MESSAGE", + "hidden": false, + "name": "message", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "version": { + "description": "Optional version tag that will be associated with this app version. If not provided, an auto-generated identifier will be generated for this app version.", + "env": "SHOPIFY_FLAG_VERSION", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "source-control-url": { + "description": "URL associated with the new app version.", + "env": "SHOPIFY_FLAG_SOURCE_CONTROL_URL", + "hidden": false, + "name": "source-control-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:bulk:status", + "hiddenAliases": [], + "id": "app:deploy", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Check the status of bulk operations." + "summary": "Deploy your Shopify app.", + "descriptionWithMarkdown": "[Builds the app](https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your [web app](https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to [deploy your web app](https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", + "customPluginName": "@shopify/app" }, - "app:config:link": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", - "descriptionWithMarkdown": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", + "app:dev": { + "aliases": [], + "args": {}, + "description": "Builds and previews your app on a dev store, and watches for changes. \"Read more about testing apps locally\" (https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -487,77 +551,185 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "skip-dependencies-installation": { + "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", + "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", + "name": "skip-dependencies-installation", + "allowNo": false, + "type": "boolean" + }, + "no-update": { + "description": "Uses the app URL from the toml file instead an autogenerated URL for dev.", + "env": "SHOPIFY_FLAG_NO_UPDATE", + "name": "no-update", + "allowNo": false, + "type": "boolean" + }, + "subscription-product-url": { + "description": "Resource URL for subscription UI extension. Format: \"/products/{productId}\"", + "env": "SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL", + "name": "subscription-product-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "checkout-cart-url": { + "description": "Resource URL for checkout UI extension. Format: \"/cart/{productVariantID}:{productQuantity}\"", + "env": "SHOPIFY_FLAG_CHECKOUT_CART_URL", + "name": "checkout-cart-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "tunnel-url": { + "description": "Use a custom tunnel, it must be running before executing dev. Format: \"https://my-tunnel-url:port\".", + "env": "SHOPIFY_FLAG_TUNNEL_URL", + "exclusive": [ + "tunnel" + ], + "name": "tunnel-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "use-localhost": { + "description": "Service entry point will listen to localhost. A tunnel won't be used. Will work for testing many app features, but not those that directly invoke your app (E.g: Webhooks)", + "env": "SHOPIFY_FLAG_USE_LOCALHOST", + "exclusive": [ + "tunnel-url" + ], + "name": "use-localhost", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" + }, + "localhost-port": { + "description": "Port to use for localhost.", + "env": "SHOPIFY_FLAG_LOCALHOST_PORT", + "name": "localhost-port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the theme app extension host theme.", + "env": "SHOPIFY_FLAG_THEME", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "theme-app-extension-port": { + "description": "Local port of the theme app extension development server.", + "env": "SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT", + "name": "theme-app-extension-port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "name": "notify", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "graphiql-port": { + "description": "Local port of the GraphiQL development server.", + "env": "SHOPIFY_FLAG_GRAPHIQL_PORT", + "hidden": true, + "name": "graphiql-port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "graphiql-key": { + "description": "Key used to authenticate GraphiQL requests. By default, a key is automatically derived from the app secret. Use this flag to override with a custom key.", + "env": "SHOPIFY_FLAG_GRAPHIQL_KEY", + "hidden": true, + "name": "graphiql-key", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:link", + "hiddenAliases": [], + "id": "app:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Fetch your app configuration from the Developer Dashboard." + "summary": "Run the app.", + "descriptionWithMarkdown": "Builds and previews your app on a dev store, and watches for changes. [Read more about testing apps locally](https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", + "customPluginName": "@shopify/app" }, - "app:config:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", - "descriptionWithMarkdown": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", + "app:dev:clean": { + "aliases": [], + "args": {}, + "description": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -565,150 +737,84 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "store": { + "char": "s", + "description": "Store URL. Must be an existing development store.", + "env": "SHOPIFY_FLAG_STORE", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:pull", + "hiddenAliases": [], + "id": "app:dev:clean", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Refresh an already-linked app configuration without prompts." + "summary": "Cleans up the dev preview from the selected store.", + "descriptionWithMarkdown": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", + "customPluginName": "@shopify/app" }, - "app:config:use": { - "aliases": [ - ], - "args": { - "config": { - "description": "The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'.", - "name": "config" - } - }, - "customPluginName": "@shopify/app", - "description": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", - "descriptionWithMarkdown": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", + "app:logs": { + "aliases": [], + "args": {}, + "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hidden": false, - "name": "reset", - "type": "boolean" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:use", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Activate an app configuration.", - "usage": "app config use [config] [flags]" - }, - "app:config:validate": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", - "descriptionWithMarkdown": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", - "flags": { + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, "client-id": { "description": "The Client ID of your app.", "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -716,130 +822,187 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", + "name": "json", + "allowNo": false, "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "source": { + "description": "Filters output to the specified log source.", + "env": "SHOPIFY_FLAG_SOURCE", + "name": "source", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "status": { + "description": "Filters output to the specified status (success or failure).", + "env": "SHOPIFY_FLAG_STATUS", + "name": "status", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "success", + "failure" + ], + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:validate", + "hiddenAliases": [], + "id": "app:logs", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Validate your app configuration and extensions." + "summary": "Stream detailed logs for your Shopify app.", + "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "customPluginName": "@shopify/app" }, - "app:deploy": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\"Builds the app\" (https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your \"web app\" (https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to \"deploy your web app\" (https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", - "descriptionWithMarkdown": "[Builds the app](https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your [web app](https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to [deploy your web app](https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", + "app:logs:sources": { + "aliases": [], + "args": {}, + "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", "flags": { - "allow-deletes": { - "allowNo": false, - "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "allow-deletes", + "name": "no-color", + "allowNo": false, "type": "boolean" }, - "allow-updates": { - "allowNo": false, - "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", - "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "allow-updates", + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "[Deprecated] Deploy without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", - "env": "SHOPIFY_FLAG_FORCE", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "force", - "type": "boolean" - }, - "message": { - "description": "Optional message that will be associated with this version. This is for internal use only and won't be available externally.", - "env": "SHOPIFY_FLAG_MESSAGE", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "message", "type": "option" }, - "no-build": { + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "allowNo": false, - "description": "Use with caution: Skips building any elements of the app that require building. You should ensure your app has been prepared in advance, such as by running `shopify app build` or by caching build artifacts.", - "env": "SHOPIFY_FLAG_NO_BUILD", - "name": "no-build", "type": "boolean" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:logs:sources", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Print out a list of sources that may be used with the logs command.", + "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "customPluginName": "@shopify/app" + }, + "app:import-custom-data-definitions": { + "aliases": [], + "args": {}, + "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "flags": { "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "no-release": { - "allowNo": false, - "description": "Creates a version but doesn't release it - it's not made available to merchants. With this flag, a user confirmation is not required.", - "env": "SHOPIFY_FLAG_NO_RELEASE", - "exclusive": [ - "allow-updates", - "allow-deletes" - ], + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "no-release", + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -847,144 +1010,163 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "source-control-url": { - "description": "URL associated with the new app version.", - "env": "SHOPIFY_FLAG_SOURCE_CONTROL_URL", + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "source-control-url", "type": "option" }, - "verbose": { + "include-existing": { + "description": "Include existing declared definitions in the output.", + "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", + "name": "include-existing", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - }, - "version": { - "description": "Optional version tag that will be associated with this app version. If not provided, an auto-generated identifier will be generated for this app version.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "version", - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:deploy", + "hiddenAliases": [], + "id": "app:import-custom-data-definitions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Deploy your Shopify app." + "summary": "Import metafield and metaobject definitions.", + "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "customPluginName": "@shopify/app" }, - "app:dev": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Builds and previews your app on a dev store, and watches for changes. \"Read more about testing apps locally\" (https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", - "descriptionWithMarkdown": "Builds and previews your app on a dev store, and watches for changes. [Read more about testing apps locally](https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", + "app:import-extensions": { + "aliases": [], + "args": {}, + "description": "Import dashboard-managed extensions into your app.", "flags": { - "checkout-cart-url": { - "description": "Resource URL for checkout UI extension. Format: \"/cart/{productVariantID}:{productQuantity}\"", - "env": "SHOPIFY_FLAG_CHECKOUT_CART_URL", - "hasDynamicHelp": false, - "multiple": false, - "name": "checkout-cart-url", - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "graphiql-key": { - "description": "Key used to authenticate GraphiQL requests. By default, a key is automatically derived from the app secret. Use this flag to override with a custom key.", - "env": "SHOPIFY_FLAG_GRAPHIQL_KEY", - "hasDynamicHelp": false, - "hidden": true, - "multiple": false, - "name": "graphiql-key", - "type": "option" - }, - "graphiql-port": { - "description": "Local port of the GraphiQL development server.", - "env": "SHOPIFY_FLAG_GRAPHIQL_PORT", "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "graphiql-port", "type": "option" }, - "localhost-port": { - "description": "Port to use for localhost.", - "env": "SHOPIFY_FLAG_LOCALHOST_PORT", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "localhost-port", "type": "option" }, - "no-color": { + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:import-extensions", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "customPluginName": "@shopify/app" + }, + "app:info": { + "aliases": [], + "args": {}, + "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "flags": { + "no-color": { "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "no-update": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Uses the app URL from the toml file instead an autogenerated URL for dev.", - "env": "SHOPIFY_FLAG_NO_UPDATE", - "name": "no-update", "type": "boolean" }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "notify", "type": "option" }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -992,236 +1174,205 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "skip-dependencies-installation": { + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "allowNo": false, - "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", - "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", - "name": "skip-dependencies-installation", "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" + "web-env": { + "description": "Outputs environment variables necessary for running and deploying web/.", + "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", + "hidden": false, + "name": "web-env", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:info", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Print basic information about your app and extensions.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "customPluginName": "@shopify/app" + }, + "app:init": { + "aliases": [], + "args": {}, + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "subscription-product-url": { - "description": "Resource URL for subscription UI extension. Format: \"/products/{productId}\"", - "env": "SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "name": { + "char": "n", + "description": "The name for the new app. When provided, skips the app selection prompt and creates a new app with this name.", + "env": "SHOPIFY_FLAG_NAME", + "hidden": false, + "name": "name", "hasDynamicHelp": false, "multiple": false, - "name": "subscription-product-url", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the theme app extension host theme.", - "env": "SHOPIFY_FLAG_THEME", + "path": { + "char": "p", + "env": "SHOPIFY_FLAG_PATH", + "hidden": false, + "name": "path", + "default": "/Users/nickwesselman/src/shopify-cli/packages/cli", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "theme-app-extension-port": { - "description": "Local port of the theme app extension development server.", - "env": "SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT", + "template": { + "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", + "env": "SHOPIFY_FLAG_TEMPLATE", + "name": "template", "hasDynamicHelp": false, "multiple": false, - "name": "theme-app-extension-port", "type": "option" }, - "tunnel-url": { - "description": "Use a custom tunnel, it must be running before executing dev. Format: \"https://my-tunnel-url:port\".", - "env": "SHOPIFY_FLAG_TUNNEL_URL", - "exclusive": [ - "tunnel" - ], + "flavor": { + "description": "Which flavor of the given template to use.", + "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", + "name": "flavor", "hasDynamicHelp": false, "multiple": false, - "name": "tunnel-url", "type": "option" }, - "use-localhost": { - "allowNo": false, - "description": "Service entry point will listen to localhost. A tunnel won't be used. Will work for testing many app features, but not those that directly invoke your app (E.g: Webhooks)", - "env": "SHOPIFY_FLAG_USE_LOCALHOST", - "exclusive": [ - "tunnel-url" + "package-manager": { + "char": "d", + "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", + "hidden": false, + "name": "package-manager", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "npm", + "yarn", + "pnpm", + "bun" ], - "name": "use-localhost", - "type": "boolean" + "type": "option" }, - "verbose": { + "local": { + "char": "l", + "env": "SHOPIFY_FLAG_LOCAL", + "hidden": true, + "name": "local", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:dev", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Run the app." - }, - "app:dev:clean": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", - "descriptionWithMarkdown": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", - "flags": { + }, "client-id": { - "description": "The Client ID of your app.", + "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", + "organization-id": { + "description": "The organization ID. Your organization ID can be found in your Dev Dashboard URL: https://dev.shopify.com/dashboard/", + "env": "SHOPIFY_FLAG_ORGANIZATION_ID", "exclusive": [ - "config" + "client-id" ], "hidden": false, - "name": "reset", - "type": "boolean" - }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development store.", - "env": "SHOPIFY_FLAG_STORE", + "name": "organization-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "store", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:dev:clean", + "hiddenAliases": [], + "id": "app:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Cleans up the dev preview from the selected store." + "summary": "Create a new app project", + "customPluginName": "@shopify/app" }, - "app:env:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", - "descriptionWithMarkdown": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", + "app:validate": { + "aliases": [], + "args": {}, + "description": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "env-file": { - "description": "Specify an environment file to update if the update flag is set", - "env": "SHOPIFY_FLAG_ENV_FILE", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "env-file", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1229,77 +1380,74 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:env:pull", + "hiddenAliases": [], + "id": "app:validate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Pull app and extensions environment variables." + "summary": "Validate your app configuration and extensions.", + "descriptionWithMarkdown": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", + "customPluginName": "@shopify/app" }, - "app:env:show": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Displays environment variables that can be used to deploy apps and app extensions.", - "descriptionWithMarkdown": "Displays environment variables that can be used to deploy apps and app extensions.", + "app:release": { + "aliases": [], + "args": {}, + "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1307,222 +1455,180 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "force": { + "char": "f", + "description": "[Deprecated] Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", + "env": "SHOPIFY_FLAG_FORCE", "hidden": false, - "name": "verbose", + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "allow-updates": { + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", + "allowNo": false, "type": "boolean" + }, + "allow-deletes": { + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", + "allowNo": false, + "type": "boolean" + }, + "version": { + "description": "The name of the app version to release.", + "env": "SHOPIFY_FLAG_VERSION", + "hidden": false, + "name": "version", + "required": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:env:show", + "hiddenAliases": [], + "id": "app:release", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Display app and extensions environment variables." + "summary": "Release an app version.", + "usage": "app release --version ", + "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "customPluginName": "@shopify/app" }, - "app:execute": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", - "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", + "app:config:link": { + "aliases": [], + "args": {}, + "description": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "output-file": { - "description": "The file name where results should be written, instead of STDOUT.", - "env": "SHOPIFY_FLAG_OUTPUT_FILE", - "hasDynamicHelp": false, - "multiple": false, - "name": "output-file", - "type": "option" + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, - "type": "option" - }, - "query": { - "char": "q", - "description": "The GraphQL query or mutation, as a string.", - "env": "SHOPIFY_FLAG_QUERY", "hasDynamicHelp": false, "multiple": false, - "name": "query", - "required": false, "type": "option" }, - "query-file": { - "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", - "env": "SHOPIFY_FLAG_QUERY_FILE", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "query-file", "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], "hidden": false, - "name": "reset", - "type": "boolean" - }, - "store": { - "char": "s", - "description": "The myshopify.com domain of the store to execute against. The app must be installed on the store. If not specified, you will be prompted to select a store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "variable-file": { - "description": "Path to a file containing GraphQL variables in JSON format. Can't be used with --variables.", - "env": "SHOPIFY_FLAG_VARIABLE_FILE", - "exclusive": [ - "variables" - ], + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "variable-file", "type": "option" }, - "variables": { - "char": "v", - "description": "The values for any GraphQL variables in your query or mutation, in JSON format.", - "env": "SHOPIFY_FLAG_VARIABLES", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", "exclusive": [ - "variable-file" + "config" ], - "hasDynamicHelp": false, - "multiple": false, - "name": "variables", - "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "verbose", + "name": "reset", + "allowNo": false, "type": "boolean" - }, - "version": { - "description": "The API version to use for the query or mutation. Defaults to the latest stable version.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, - "multiple": false, - "name": "version", - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:execute", + "hiddenAliases": [], + "id": "app:config:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute GraphQL queries and mutations." + "summary": "Fetch your app configuration from the Developer Dashboard.", + "descriptionWithMarkdown": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", + "customPluginName": "@shopify/app" }, - "app:function:build": { - "aliases": [ - ], + "app:config:use": { + "aliases": [], "args": { + "config": { + "description": "The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'.", + "name": "config" + } }, - "customPluginName": "@shopify/app", - "description": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", - "descriptionWithMarkdown": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", + "description": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { - "description": "The path to your function directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1530,87 +1636,75 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:build", + "hiddenAliases": [], + "id": "app:config:use", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Compile a function to wasm." + "summary": "Activate an app configuration.", + "usage": "app config use [config] [flags]", + "descriptionWithMarkdown": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", + "customPluginName": "@shopify/app" }, - "app:function:info": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", - "descriptionWithMarkdown": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", + "app:config:pull": { + "aliases": [], + "args": {}, + "description": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1618,96 +1712,74 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:info", + "hiddenAliases": [], + "id": "app:config:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print basic information about your function." + "summary": "Refresh an already-linked app configuration without prompts.", + "descriptionWithMarkdown": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", + "customPluginName": "@shopify/app" }, - "app:function:replay": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", - "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "app:env:pull": { + "aliases": [], + "args": {}, + "description": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "log": { - "char": "l", - "description": "Specifies a log identifier to replay instead of selecting from a list. The identifier is provided in the output of `shopify app dev` and is the suffix of the log file name.", - "env": "SHOPIFY_FLAG_LOG", "hasDynamicHelp": false, "multiple": false, - "name": "log", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1715,194 +1787,158 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" }, - "watch": { - "allowNo": true, - "char": "w", - "description": "Re-run the function when the source code changes.", - "env": "SHOPIFY_FLAG_WATCH", + "env-file": { + "description": "Specify an environment file to update if the update flag is set", + "env": "SHOPIFY_FLAG_ENV_FILE", "hidden": false, - "name": "watch", - "type": "boolean" + "name": "env-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:replay", + "hiddenAliases": [], + "id": "app:env:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Replays a function run from an app log." + "summary": "Pull app and extensions environment variables.", + "descriptionWithMarkdown": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", + "customPluginName": "@shopify/app" }, - "app:function:run": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", - "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "app:env:show": { + "aliases": [], + "args": {}, + "description": "Displays environment variables that can be used to deploy apps and app extensions.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "export": { - "char": "e", - "description": "Name of the WebAssembly export to invoke.", - "env": "SHOPIFY_FLAG_EXPORT", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "export", "type": "option" }, - "input": { - "char": "i", - "description": "The input JSON to pass to the function. If omitted, standard input is used.", - "env": "SHOPIFY_FLAG_INPUT", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "input", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { + "name": "reset", "allowNo": false, - "description": "Disable color output.", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:env:show", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Display app and extensions environment variables.", + "descriptionWithMarkdown": "Displays environment variables that can be used to deploy apps and app extensions.", + "customPluginName": "@shopify/app" + }, + "app:execute": { + "aliases": [], + "args": {}, + "description": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", + "flags": { + "no-color": { + "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "reset": { "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", "type": "boolean" }, "verbose": { - "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", + "allowNo": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:run", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Run a function locally for testing." - }, - "app:function:schema": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Generates the latest \"GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "descriptionWithMarkdown": "Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1910,86 +1946,140 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "stdout": { - "allowNo": false, - "description": "Output the schema to stdout instead of writing to a file.", - "env": "SHOPIFY_FLAG_STDOUT", - "name": "stdout", + "query": { + "char": "q", + "description": "The GraphQL query or mutation, as a string.", + "env": "SHOPIFY_FLAG_QUERY", + "name": "query", "required": false, - "type": "boolean" + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" + "query-file": { + "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", + "env": "SHOPIFY_FLAG_QUERY_FILE", + "name": "query-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "variables": { + "char": "v", + "description": "The values for any GraphQL variables in your query or mutation, in JSON format.", + "env": "SHOPIFY_FLAG_VARIABLES", + "exclusive": [ + "variable-file" + ], + "name": "variables", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "variable-file": { + "description": "Path to a file containing GraphQL variables in JSON format. Can't be used with --variables.", + "env": "SHOPIFY_FLAG_VARIABLE_FILE", + "exclusive": [ + "variables" + ], + "name": "variable-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "The myshopify.com domain of the store to execute against. The app must be installed on the store. If not specified, you will be prompted to select a store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "version": { + "description": "The API version to use for the query or mutation. Defaults to the latest stable version.", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "output-file": { + "description": "The file name where results should be written, instead of STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "name": "output-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:schema", + "hiddenAliases": [], + "id": "app:execute", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Fetch the latest GraphQL schema for a function." + "summary": "Execute GraphQL queries and mutations.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", + "customPluginName": "@shopify/app" }, - "app:function:typegen": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Creates GraphQL types based on your \"input query\" (https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", - "descriptionWithMarkdown": "Creates GraphQL types based on your [input query](https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", + "app:bulk:execute": { + "aliases": [], + "args": {}, + "description": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk status`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1997,213 +2087,151 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:typegen", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Generate GraphQL types for a function." - }, - "app:generate:extension": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Generates a new \"app extension\" (https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to \"Supported extensions\" (https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to \"App structure\" (https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.\n ", - "descriptionWithMarkdown": "Generates a new [app extension](https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to [Supported extensions](https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to [App structure](https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.\n ", - "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" }, - "clone-url": { - "char": "u", - "description": "The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples", - "env": "SHOPIFY_FLAG_CLONE_URL", + "query": { + "char": "q", + "description": "The GraphQL query or mutation to run as a bulk operation.", + "env": "SHOPIFY_FLAG_QUERY", + "name": "query", + "required": false, "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "clone-url", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "query-file": { + "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", + "env": "SHOPIFY_FLAG_QUERY_FILE", + "name": "query-file", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "flavor": { - "description": "Choose a starting template for your extension, where applicable", - "env": "SHOPIFY_FLAG_FLAVOR", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "flavor", - "options": [ - "vanilla-js", - "react", - "typescript", - "typescript-react", - "wasm", - "rust" + "variables": { + "char": "v", + "description": "The values for any GraphQL variables in your mutation, in JSON format. Can be specified multiple times.", + "env": "SHOPIFY_FLAG_VARIABLES", + "exclusive": [ + "variable-file" ], + "name": "variables", + "hasDynamicHelp": false, + "multiple": true, "type": "option" }, - "name": { - "char": "n", - "description": "name of your Extension", - "env": "SHOPIFY_FLAG_NAME", + "variable-file": { + "description": "Path to a file containing GraphQL variables in JSONL format (one JSON object per line). Can't be used with --variables.", + "env": "SHOPIFY_FLAG_VARIABLE_FILE", + "exclusive": [ + "variables" + ], + "name": "variable-file", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "store": { + "char": "s", + "description": "The store domain. Must be an existing dev store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "reset": { + "watch": { + "description": "Wait for bulk operation results before exiting. Defaults to false.", + "env": "SHOPIFY_FLAG_WATCH", + "name": "watch", "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", "type": "boolean" }, - "template": { - "char": "t", - "description": "Extension template", - "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", + "output-file": { + "dependsOn": [ + "watch" + ], + "description": "The file path where results should be written if --watch is specified. If not specified, results will be written to STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "name": "output-file", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "template", "type": "option" }, - "type": { - "char": "t", - "description": "Deprecated. Please use --template", - "env": "SHOPIFY_FLAG_EXTENSION_TYPE", + "version": { + "description": "The API version to use for the bulk operation. If not specified, uses the latest stable version.", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "type", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:generate:extension", + "hiddenAliases": [], + "id": "app:bulk:execute", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Generate a new app Extension." + "summary": "Execute bulk operations.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk status`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", + "customPluginName": "@shopify/app" }, "app:generate:schema": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "aliases": [], + "args": {}, "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2211,178 +2239,159 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, "stdout": { - "allowNo": false, "description": "Output the schema to stdout instead of writing to a file.", "env": "SHOPIFY_FLAG_STDOUT", "name": "stdout", "required": false, - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, "hidden": true, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "app:generate:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Fetch the latest GraphQL schema for a function." + "summary": "Fetch the latest GraphQL schema for a function.", + "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "customPluginName": "@shopify/app" }, - "app:import-custom-data-definitions": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", - "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "app:function:build": { + "aliases": [], + "args": {}, + "description": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, - "include-existing": { - "allowNo": false, - "description": "Include existing declared definitions in the output.", - "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", - "name": "include-existing", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "no-color", + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { - "description": "The path to your app directory.", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, + "hidden": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], "hidden": false, - "name": "reset", - "type": "boolean" - }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "name": "verbose", + "name": "reset", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:import-custom-data-definitions", + "hiddenAliases": [], + "id": "app:function:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Import metafield and metaobject definitions." + "summary": "Compile a function to wasm.", + "descriptionWithMarkdown": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", + "customPluginName": "@shopify/app" }, - "app:import-extensions": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Import dashboard-managed extensions into your app.", + "app:function:replay": { + "aliases": [], + "args": {}, + "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2390,85 +2399,102 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "type": "boolean" + }, + "log": { + "char": "l", + "description": "Specifies a log identifier to replay instead of selecting from a list. The identifier is provided in the output of `shopify app dev` and is the suffix of the log file name.", + "env": "SHOPIFY_FLAG_LOG", + "name": "log", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "watch": { + "char": "w", + "description": "Re-run the function when the source code changes.", + "env": "SHOPIFY_FLAG_WATCH", "hidden": false, - "name": "verbose", + "name": "watch", + "allowNo": true, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:import-extensions", + "hiddenAliases": [], + "id": "app:function:replay", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Replays a function run from an app log.", + "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "customPluginName": "@shopify/app" }, - "app:info": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", - "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "app:function:run": { + "aliases": [], + "args": {}, + "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2476,211 +2502,188 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", + "name": "json", + "allowNo": false, "type": "boolean" }, - "web-env": { - "allowNo": false, - "description": "Outputs environment variables necessary for running and deploying web/.", - "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", + "input": { + "char": "i", + "description": "The input JSON to pass to the function. If omitted, standard input is used.", + "env": "SHOPIFY_FLAG_INPUT", + "name": "input", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "export": { + "char": "e", + "description": "Name of the WebAssembly export to invoke.", + "env": "SHOPIFY_FLAG_EXPORT", "hidden": false, - "name": "web-env", - "type": "boolean" + "name": "export", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:info", + "hiddenAliases": [], + "id": "app:function:run", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print basic information about your app and extensions." + "summary": "Run a function locally for testing.", + "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "customPluginName": "@shopify/app" }, - "app:init": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "app:function:info": { + "aliases": [], + "args": {}, + "description": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", "flags": { - "client-id": { - "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "flavor": { - "description": "Which flavor of the given template to use.", - "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", - "hasDynamicHelp": false, - "multiple": false, - "name": "flavor", - "type": "option" - }, - "local": { - "allowNo": false, - "char": "l", - "env": "SHOPIFY_FLAG_LOCAL", - "hidden": true, - "name": "local", - "type": "boolean" - }, - "name": { - "char": "n", - "description": "The name for the new app. When provided, skips the app selection prompt and creates a new app with this name.", - "env": "SHOPIFY_FLAG_NAME", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "name", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "organization-id": { - "description": "The organization ID. Your organization ID can be found in your Dev Dashboard URL: https://dev.shopify.com/dashboard/", - "env": "SHOPIFY_FLAG_ORGANIZATION_ID", - "exclusive": [ - "client-id" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "organization-id", - "type": "option" - }, - "package-manager": { - "char": "d", - "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", - "hasDynamicHelp": false, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "multiple": false, - "name": "package-manager", - "options": [ - "npm", - "yarn", - "pnpm", - "bun" - ], - "type": "option" + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { - "char": "p", - "default": ".", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "template": { - "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", - "env": "SHOPIFY_FLAG_TEMPLATE", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "template", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:init", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Create a new app project" - }, - "app:logs": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", - "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", - "flags": { "client-id": { "description": "The Client ID of your app.", "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "json": { + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "allowNo": false, + "type": "boolean" + }, + "json": { "char": "j", "description": "Output the result as JSON.", "env": "SHOPIFY_FLAG_JSON", "hidden": false, "name": "json", + "allowNo": false, "type": "boolean" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:function:info", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Print basic information about your function.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", + "customPluginName": "@shopify/app" + }, + "app:function:schema": { + "aliases": [], + "args": {}, + "description": "Generates the latest \"GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "flags": { "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { - "description": "The path to your app directory.", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, + "hidden": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2688,106 +2691,83 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "source": { - "description": "Filters output to the specified log source.", - "env": "SHOPIFY_FLAG_SOURCE", - "hasDynamicHelp": false, - "multiple": true, - "name": "source", - "type": "option" - }, - "status": { - "description": "Filters output to the specified status (success or failure).", - "env": "SHOPIFY_FLAG_STATUS", - "hasDynamicHelp": false, - "multiple": false, - "name": "status", - "options": [ - "success", - "failure" - ], - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "store", - "type": "option" - }, - "verbose": { + "stdout": { + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:logs", + "hiddenAliases": [], + "id": "app:function:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Stream detailed logs for your Shopify app." + "summary": "Fetch the latest GraphQL schema for a function.", + "descriptionWithMarkdown": "Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "customPluginName": "@shopify/app" }, - "app:logs:sources": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", - "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "app:function:typegen": { + "aliases": [], + "args": {}, + "description": "Creates GraphQL types based on your \"input query\" (https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2795,102 +2775,74 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:logs:sources", + "hiddenAliases": [], + "id": "app:function:typegen", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print out a list of sources that may be used with the logs command." + "summary": "Generate GraphQL types for a function.", + "descriptionWithMarkdown": "Creates GraphQL types based on your [input query](https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", + "customPluginName": "@shopify/app" }, - "app:release": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", - "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "app:generate:extension": { + "aliases": [], + "args": {}, + "description": "Generates a new \"app extension\" (https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to \"Supported extensions\" (https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to \"App structure\" (https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.\n ", "flags": { - "allow-deletes": { - "allowNo": false, - "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "allow-deletes", + "name": "no-color", + "allowNo": false, "type": "boolean" }, - "allow-updates": { - "allowNo": false, - "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", - "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "allow-updates", + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "[Deprecated] Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": false, - "name": "force", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2898,46 +2850,84 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "type": { + "char": "t", + "description": "Deprecated. Please use --template", + "env": "SHOPIFY_FLAG_EXTENSION_TYPE", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "type", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "version": { - "description": "The name of the app version to release.", - "env": "SHOPIFY_FLAG_VERSION", + "template": { + "char": "t", + "description": "Extension template", + "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", + "hidden": false, + "name": "template", "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "name": { + "char": "n", + "description": "name of your Extension", + "env": "SHOPIFY_FLAG_NAME", "hidden": false, + "name": "name", + "hasDynamicHelp": false, "multiple": false, - "name": "version", - "required": true, + "type": "option" + }, + "clone-url": { + "char": "u", + "description": "The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples", + "env": "SHOPIFY_FLAG_CLONE_URL", + "hidden": true, + "name": "clone-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "flavor": { + "description": "Choose a starting template for your extension, where applicable", + "env": "SHOPIFY_FLAG_FLAVOR", + "hidden": false, + "name": "flavor", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "vanilla-js", + "react", + "typescript", + "typescript-react", + "wasm", + "rust" + ], "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:release", + "hiddenAliases": [], + "id": "app:generate:extension", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Release an app version.", - "usage": "app release --version " + "summary": "Generate a new app Extension." }, - "app:versions:list": { + "app:generate:schema": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", - "descriptionWithMarkdown": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", + "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -2961,27 +2951,19 @@ "name": "config", "type": "option" }, - "json": { + "no-color": { "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", "type": "boolean" }, "path": { - "description": "The path to your app directory.", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, "name": "path", "noCacheDefault": true, @@ -2998,6 +2980,14 @@ "name": "reset", "type": "boolean" }, + "stdout": { + "allowNo": false, + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, + "type": "boolean" + }, "verbose": { "allowNo": false, "description": "Increase the verbosity of the output.", @@ -3008,44 +2998,24 @@ } }, "hasDynamicHelp": false, + "hidden": true, "hiddenAliases": [ ], - "id": "app:versions:list", + "id": "app:generate:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "List deployed versions of your app." + "summary": "Fetch the latest GraphQL schema for a function." }, - "app:webhook:trigger": { + "app:import-custom-data-definitions": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", "flags": { - "address": { - "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", - "env": "SHOPIFY_FLAG_ADDRESS", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "address", - "required": false, - "type": "option" - }, - "api-version": { - "description": "The API Version of the webhook topic.", - "env": "SHOPIFY_FLAG_API_VERSION", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "api-version", - "required": false, - "type": "option" - }, "client-id": { "description": "The Client ID of your app.", "env": "SHOPIFY_FLAG_CLIENT_ID", @@ -3058,16 +3028,6 @@ "name": "client-id", "type": "option" }, - "client-secret": { - "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", - "env": "SHOPIFY_FLAG_CLIENT_SECRET", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-secret", - "required": false, - "type": "option" - }, "config": { "char": "c", "description": "The name of the app configuration.", @@ -3078,28 +3038,19 @@ "name": "config", "type": "option" }, - "delivery-method": { - "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", - "env": "SHOPIFY_FLAG_DELIVERY_METHOD", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "delivery-method", - "options": [ - "http", - "google-pub-sub", - "event-bridge" - ], - "required": false, - "type": "option" + "include-existing": { + "allowNo": false, + "description": "Include existing declared definitions in the output.", + "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", + "name": "include-existing", + "type": "boolean" }, - "help": { + "no-color": { "allowNo": false, - "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", - "env": "SHOPIFY_FLAG_HELP", + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "help", - "required": false, + "name": "no-color", "type": "boolean" }, "path": { @@ -3122,288 +3073,206 @@ "name": "reset", "type": "boolean" }, - "shared-secret": { - "description": "Deprecated. Please use client-secret.", - "env": "SHOPIFY_FLAG_SHARED_SECRET", + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "shared-secret", - "required": false, + "name": "store", "type": "option" }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", - "hasDynamicHelp": false, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "multiple": false, - "name": "topic", - "required": false, - "type": "option" + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:webhook:trigger", + "id": "app:import-custom-data-definitions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Trigger delivery of a sample webhook topic payload to a designated address." + "summary": "Import metafield and metaobject definitions." }, - "auth:login": { + "app:import-extensions": { "aliases": [ ], "args": { }, - "description": "Logs you in to your Shopify account.", - "enableJsonFlag": false, + "customPluginName": "@shopify/app", + "description": "Import dashboard-managed extensions into your app.", "flags": { - "alias": { - "description": "Alias of the session you want to login to.", - "env": "SHOPIFY_FLAG_AUTH_ALIAS", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, - "name": "alias", + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" + }, + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "auth:login", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "auth:logout": { - "aliases": [ - ], - "args": { - }, - "description": "Logs you out of the Shopify account or Partner account and store.", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "auth:logout", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "cache:clear": { - "aliases": [ - ], - "args": { - }, - "description": "Clear the CLI cache, used to store some API responses and handle notifications status", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "cache:clear", + "id": "app:import-extensions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true }, - "commands": { + "app:info": { "aliases": [ ], "args": { }, - "customPluginName": "@oclif/plugin-commands", - "description": "List all <%= config.bin %> commands.", - "enableJsonFlag": true, + "customPluginName": "@shopify/app", + "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", "flags": { - "columns": { - "char": "c", - "delimiter": ",", - "description": "Only show provided columns (comma-separated).", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ - "tree" + "config" ], "hasDynamicHelp": false, - "multiple": true, - "name": "columns", - "options": [ - "id", - "plugin", - "summary", - "type" - ], + "hidden": false, + "multiple": false, + "name": "client-id", "type": "option" }, - "deprecated": { - "allowNo": false, - "description": "Show deprecated commands.", - "name": "deprecated", - "type": "boolean" - }, - "extended": { - "allowNo": false, - "char": "x", - "description": "Show extra columns.", - "exclusive": [ - "tree" - ], - "name": "extended", - "type": "boolean" - }, - "hidden": { - "allowNo": false, - "description": "Show hidden commands.", - "name": "hidden", - "type": "boolean" + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" }, "json": { "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, "name": "json", "type": "boolean" }, - "no-truncate": { + "no-color": { "allowNo": false, - "description": "Do not truncate output.", - "exclusive": [ - "tree" - ], - "name": "no-truncate", + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "sort": { - "default": "id", - "description": "Property to sort by.", - "exclusive": [ - "tree" - ], + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "name": "sort", - "options": [ - "id", - "plugin", - "summary", - "type" - ], + "name": "path", + "noCacheDefault": true, "type": "option" }, - "tree": { + "reset": { "allowNo": false, - "description": "Show tree of commands.", - "name": "tree", + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "commands", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "config:autocorrect:off": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/plugin-did-you-mean", - "description": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "descriptionWithMarkdown": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autocorrect:off", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Disable autocorrect. Off by default." - }, - "config:autocorrect:on": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/plugin-did-you-mean", - "description": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "descriptionWithMarkdown": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autocorrect:on", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Enable autocorrect. Off by default." - }, - "config:autocorrect:status": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/plugin-did-you-mean", - "description": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "descriptionWithMarkdown": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autocorrect:status", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Check whether autocorrect is enabled or disabled. On by default." - }, - "debug:command-flags": { - "aliases": [ - ], - "args": { - }, - "description": "View all the available command flags", - "enableJsonFlag": false, - "flags": { - "csv": { + }, + "verbose": { "allowNo": false, - "description": "Output as CSV", - "env": "SHOPIFY_FLAG_OUTPUT_CSV", - "name": "csv", + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + }, + "web-env": { + "allowNo": false, + "description": "Outputs environment variables necessary for running and deploying web/.", + "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", + "hidden": false, + "name": "web-env", "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], - "id": "debug:command-flags", + "id": "app:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Print basic information about your app and extensions." }, - "demo:watcher": { + "app:init": { "aliases": [ ], "args": { @@ -3411,7 +3280,7 @@ "customPluginName": "@shopify/app", "flags": { "client-id": { - "description": "The Client ID of your app.", + "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" @@ -3422,14 +3291,30 @@ "name": "client-id", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "flavor": { + "description": "Which flavor of the given template to use.", + "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", + "hasDynamicHelp": false, + "multiple": false, + "name": "flavor", + "type": "option" + }, + "local": { + "allowNo": false, + "char": "l", + "env": "SHOPIFY_FLAG_LOCAL", + "hidden": true, + "name": "local", + "type": "boolean" + }, + "name": { + "char": "n", + "description": "The name for the new app. When provided, skips the app selection prompt and creates a new app with this name.", + "env": "SHOPIFY_FLAG_NAME", "hasDynamicHelp": false, "hidden": false, "multiple": false, - "name": "config", + "name": "name", "type": "option" }, "no-color": { @@ -3440,25 +3325,50 @@ "name": "no-color", "type": "boolean" }, + "organization-id": { + "description": "The organization ID. Your organization ID can be found in your Dev Dashboard URL: https://dev.shopify.com/dashboard/", + "env": "SHOPIFY_FLAG_ORGANIZATION_ID", + "exclusive": [ + "client-id" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "organization-id", + "type": "option" + }, + "package-manager": { + "char": "d", + "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "package-manager", + "options": [ + "npm", + "yarn", + "pnpm", + "bun" + ], + "type": "option" + }, "path": { - "description": "The path to your app directory.", + "char": "p", + "default": ".", "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, "name": "path", - "noCacheDefault": true, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", - "type": "boolean" + "template": { + "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", + "env": "SHOPIFY_FLAG_TEMPLATE", + "hasDynamicHelp": false, + "multiple": false, + "name": "template", + "type": "option" }, "verbose": { "allowNo": false, @@ -3470,72 +3380,55 @@ } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], - "id": "demo:watcher", + "id": "app:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Watch and prints out changes to an app." + "summary": "Create a new app project" }, - "docs:generate": { + "app:logs": { "aliases": [ ], "args": { }, - "description": "Generate CLI commands documentation", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "docs:generate", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "doctor-release": { - "aliases": [ - ], - "args": { - }, - "description": "Run CLI doctor-release tests", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "doctor-release", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "doctor-release:theme": { - "aliases": [ - ], - "args": { - }, - "description": "Run all theme command doctor-release tests", - "enableJsonFlag": false, + "customPluginName": "@shopify/app", + "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", "flags": { - "environment": { - "char": "e", - "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, - "name": "environment", - "required": true, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", "type": "option" }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, "no-color": { "allowNo": false, "description": "Disable color output.", @@ -3544,30 +3437,52 @@ "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password from Theme Access app (overrides environment).", - "env": "SHOPIFY_FLAG_PASSWORD", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "name": "password", + "name": "path", + "noCacheDefault": true, "type": "option" }, - "path": { - "char": "p", - "default": ".", - "description": "The path to run tests in. Defaults to current directory.", - "env": "SHOPIFY_FLAG_PATH", + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "source": { + "description": "Filters output to the specified log source.", + "env": "SHOPIFY_FLAG_SOURCE", + "hasDynamicHelp": false, + "multiple": true, + "name": "source", + "type": "option" + }, + "status": { + "description": "Filters output to the specified status (success or failure).", + "env": "SHOPIFY_FLAG_STATUS", "hasDynamicHelp": false, "multiple": false, - "name": "path", + "name": "status", + "options": [ + "success", + "failure" + ], "type": "option" }, "store": { "char": "s", - "description": "Store URL (overrides environment).", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, "name": "store", "type": "option" }, @@ -3581,4614 +3496,5254 @@ } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "doctor-release:theme", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "help": { - "aliases": [ - ], - "args": { - "command": { - "description": "Command to show help for.", - "name": "command", - "required": false - } - }, - "description": "Display help for Shopify CLI", - "enableJsonFlag": false, - "flags": { - "nested-commands": { - "allowNo": false, - "char": "n", - "description": "Include all nested commands in the output.", - "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", - "name": "nested-commands", - "type": "boolean" - } - }, - "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "help", + "id": "app:logs", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "usage": "help [command] [flags]" + "strict": true, + "summary": "Stream detailed logs for your Shopify app." }, - "hydrogen:build": { + "app:logs:sources": { "aliases": [ ], "args": { }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Builds a Hydrogen storefront for production.", - "descriptionWithMarkdown": "Builds a Hydrogen storefront for production. The client and app worker files are compiled to a `/dist` folder in your Hydrogen project directory.", - "enableJsonFlag": false, + "customPluginName": "@shopify/app", + "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", "flags": { - "bundle-stats": { - "allowNo": true, - "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", - "name": "bundle-stats", - "type": "boolean" - }, - "codegen": { - "allowNo": false, - "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "name": "codegen", - "required": false, - "type": "boolean" - }, - "codegen-config-path": { - "dependsOn": [ - "codegen" + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", "hasDynamicHelp": false, + "hidden": false, "multiple": false, - "name": "codegen-config-path", - "required": false, + "name": "client-id", "type": "option" }, - "disable-route-warning": { - "allowNo": false, - "description": "Disables any warnings about missing standard routes.", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING", - "name": "disable-route-warning", - "type": "boolean" - }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, - "name": "entry", + "name": "config", "type": "option" }, - "force-client-sourcemap": { + "no-color": { "allowNo": false, - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", - "type": "boolean" - }, - "lockfile-check": { - "allowNo": true, - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, "name": "path", + "noCacheDefault": true, "type": "option" }, - "sourcemap": { - "allowNo": true, - "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", - "name": "sourcemap", + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, - "watch": { + "verbose": { "allowNo": false, - "description": "Watches for changes and rebuilds the project writing output to disk.", - "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", - "name": "watch", + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "hydrogen:build", + "id": "app:logs:sources", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Print out a list of sources that may be used with the logs command." }, - "hydrogen:check": { - "aliases": [ - ], - "args": { - "resource": { - "description": "The resource to check. Currently only 'routes' is supported.", - "name": "resource", - "options": [ - "routes" - ], - "required": true - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Returns diagnostic information about a Hydrogen storefront.", - "descriptionWithMarkdown": "Checks whether your Hydrogen app includes a set of standard Shopify routes.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:check", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:codegen": { + "app:release": { "aliases": [ ], "args": { }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Generate types for the Storefront API queries found in your project.", - "descriptionWithMarkdown": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "enableJsonFlag": false, + "customPluginName": "@shopify/app", + "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", "flags": { - "codegen-config-path": { - "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", + "allow-deletes": { + "allowNo": false, + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", + "type": "boolean" + }, + "allow-updates": { + "allowNo": false, + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", + "type": "boolean" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, - "name": "codegen-config-path", - "required": false, + "name": "client-id", "type": "option" }, - "force-sfapi-version": { - "description": "Force generating Storefront API types for a specific version instead of using the one provided in Hydrogen. A token can also be provided with this format: `:`.", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, - "hidden": true, + "hidden": false, "multiple": false, - "name": "force-sfapi-version", + "name": "config", "type": "option" }, + "force": { + "allowNo": false, + "char": "f", + "description": "[Deprecated] Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": false, + "name": "force", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, "name": "path", + "noCacheDefault": true, "type": "option" }, - "watch": { + "reset": { "allowNo": false, - "description": "Watch the project for changes to update types on file save.", - "name": "watch", - "required": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" + }, + "version": { + "description": "The name of the app version to release.", + "env": "SHOPIFY_FLAG_VERSION", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "version", + "required": true, + "type": "option" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "hydrogen:codegen", + "id": "app:release", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Release an app version.", + "usage": "app release --version " }, - "hydrogen:customer-account-push": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Push project configuration to admin", - "enableJsonFlag": false, + "app:versions:list": { + "aliases": [], + "args": {}, + "description": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", "flags": { - "dev-origin": { - "description": "The development domain of your application.", - "hasDynamicHelp": false, - "multiple": false, - "name": "dev-origin", - "required": true, - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "name": "path", - "type": "option" - }, - "relative-logout-uri": { - "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "relative-logout-uri", "type": "option" }, - "relative-redirect-uri": { - "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "relative-redirect-uri", "type": "option" }, - "storefront-id": { - "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "storefront-id", "type": "option" + }, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "allowNo": false, + "type": "boolean" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:customer-account-push", + "hiddenAliases": [], + "id": "app:versions:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "List deployed versions of your app.", + "descriptionWithMarkdown": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", + "customPluginName": "@shopify/app" }, - "hydrogen:debug:cpu": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Builds and profiles the server startup time the app.", - "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", - "enableJsonFlag": false, + "app:webhook:trigger": { + "aliases": [], + "args": {}, + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", "flags": { - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "output": { - "default": "startup.cpuprofile", - "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "output", - "required": false, "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:debug:cpu", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:deploy": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Builds and deploys a Hydrogen storefront to Oxygen.", - "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", - "enableJsonFlag": false, - "flags": { - "auth-bypass-token": { + }, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "allowNo": false, - "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", - "env": "AUTH_BYPASS_TOKEN", - "name": "auth-bypass-token", - "required": false, "type": "boolean" }, - "auth-bypass-token-duration": { - "dependsOn": [ - "auth-bypass-token" - ], - "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", - "env": "AUTH_BYPASS_TOKEN_DURATION", - "hasDynamicHelp": false, - "multiple": false, - "name": "auth-bypass-token-duration", + "help": { + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", + "hidden": false, + "name": "help", "required": false, - "type": "option" + "allowNo": false, + "type": "boolean" }, - "build-command": { - "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", + "hidden": false, + "name": "topic", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "build-command", - "required": false, "type": "option" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "api-version": { + "description": "The API Version of the webhook topic.", + "env": "SHOPIFY_FLAG_API_VERSION", + "hidden": false, + "name": "api-version", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "delivery-method": { + "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", + "env": "SHOPIFY_FLAG_DELIVERY_METHOD", + "hidden": false, + "name": "delivery-method", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "env", + "options": [ + "http", + "google-pub-sub", + "event-bridge" + ], "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", + "hidden": false, + "name": "shared-secret", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "env-branch", "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables for the deployment.", + "client-secret": { + "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", + "env": "SHOPIFY_FLAG_CLIENT_SECRET", + "hidden": false, + "name": "client-secret", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "required": false, - "type": "boolean" - }, - "force-client-sourcemap": { - "allowNo": false, - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", - "type": "boolean" - }, - "json-output": { - "allowNo": true, - "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", - "name": "json-output", + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", + "hidden": false, + "name": "address", "required": false, - "type": "boolean" - }, - "lockfile-check": { - "allowNo": true, - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", - "type": "boolean" - }, - "metadata-description": { - "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", "hasDynamicHelp": false, "multiple": false, - "name": "metadata-description", - "required": false, "type": "option" - }, - "metadata-url": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:webhook:trigger", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Trigger delivery of a sample webhook topic payload to a designated address.", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "customPluginName": "@shopify/app" + }, + "webhook:trigger": { + "aliases": [], + "args": {}, + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "flags": { + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "metadata-url", - "required": false, "type": "option" }, - "metadata-user": { - "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "metadata-user", - "required": false, "type": "option" }, - "metadata-version": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "metadata-version", - "required": false, "type": "option" }, - "no-verify": { + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "allowNo": false, - "description": "Skip the routability verification step after deployment.", - "name": "no-verify", + "type": "boolean" + }, + "help": { + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", + "hidden": false, + "name": "help", "required": false, + "allowNo": false, "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", + "hidden": false, + "name": "topic", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "preview": { - "allowNo": false, - "description": "Deploys to the Preview environment.", - "name": "preview", + "api-version": { + "description": "The API Version of the webhook topic.", + "env": "SHOPIFY_FLAG_API_VERSION", + "hidden": false, + "name": "api-version", "required": false, - "type": "boolean" - }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", "hasDynamicHelp": false, "multiple": false, - "name": "shop", "type": "option" }, - "token": { - "char": "t", - "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", - "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "token", - "required": false, - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:deploy", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:dev": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Runs Hydrogen storefront in an Oxygen worker for development.", - "descriptionWithMarkdown": "Runs a Hydrogen storefront in a local runtime that emulates an Oxygen worker for development.\n\n If your project is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) to a Hydrogen storefront, then its environment variables will be loaded with the runtime.", - "enableJsonFlag": false, - "flags": { - "codegen": { - "allowNo": false, - "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "name": "codegen", + "delivery-method": { + "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", + "env": "SHOPIFY_FLAG_DELIVERY_METHOD", + "hidden": false, + "name": "delivery-method", "required": false, - "type": "boolean" - }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", "hasDynamicHelp": false, "multiple": false, - "name": "codegen-config-path", - "required": false, + "options": [ + "http", + "google-pub-sub", + "event-bridge" + ], "type": "option" }, - "customer-account-push": { - "allowNo": false, - "description": "Use tunneling for local development and push the tunneling domain to admin. Required to use Customer Account API's OAuth flow", - "env": "SHOPIFY_HYDROGEN_FLAG_CUSTOMER_ACCOUNT_PUSH", - "name": "customer-account-push", - "required": false, - "type": "boolean" - }, - "debug": { - "allowNo": false, - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "type": "boolean" - }, - "disable-deps-optimizer": { - "allowNo": false, - "description": "Disable adding dependencies to Vite's `ssr.optimizeDeps.include` automatically", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_DEPS_OPTIMIZER", - "name": "disable-deps-optimizer", - "type": "boolean" - }, - "disable-version-check": { - "allowNo": false, - "description": "Skip the version check when running `hydrogen dev`", - "name": "disable-version-check", + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", + "hidden": false, + "name": "shared-secret", "required": false, - "type": "boolean" - }, - "disable-virtual-routes": { - "allowNo": false, - "description": "Disable rendering fallback routes when a route file doesn't exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES", - "name": "disable-virtual-routes", - "type": "boolean" - }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "hasDynamicHelp": false, - "multiple": false, - "name": "entry", - "type": "option" - }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "client-secret": { + "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", + "env": "SHOPIFY_FLAG_CLIENT_SECRET", + "hidden": false, + "name": "client-secret", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "env-branch", "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", + "hidden": false, + "name": "address", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "webhook:trigger", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "summary": "Trigger delivery of a sample webhook topic payload to a designated address.", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "customPluginName": "@shopify/app" + }, + "demo:watcher": { + "aliases": [], + "args": {}, + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "host": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Expose the server to the local network", - "name": "host", - "required": false, "type": "boolean" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "inspector-port", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "port", - "required": false, "type": "option" }, - "verbose": { + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "allowNo": false, - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:dev", + "hidden": true, + "hiddenAliases": [], + "id": "demo:watcher", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Watch and prints out changes to an app.", + "customPluginName": "@shopify/app" }, - "hydrogen:env:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "List the environments on your linked Hydrogen storefront.", - "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", - "enableJsonFlag": false, + "organization:list": { + "aliases": [], + "args": {}, + "description": "Lists the Shopify organizations that you have access to, along with their organization IDs.", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:list", + "hiddenAliases": [], + "id": "organization:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:env:pull": { - "aliases": [ - ], + "strict": true, + "summary": "List Shopify organizations you have access to.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Lists the Shopify organizations that you have access to, along with their organization IDs.", + "customPluginName": "@shopify/app" + }, + "theme:init": { + "aliases": [], "args": { + "name": { + "description": "Name of the new theme", + "name": "name", + "required": false + } }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Populate your .env with variables from your Hydrogen storefront.", - "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", - "enableJsonFlag": false, + "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "hasDynamicHelp": false, - "multiple": false, - "name": "env", - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "env-branch", "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "clone-url": { + "char": "u", + "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", + "env": "SHOPIFY_FLAG_CLONE_URL", + "name": "clone-url", + "default": "https://github.com/Shopify/skeleton-theme.git", "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" }, - "force": { + "latest": { + "char": "l", + "description": "Downloads the latest release of the `clone-url`", + "env": "SHOPIFY_FLAG_LATEST", + "name": "latest", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" - }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:pull", + "hiddenAliases": [], + "id": "theme:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Clones a Git repository to use as a starting point for building a new theme.", + "usage": "theme init [name] [flags]", + "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "hydrogen:env:push": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", - "enableJsonFlag": false, + "theme:check": { + "aliases": [], + "args": {}, + "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "hasDynamicHelp": false, - "multiple": false, - "name": "env", - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "hasDynamicHelp": false, - "multiple": false, - "name": "env-file", - "required": false, - "type": "option" + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "name": "path", - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:push", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:g": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "hydrogen:g", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false - }, - "hydrogen:generate:route": { - "aliases": [ - ], - "args": { - "routeName": { - "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", - "name": "routeName", - "options": [ - "home", - "page", - "cart", - "products", - "collections", - "policies", - "blogs", - "account", - "search", - "robots", - "sitemap", - "tokenlessApi", - "all" - ], - "required": true - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Generates a standard Shopify route.", - "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", - "enableJsonFlag": false, - "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "adapter", "type": "option" }, - "force": { + "auto-correct": { + "char": "a", + "description": "Automatically fix offenses", + "env": "SHOPIFY_FLAG_AUTO_CORRECT", + "name": "auto-correct", + "required": false, "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "config": { + "char": "C", + "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", + "env": "SHOPIFY_FLAG_CONFIG", + "name": "config", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "locale-param", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "fail-level": { + "description": "Minimum severity for exit with error code", + "env": "SHOPIFY_FLAG_FAIL_LEVEL", + "name": "fail-level", + "required": false, + "default": "error", "hasDynamicHelp": false, "multiple": false, - "name": "path", + "options": [ + "crash", + "error", + "suggestion", + "style", + "warning", + "info" + ], "type": "option" }, - "typescript": { + "init": { + "description": "Generate a .theme-check.yml file", + "env": "SHOPIFY_FLAG_INIT", + "name": "init", + "required": false, "allowNo": false, - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:generate:route", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:generate:routes": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Generates all supported standard shopify routes.", - "enableJsonFlag": false, - "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "hasDynamicHelp": false, - "multiple": false, - "name": "adapter", - "type": "option" }, - "force": { + "list": { + "description": "List enabled checks", + "env": "SHOPIFY_FLAG_LIST", + "name": "list", + "required": false, "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "output": { + "char": "o", + "description": "The output format to use", + "env": "SHOPIFY_FLAG_OUTPUT", + "name": "output", + "required": false, + "default": "text", "hasDynamicHelp": false, "multiple": false, - "name": "locale-param", + "options": [ + "text", + "json" + ], "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" + "print": { + "description": "Output active config to STDOUT", + "env": "SHOPIFY_FLAG_PRINT", + "name": "print", + "required": false, + "allowNo": false, + "type": "boolean" }, - "typescript": { + "version": { + "char": "v", + "description": "Print Theme Check version", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "required": false, "allowNo": false, - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:generate:routes", + "hiddenAliases": [], + "id": "theme:check", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:init": { - "aliases": [ + "strict": true, + "summary": "Validate the theme.", + "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", + "multiEnvironmentsFlags": [ + "path" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Creates a new Hydrogen storefront.", - "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", - "enableJsonFlag": false, + "customPluginName": "@shopify/theme" + }, + "theme:console": { + "aliases": [], + "args": {}, + "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "type": "boolean" - }, - "git": { - "allowNo": true, - "description": "Init Git and create initial commits.", - "env": "SHOPIFY_HYDROGEN_FLAG_GIT", - "name": "git", "type": "boolean" }, - "install-deps": { - "allowNo": true, - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "language": { - "description": "Sets the template language to use. One of `js` or `ts`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "language", "type": "option" }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "markets", "type": "option" }, - "mock-shop": { - "allowNo": false, - "description": "Use mock.shop as the data source for the storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", - "name": "mock-shop", - "type": "boolean" - }, - "package-manager": { - "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "package-manager", - "options": [ - "npm", - "yarn", - "pnpm", - "unknown" - ], "type": "option" }, - "path": { - "description": "The path to the directory of the new Hydrogen storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "path", + "multiple": true, "type": "option" }, - "quickstart": { - "allowNo": false, - "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --markets none`", - "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", - "name": "quickstart", - "type": "boolean" - }, - "shortcut": { - "allowNo": true, - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", - "type": "boolean" - }, - "styling": { - "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", - "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", + "url": { + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "name": "url", + "default": "/", "hasDynamicHelp": false, "multiple": false, - "name": "styling", "type": "option" }, - "template": { - "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", "hasDynamicHelp": false, "multiple": false, - "name": "template", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:init", + "hiddenAliases": [], + "id": "theme:console", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:link": { - "aliases": [ + "strict": true, + "summary": "Shopify Liquid REPL (read-eval-print loop) tool", + "usage": [ + "theme console", + "theme console --url /products/classic-leather-jacket" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Link a local project to one of your shop's Hydrogen storefronts.", - "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", - "enableJsonFlag": false, + "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" + }, + "theme:delete": { + "aliases": [], + "args": {}, + "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "storefront": { - "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", - "env": "SHOPIFY_HYDROGEN_STOREFRONT", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "storefront", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:link", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Returns a list of Hydrogen storefronts available on a given shop.", - "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:list", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:login": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Login to your Shopify account.", - "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "path", + "multiple": true, "type": "option" }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", + "development": { + "char": "d", + "description": "Delete your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "show-all": { + "char": "a", + "description": "Include others development themes in theme list.", + "env": "SHOPIFY_FLAG_SHOW_ALL", + "name": "show-all", + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, - "multiple": false, - "name": "shop", + "multiple": true, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:login", + "hiddenAliases": [], + "id": "theme:delete", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:logout": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Logout of your local session.", - "descriptionWithMarkdown": "Log out from the current shop.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ + "strict": true, + "summary": "Delete remote themes from the connected store. This command can't be undone.", + "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "multiEnvironmentsFlags": [ + "store", + "password", + [ + "development", + "theme" + ] ], - "id": "hydrogen:logout", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true + "customPluginName": "@shopify/theme" }, - "hydrogen:preview": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", - "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", - "enableJsonFlag": false, + "theme:dev": { + "aliases": [], + "args": {}, + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", "flags": { - "build": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Builds the app before starting the preview server.", - "name": "build", "type": "boolean" }, - "codegen": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "dependsOn": [ - "build" - ], - "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "name": "codegen", - "required": false, "type": "boolean" }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "codegen-config-path", - "required": false, "type": "option" }, - "debug": { - "allowNo": false, - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "type": "boolean" - }, - "entry": { - "dependsOn": [ - "build" - ], - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "env-branch", + "multiple": true, "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "name": "host", "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "live-reload": { + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "name": "live-reload", + "default": "hot-reload", "hasDynamicHelp": false, "multiple": false, - "name": "inspector-port", + "options": [ + "hot-reload", + "full-page", + "off" + ], "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", + "error-overlay": { + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "name": "error-overlay", + "default": "default", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "silent", + "default" + ], "type": "option" }, + "poll": { + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "allowNo": false, + "type": "boolean" + }, + "theme-editor-sync": { + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", + "allowNo": false, + "type": "boolean" + }, "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "name": "port", "hasDynamicHelp": false, "multiple": false, - "name": "port", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, - "type": "boolean" + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "watch": { + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "nodelete": { + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", "allowNo": false, - "dependsOn": [ - "build" - ], - "description": "Watches for changes and rebuilds the project.", - "name": "watch", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:preview", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:setup": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Scaffold routes and core functionality.", - "enableJsonFlag": false, - "flags": { + }, + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, "force": { - "allowNo": false, "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, "name": "force", + "allowNo": false, "type": "boolean" }, - "install-deps": { - "allowNo": true, - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "type": "boolean" - }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "name": "notify", "hasDynamicHelp": false, "multiple": false, - "name": "markets", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "open": { + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "allowNo": false, + "type": "boolean" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "shortcut": { - "allowNo": true, - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", + "allow-live": { + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup", + "hiddenAliases": [], + "id": "theme:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time.", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "hydrogen:setup:css": { - "aliases": [ - ], - "args": { - "strategy": { - "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", - "name": "strategy", - "options": [ - "tailwind", - "vanilla-extract", - "css-modules", - "postcss" - ] - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Setup CSS strategies for your project.", - "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", - "enableJsonFlag": false, + "theme:duplicate": { + "aliases": [], + "args": {}, + "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "install-deps": { - "allowNo": true, - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup:css", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:setup:markets": { - "aliases": [ - ], - "args": { - "strategy": { - "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", - "name": "strategy", - "options": [ - "subfolders", - "domains", - "subdomains" - ] - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Setup support for multiple markets in your project.", - "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup:markets", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:setup:vite": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "EXPERIMENTAL: Upgrades the project to use Vite.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "name": { + "char": "n", + "description": "Name of the newly duplicated theme.", + "env": "SHOPIFY_FLAG_NAME", + "name": "name", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup:vite", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:shortcut": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Creates a global `h2` shortcut for the Hydrogen CLI", - "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:shortcut", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:unlink": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Unlink a local project from a Hydrogen storefront.", - "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Force the duplicate operation to run without prompts or confirmations.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:unlink", + "hiddenAliases": [], + "id": "theme:duplicate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:upgrade": { - "aliases": [ + "strict": true, + "summary": "Duplicates a theme from your theme library.", + "usage": [ + "theme duplicate", + "theme duplicate --theme 10 --name 'New Theme'" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Upgrade Remix and Hydrogen npm dependencies.", - "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", - "enableJsonFlag": false, + "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "customPluginName": "@shopify/theme" + }, + "theme:info": { + "aliases": [], + "args": {}, + "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "allowNo": false, - "char": "f", - "description": "Ignore warnings and force the upgrade to the target version", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "version": { - "char": "v", - "description": "A target hydrogen version to update to", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "development": { + "char": "d", + "description": "Retrieve info from your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "version", - "required": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:upgrade", + "hiddenAliases": [], + "id": "theme:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "kitchen-sink": { - "aliases": [ + "strict": true, + "multiEnvironmentsFlags": [ + "store", + "password" ], - "args": { - }, - "description": "View all the available UI kit components", - "enableJsonFlag": false, + "customPluginName": "@shopify/theme" + }, + "theme:language-server": { + "aliases": [], + "args": {}, + "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - "kitchen-sink all" - ], - "id": "kitchen-sink", + "hiddenAliases": [], + "id": "theme:language-server", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Start a Language Server Protocol server.", + "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "kitchen-sink:async": { - "aliases": [ - ], - "args": { - }, - "description": "View the UI kit components that process async tasks", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:async", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "kitchen-sink:prompts": { - "aliases": [ - ], - "args": { - }, - "description": "View the UI kit components prompts", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:prompts", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "kitchen-sink:static": { - "aliases": [ - ], - "args": { - }, - "description": "View the UI kit components that display static output", - "enableJsonFlag": false, + "theme:list": { + "aliases": [], + "args": {}, + "description": "Lists the themes in your store, along with their IDs and statuses.", "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "role": { + "description": "Only list themes with the given role.", + "env": "SHOPIFY_FLAG_ROLE", + "name": "role", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "live", + "unpublished", + "development" + ], + "type": "option" + }, + "name": { + "description": "Only list themes that contain the given name.", + "env": "SHOPIFY_FLAG_NAME", + "name": "name", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "id": { + "description": "Only list theme with the given ID.", + "env": "SHOPIFY_FLAG_ID", + "name": "id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:static", + "hiddenAliases": [], + "id": "theme:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "notifications:generate": { - "aliases": [ - ], - "args": { - }, - "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ + "strict": true, + "multiEnvironmentsFlags": [ + "store", + "password" ], - "id": "notifications:generate", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true + "customPluginName": "@shopify/theme" }, - "notifications:list": { - "aliases": [ - ], - "args": { - }, - "description": "List current notifications configured for the CLI.", - "enableJsonFlag": false, + "theme:metafields:pull": { + "aliases": [], + "args": {}, + "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", "flags": { - "ignore-errors": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Don't fail if an error occurs.", - "env": "SHOPIFY_FLAG_IGNORE_ERRORS", + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "ignore-errors", + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "notifications:list", + "hiddenAliases": [], + "id": "theme:metafields:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Download metafields definitions from your shop into a local file.", + "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "organization:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Lists the Shopify organizations that you have access to, along with their organization IDs.", - "descriptionWithMarkdown": "Lists the Shopify organizations that you have access to, along with their organization IDs.", - "enableJsonFlag": false, + "theme:open": { + "aliases": [], + "args": {}, + "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", "flags": { - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, "verbose": { - "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "development": { + "char": "d", + "description": "Open your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "editor": { + "char": "E", + "description": "Open the theme editor for the specified theme in the browser.", + "env": "SHOPIFY_FLAG_EDITOR", + "name": "editor", + "allowNo": false, "type": "boolean" + }, + "live": { + "char": "l", + "description": "Open your live (published) theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "organization:list", + "hiddenAliases": [], + "id": "theme:open", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "List Shopify organizations you have access to." + "summary": "Opens the preview of your remote theme.", + "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "plugins": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "List installed plugins.", - "enableJsonFlag": true, - "examples": [ - "<%= config.bin %> <%= command.id %>" - ], + "theme:package": { + "aliases": [], + "args": {}, + "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", "flags": { - "core": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Show core plugins.", - "name": "core", "type": "boolean" }, - "json": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "plugins", + "hiddenAliases": [], + "id": "theme:package", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Package your theme into a .zip file, ready to upload to the Online Store.", + "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "plugins:inspect": { - "aliases": [ - ], - "args": { - "plugin": { - "default": ".", - "description": "Plugin to inspect.", - "name": "plugin", - "required": true - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Displays installation properties of a plugin.", - "enableJsonFlag": true, - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " - ], + "theme:profile": { + "aliases": [], + "args": {}, + "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", "flags": { - "help": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "url": { + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "name": "url", + "default": "/", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, "json": { - "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, "name": "json", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:inspect", + "hiddenAliases": [], + "id": "theme:profile", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "usage": "plugins:inspect PLUGIN..." - }, - "plugins:install": { - "aliases": [ - "plugins:add" - ], - "args": { - "plugin": { - "description": "Plugin to install.", - "name": "plugin", - "required": true - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "", - "enableJsonFlag": true, - "examples": [ - { - "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", - "description": "Install a plugin from npm registry." - }, - { - "command": "<%= config.bin %> <%= command.id %> https://github.com/someuser/someplugin", - "description": "Install a plugin from a github url." - }, - { - "command": "<%= config.bin %> <%= command.id %> someuser/someplugin", - "description": "Install a plugin from a github slug." - } + "strict": true, + "summary": "Profile the Liquid rendering of a theme page.", + "usage": [ + "theme profile", + "theme profile --url /products/classic-leather-jacket" ], + "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" + }, + "theme:publish": { + "aliases": [], + "args": {}, + "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "f", - "description": "Force npm to fetch remote resources even if a local copy exists on disk.", - "name": "force", "type": "boolean" }, - "help": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "jit": { - "allowNo": false, - "hidden": true, - "name": "jit", - "type": "boolean" + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "json": { - "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", - "type": "boolean" + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "silent": { - "allowNo": false, + "store": { "char": "s", - "description": "Silences npm output.", - "exclusive": [ - "verbose" - ], - "name": "silent", - "type": "boolean" + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", "allowNo": false, - "char": "v", - "description": "Show verbose npm output.", - "exclusive": [ - "silent" - ], - "name": "verbose", "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:install", + "hiddenAliases": [], + "id": "theme:publish", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "summary": "Installs a plugin into <%= config.bin %>." - }, - "plugins:link": { - "aliases": [ - ], - "args": { - "path": { - "default": ".", - "description": "path to plugin", - "name": "path", - "required": true - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Installation of a linked plugin will override a user-installed or core plugin.\n\ne.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work.\n", - "enableJsonFlag": false, - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + "strict": true, + "summary": "Set a remote theme as the live theme.", + "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "multiEnvironmentsFlags": [ + "store", + "password", + "theme" ], + "customPluginName": "@shopify/theme" + }, + "theme:preview": { + "aliases": [], + "args": {}, + "description": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", "flags": { - "help": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "install": { - "allowNo": true, - "description": "Install dependencies after linking the plugin.", - "name": "install", - "type": "boolean" + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "required": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "overrides": { + "description": "Path to a JSON overrides file.", + "env": "SHOPIFY_FLAG_OVERRIDES", + "name": "overrides", + "required": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { + "preview-id": { + "description": "An existing preview identifier to update instead of creating a new preview.", + "env": "SHOPIFY_FLAG_PREVIEW_ID", + "name": "preview-id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "open": { + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:link", + "hiddenAliases": [], + "id": "theme:preview", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Links a plugin into the CLI for development." + "summary": "Applies JSON overrides to a theme and returns a preview URL.", + "descriptionWithMarkdown": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "plugins:reset": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", - "enableJsonFlag": false, + "theme:pull": { + "aliases": [], + "args": {}, + "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", "flags": { - "hard": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "name": "hard", - "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", "type": "boolean" }, - "reinstall": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "name": "reinstall", - "summary": "Reinstall all plugins after uninstalling.", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:reset", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Remove all user-installed and linked plugins." - }, - "plugins:uninstall": { - "aliases": [ - "plugins:unlink", - "plugins:remove" - ], - "args": { - "plugin": { - "description": "plugin to uninstall", - "name": "plugin" - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Removes a plugin from the CLI.", - "enableJsonFlag": false, - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %>" - ], - "flags": { - "help": { + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "only": { + "char": "o", + "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "development": { + "char": "d", + "description": "Pull theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "verbose": { + "live": { + "char": "l", + "description": "Pull theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:uninstall", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false - }, - "plugins:update": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Update installed plugins.", - "enableJsonFlag": false, - "flags": { - "help": { + }, + "nodelete": { + "char": "n", + "description": "Prevent deleting local files that don't exist remotely.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "verbose": { + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:update", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "search": { - "aliases": [ - ], - "args": { - "query": { - "name": "query" - } - }, - "description": "Starts a search on shopify.dev.", - "enableJsonFlag": false, - "examples": [ - "# open the search modal on Shopify.dev\n shopify search\n\n # search for a term on Shopify.dev\n shopify search \n\n # search for a phrase on Shopify.dev\n shopify search \"\"\n " - ], - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "search", + "hiddenAliases": [], + "id": "theme:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "usage": "search [query]" - }, - "theme:check": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", - "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", + "summary": "Download your remote theme files locally.", + "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], + "customPluginName": "@shopify/theme" + }, + "theme:push": { + "aliases": [], + "args": {}, + "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", "flags": { - "auto-correct": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "a", - "description": "Automatically fix offenses", - "env": "SHOPIFY_FLAG_AUTO_CORRECT", - "name": "auto-correct", - "required": false, "type": "boolean" }, - "config": { - "char": "C", - "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", - "env": "SHOPIFY_FLAG_CONFIG", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "config", - "required": false, "type": "option" }, "environment": { "char": "e", "description": "The environment to apply to the current command.", "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, "multiple": true, - "name": "environment", "type": "option" }, - "fail-level": { - "default": "error", - "description": "Minimum severity for exit with error code", - "env": "SHOPIFY_FLAG_FAIL_LEVEL", + "only": { + "char": "o", + "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", "hasDynamicHelp": false, - "multiple": false, - "name": "fail-level", - "options": [ - "crash", - "error", - "suggestion", - "style", - "warning", - "info" - ], - "required": false, + "multiple": true, "type": "option" }, - "init": { - "allowNo": false, - "description": "Generate a .theme-check.yml file", - "env": "SHOPIFY_FLAG_INIT", - "name": "init", - "required": false, - "type": "boolean" - }, - "list": { - "allowNo": false, - "description": "List enabled checks", - "env": "SHOPIFY_FLAG_LIST", - "name": "list", - "required": false, - "type": "boolean" + "ignore": { + "char": "x", + "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "no-color", + "name": "json", + "allowNo": false, "type": "boolean" }, - "output": { - "char": "o", - "default": "text", - "description": "The output format to use", - "env": "SHOPIFY_FLAG_OUTPUT", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "output", - "options": [ - "text", - "json" - ], - "required": false, "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "development": { + "char": "d", + "description": "Push theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "development-context": { + "char": "c", + "dependsOn": [ + "development" + ], + "description": "Unique identifier for a development theme context (e.g., PR number, branch name). Reuses an existing development theme with this context name, or creates one if none exists.", + "env": "SHOPIFY_FLAG_DEVELOPMENT_CONTEXT", + "exclusive": [ + "theme" + ], + "name": "development-context", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "print": { + "live": { + "char": "l", + "description": "Push theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", "allowNo": false, - "description": "Output active config to STDOUT", - "env": "SHOPIFY_FLAG_PRINT", - "name": "print", - "required": false, "type": "boolean" }, - "verbose": { + "unpublished": { + "char": "u", + "description": "Create a new unpublished theme and push to it.", + "env": "SHOPIFY_FLAG_UNPUBLISHED", + "name": "unpublished", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" }, - "version": { + "nodelete": { + "char": "n", + "description": "Prevent deleting remote files that don't exist locally.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "allowNo": false, + "type": "boolean" + }, + "allow-live": { + "char": "a", + "description": "Allow push to a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "allowNo": false, + "type": "boolean" + }, + "publish": { + "char": "p", + "description": "Publish as the live theme after uploading.", + "env": "SHOPIFY_FLAG_PUBLISH", + "name": "publish", + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "strict": { + "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", + "env": "SHOPIFY_FLAG_STRICT_PUSH", + "name": "strict", "allowNo": false, - "char": "v", - "description": "Print Theme Check version", - "env": "SHOPIFY_FLAG_VERSION", - "name": "version", - "required": false, "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:check", - "multiEnvironmentsFlags": [ - "path" - ], + "hiddenAliases": [], + "id": "theme:push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Validate the theme." - }, - "theme:console": { - "aliases": [ + "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", + "usage": [ + "theme push", + "theme push --unpublished --json" ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", - "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", - "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, + "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], + "customPluginName": "@shopify/theme" + }, + "theme:rename": { + "aliases": [], + "args": {}, + "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "flags": { "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { "description": "The path where you want to run the command. Defaults to the current working directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "store-password", "type": "option" }, - "url": { - "default": "/", - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "url", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:console", - "multiEnvironmentsFlags": null, - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Shopify Liquid REPL (read-eval-print loop) tool", - "usage": [ - "theme console", - "theme console --url /products/classic-leather-jacket" - ] - }, - "theme:delete": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", - "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", - "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Delete your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, "environment": { "char": "e", "description": "The environment to apply to the current command.", "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, "name": "environment", - "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", - "name": "force", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, - "multiple": false, - "name": "password", + "multiple": true, "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": { + "char": "n", + "description": "The new name for the theme.", + "env": "SHOPIFY_FLAG_NEW_NAME", + "name": "name", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "show-all": { + "development": { + "char": "d", + "description": "Rename your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "allowNo": false, - "char": "a", - "description": "Include others development themes in theme list.", - "env": "SHOPIFY_FLAG_SHOW_ALL", - "name": "show-all", "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, "theme": { "char": "t", "description": "Theme ID or name of the remote theme.", "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": true, "name": "theme", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "verbose": { + "live": { + "char": "l", + "description": "Rename your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:delete", + "hiddenAliases": [], + "id": "theme:rename", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Renames an existing theme.", + "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", "multiEnvironmentsFlags": [ "store", "password", + "name", [ + "live", "development", "theme" ] ], - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Delete remote themes from the connected store. This command can't be undone." + "customPluginName": "@shopify/theme" }, - "theme:dev": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", + "theme:serve": { + "aliases": [], + "args": {}, "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", "flags": { - "allow-live": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "a", - "description": "Allow development on a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", "type": "boolean" }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, "environment": { "char": "e", "description": "The environment to apply to the current command.", "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, "multiple": true, - "name": "environment", + "type": "option" + }, + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "name": "host", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "live-reload": { + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "name": "live-reload", + "default": "hot-reload", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "hot-reload", + "full-page", + "off" + ], "type": "option" }, "error-overlay": { - "default": "default", "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "name": "error-overlay", + "default": "default", "hasDynamicHelp": false, "multiple": false, - "name": "error-overlay", "options": [ "silent", "default" ], "type": "option" }, - "force": { + "poll": { + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "allowNo": false, + "type": "boolean" + }, + "theme-editor-sync": { + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", "type": "boolean" }, - "host": { - "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", - "env": "SHOPIFY_FLAG_HOST", + "port": { + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "name": "port", "hasDynamicHelp": false, "multiple": false, - "name": "host", "type": "option" }, - "ignore": { - "char": "x", - "description": "Skip hot reloading any files that match the specified pattern.", - "env": "SHOPIFY_FLAG_IGNORE", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", + "multiple": false, "type": "option" }, "listing": { "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", "env": "SHOPIFY_FLAG_LISTING", - "hasDynamicHelp": false, - "multiple": false, "name": "listing", - "type": "option" - }, - "live-reload": { - "default": "hot-reload", - "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", - "env": "SHOPIFY_FLAG_LIVE_RELOAD", "hasDynamicHelp": false, "multiple": false, - "name": "live-reload", - "options": [ - "hot-reload", - "full-page", - "off" - ], "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, "nodelete": { - "allowNo": false, "char": "n", "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", "env": "SHOPIFY_FLAG_NODELETE", "name": "nodelete", + "allowNo": false, "type": "boolean" }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", - "hasDynamicHelp": false, - "multiple": false, - "name": "notify", - "type": "option" - }, "only": { "char": "o", "description": "Hot reload only files that match the specified pattern.", "env": "SHOPIFY_FLAG_ONLY", + "name": "only", "hasDynamicHelp": false, "multiple": true, - "name": "only", "type": "option" }, - "open": { + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", "allowNo": false, + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "name": "notify", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "open": { "description": "Automatically launch the theme preview in your default web browser.", "env": "SHOPIFY_FLAG_OPEN", "name": "open", + "allowNo": false, "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, + "allow-live": { + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "theme:serve", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time.", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" + }, + "theme:share": { + "aliases": [], + "args": {}, + "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, "path": { "description": "The path where you want to run the command. Defaults to the current working directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "poll": { - "allowNo": false, - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", - "type": "boolean" - }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "port", "type": "option" }, "store": { "char": "s", "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "store-password", + "multiple": true, "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "theme:share", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name.", + "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "multiEnvironmentsFlags": [ + "store", + "password", + "path" + ], + "customPluginName": "@shopify/theme" + }, + "plugins": { + "aliases": [], + "args": {}, + "description": "List installed plugins.", + "examples": [ + "<%= config.bin %> <%= command.id %>" + ], + "flags": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "core": { + "description": "Show core plugins.", + "name": "core", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "plugins", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" + }, + "plugins:inspect": { + "aliases": [], + "args": { + "plugin": { + "default": ".", + "description": "Plugin to inspect.", + "name": "plugin", + "required": true + } + }, + "description": "Displays installation properties of a plugin.", + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + ], + "flags": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "allowNo": false, + "type": "boolean" }, - "theme-editor-sync": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", "allowNo": false, - "description": "Synchronize Theme Editor updates in the local theme files.", - "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", - "name": "theme-editor-sync", "type": "boolean" }, "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, + "char": "v", "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:dev", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "plugins:inspect", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." + "strict": false, + "usage": "plugins:inspect PLUGIN...", + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, - "theme:duplicate": { + "plugins:install": { "aliases": [ + "plugins:add" ], "args": { + "plugin": { + "description": "Plugin to install.", + "name": "plugin", + "required": true + } }, - "customPluginName": "@shopify/theme", - "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", - "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "description": "", + "examples": [ + { + "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", + "description": "Install a plugin from npm registry." + }, + { + "command": "<%= config.bin %> <%= command.id %> https://github.com/someuser/someplugin", + "description": "Install a plugin from a github url." + }, + { + "command": "<%= config.bin %> <%= command.id %> someuser/someplugin", + "description": "Install a plugin from a github slug." + } + ], "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "allowNo": false, + "type": "boolean" }, "force": { - "allowNo": false, "char": "f", - "description": "Force the duplicate operation to run without prompts or confirmations.", - "env": "SHOPIFY_FLAG_FORCE", + "description": "Force npm to fetch remote resources even if a local copy exists on disk.", "name": "force", + "allowNo": false, "type": "boolean" }, - "json": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" }, - "name": { - "char": "n", - "description": "Name of the newly duplicated theme.", - "env": "SHOPIFY_FLAG_NAME", - "hasDynamicHelp": false, - "multiple": false, - "name": "name", - "type": "option" - }, - "no-color": { + "jit": { + "hidden": true, + "name": "jit", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "store": { + "silent": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" + "description": "Silences npm output.", + "exclusive": [ + "verbose" + ], + "name": "silent", + "allowNo": false, + "type": "boolean" }, "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, + "char": "v", + "description": "Show verbose npm output.", + "exclusive": [ + "silent" + ], "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:duplicate", + "hiddenAliases": [], + "id": "plugins:install", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Duplicates a theme from your theme library.", - "usage": [ - "theme duplicate", - "theme duplicate --theme 10 --name 'New Theme'" - ] + "strict": false, + "summary": "Installs a plugin into <%= config.bin %>.", + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, - "theme:info": { - "aliases": [ - ], + "plugins:link": { + "aliases": [], "args": { + "path": { + "default": ".", + "description": "path to plugin", + "name": "path", + "required": true + } }, - "customPluginName": "@shopify/theme", - "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", + "description": "Installation of a linked plugin will override a user-installed or core plugin.\n\ne.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work.\n", + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + ], "flags": { - "development": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", "allowNo": false, - "char": "d", - "description": "Retrieve info from your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", "type": "boolean" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" + "install": { + "description": "Install dependencies after linking the plugin.", + "name": "install", + "allowNo": true, + "type": "boolean" }, - "json": { + "verbose": { + "char": "v", + "name": "verbose", "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" - }, - "no-color": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "plugins:link", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Links a plugin into the CLI for development.", + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" + }, + "plugins:reset": { + "aliases": [], + "args": {}, + "flags": { + "hard": { + "name": "hard", + "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "verbose": { + "reinstall": { + "name": "reinstall", + "summary": "Reinstall all plugins after uninstalling.", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:info", - "multiEnvironmentsFlags": [ - "store", - "password" - ], + "hiddenAliases": [], + "id": "plugins:reset", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Remove all user-installed and linked plugins.", + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, - "theme:init": { + "plugins:uninstall": { "aliases": [ + "plugins:unlink", + "plugins:remove" ], "args": { - "name": { - "description": "Name of the new theme", - "name": "name", - "required": false + "plugin": { + "description": "plugin to uninstall", + "name": "plugin" } }, - "customPluginName": "@shopify/theme", - "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", - "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "description": "Removes a plugin from the CLI.", + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %>" + ], "flags": { - "clone-url": { - "char": "u", - "default": "https://github.com/Shopify/skeleton-theme.git", - "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", - "env": "SHOPIFY_FLAG_CLONE_URL", - "hasDynamicHelp": false, - "multiple": false, - "name": "clone-url", - "type": "option" - }, - "latest": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", "allowNo": false, - "char": "l", - "description": "Downloads the latest release of the `clone-url`", - "env": "SHOPIFY_FLAG_LATEST", - "name": "latest", "type": "boolean" }, - "no-color": { + "verbose": { + "char": "v", + "name": "verbose", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "plugins:uninstall", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": false, + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" + }, + "plugins:update": { + "aliases": [], + "args": {}, + "description": "Update installed plugins.", + "flags": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" }, "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, + "char": "v", "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:init", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "plugins:update", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Clones a Git repository to use as a starting point for building a new theme.", - "usage": "theme init [name] [flags]" + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, - "theme:language-server": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", - "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", + "config:autocorrect:off": { + "aliases": [], + "args": {}, + "description": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "config:autocorrect:off", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Disable autocorrect. Off by default.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "customPluginName": "@shopify/plugin-did-you-mean" + }, + "config:autocorrect:status": { + "aliases": [], + "args": {}, + "description": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "config:autocorrect:status", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Check whether autocorrect is enabled or disabled. On by default.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "customPluginName": "@shopify/plugin-did-you-mean" + }, + "config:autocorrect:on": { + "aliases": [], + "args": {}, + "description": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "config:autocorrect:on", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Enable autocorrect. Off by default.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "customPluginName": "@shopify/plugin-did-you-mean" + }, + "commands": { + "aliases": [], + "args": {}, + "description": "List all <%= config.bin %> commands.", "flags": { - "no-color": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "verbose": { + "columns": { + "char": "c", + "description": "Only show provided columns (comma-separated).", + "exclusive": [ + "tree" + ], + "name": "columns", + "delimiter": ",", + "hasDynamicHelp": false, + "multiple": true, + "options": [ + "id", + "plugin", + "summary", + "type" + ], + "type": "option" + }, + "deprecated": { + "description": "Show deprecated commands.", + "name": "deprecated", + "allowNo": false, + "type": "boolean" + }, + "extended": { + "char": "x", + "description": "Show extra columns.", + "exclusive": [ + "tree" + ], + "name": "extended", + "allowNo": false, + "type": "boolean" + }, + "hidden": { + "description": "Show hidden commands.", + "name": "hidden", + "allowNo": false, + "type": "boolean" + }, + "no-truncate": { + "description": "Do not truncate output.", + "exclusive": [ + "tree" + ], + "name": "no-truncate", + "allowNo": false, + "type": "boolean" + }, + "sort": { + "description": "Property to sort by.", + "exclusive": [ + "tree" + ], + "name": "sort", + "default": "id", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "id", + "plugin", + "summary", + "type" + ], + "type": "option" + }, + "tree": { + "description": "Show tree of commands.", + "name": "tree", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:language-server", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "commands", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Start a Language Server Protocol server." + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-commands" }, - "theme:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Lists the themes in your store, along with their IDs and statuses.", + "hydrogen:dev": { + "aliases": [], + "args": {}, + "description": "Runs Hydrogen storefront in an Oxygen worker for development.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "id": { - "description": "Only list theme with the given ID.", - "env": "SHOPIFY_FLAG_ID", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "name": "port", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "id", "type": "option" }, - "json": { + "codegen": { + "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "name": "codegen", + "required": false, "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" }, - "name": { - "description": "Only list themes that contain the given name.", - "env": "SHOPIFY_FLAG_NAME", + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "name": "codegen-config-path", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { + "disable-virtual-routes": { + "description": "Disable rendering fallback routes when a route file doesn't exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES", + "name": "disable-virtual-routes", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "debug": { + "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", + "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", + "name": "debug", + "allowNo": false, + "type": "boolean" + }, + "inspector-port": { + "description": "The port where the inspector is available. Defaults to 9229.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "name": "inspector-port", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "role": { - "description": "Only list themes with the given role.", - "env": "SHOPIFY_FLAG_ROLE", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, "multiple": false, - "name": "role", - "options": [ - "live", - "unpublished", - "development" - ], "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { + "disable-version-check": { + "description": "Skip the version check when running `hydrogen dev`", + "name": "disable-version-check", + "required": false, "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:list", - "multiEnvironmentsFlags": [ - "store", - "password" - ], - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "theme:metafields:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", - "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", - "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" }, - "force": { + "customer-account-push": { + "description": "Use tunneling for local development and push the tunneling domain to admin. Required to use Customer Account API's OAuth flow", + "env": "SHOPIFY_HYDROGEN_FLAG_CUSTOMER_ACCOUNT_PUSH", + "name": "customer-account-push", + "required": false, "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", "type": "boolean" }, - "no-color": { + "verbose": { + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", + "name": "verbose", + "required": false, "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" + "host": { + "description": "Expose the server to the local network", + "name": "host", + "required": false, + "allowNo": false, + "type": "boolean" }, - "verbose": { + "disable-deps-optimizer": { + "description": "Disable adding dependencies to Vite's `ssr.optimizeDeps.include` automatically", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_DEPS_OPTIMIZER", + "name": "disable-deps-optimizer", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:metafields:pull", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Download metafields definitions from your shop into a local file." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Runs a Hydrogen storefront in a local runtime that emulates an Oxygen worker for development.\n\n If your project is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) to a Hydrogen storefront, then its environment variables will be loaded with the runtime.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:open": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", - "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "hydrogen:build": { + "aliases": [], + "args": {}, + "description": "Builds a Hydrogen storefront for production.", "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Open your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "editor": { - "allowNo": false, - "char": "E", - "description": "Open the theme editor for the specified theme in the browser.", - "env": "SHOPIFY_FLAG_EDITOR", - "name": "editor", - "type": "boolean" + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "live": { - "allowNo": false, - "char": "l", - "description": "Open your live (published) theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", + "sourcemap": { + "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", + "name": "sourcemap", + "allowNo": true, + "type": "boolean" + }, + "lockfile-check": { + "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", + "name": "lockfile-check", + "allowNo": true, "type": "boolean" }, - "no-color": { + "disable-route-warning": { + "description": "Disables any warnings about missing standard routes.", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING", + "name": "disable-route-warning", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" + "codegen": { + "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "name": "codegen", + "required": false, + "allowNo": false, + "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "name": "codegen-config-path", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" + "watch": { + "description": "Watches for changes and rebuilds the project writing output to disk.", + "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", + "name": "watch", + "allowNo": false, + "type": "boolean" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" + "bundle-stats": { + "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", + "name": "bundle-stats", + "allowNo": true, + "type": "boolean" }, - "verbose": { + "force-client-sourcemap": { + "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", + "name": "force-client-sourcemap", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:open", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Opens the preview of your remote theme." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Builds a Hydrogen storefront for production. The client and app worker files are compiled to a `/dist` folder in your Hydrogen project directory.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:package": { - "aliases": [ - ], + "hydrogen:check": { + "aliases": [], "args": { + "resource": { + "description": "The resource to check. Currently only 'routes' is supported.", + "name": "resource", + "options": [ + "routes" + ], + "required": true + } }, - "customPluginName": "@shopify/theme", - "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", - "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "description": "Returns diagnostic information about a Hydrogen storefront.", "flags": { - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:package", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:check", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Package your theme into a .zip file, ready to upload to the Online Store." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Checks whether your Hydrogen app includes a set of standard Shopify routes.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:preview": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", - "descriptionWithMarkdown": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", + "hydrogen:codegen": { + "aliases": [], + "args": {}, + "description": "Generate types for the Storefront API queries found in your project.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" + "codegen-config-path": { + "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", + "name": "codegen-config-path", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "open": { + "force-sfapi-version": { + "description": "Force generating Storefront API types for a specific version instead of using the one provided in Hydrogen. A token can also be provided with this format: `:`.", + "hidden": true, + "name": "force-sfapi-version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "watch": { + "description": "Watch the project for changes to update types on file save.", + "name": "watch", + "required": false, "allowNo": false, - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", "type": "boolean" - }, - "overrides": { - "description": "Path to a JSON overrides file.", - "env": "SHOPIFY_FLAG_OVERRIDES", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:codegen", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:deploy": { + "aliases": [], + "args": {}, + "description": "Builds and deploys a Hydrogen storefront to Oxygen.", + "flags": { + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, "multiple": false, - "name": "overrides", - "required": true, "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "preview-id": { - "description": "An existing preview identifier to update instead of creating a new preview.", - "env": "SHOPIFY_FLAG_PREVIEW_ID", + "env-file": { + "description": "Path to an environment file to override existing environment variables for the deployment.", + "name": "env-file", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "preview-id", "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "preview": { + "description": "Deploys to the Preview environment.", + "name": "preview", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "no-verify": { + "description": "Skip the routability verification step after deployment.", + "name": "no-verify", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "auth-bypass-token": { + "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", + "env": "AUTH_BYPASS_TOKEN", + "name": "auth-bypass-token", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "auth-bypass-token-duration": { + "dependsOn": [ + "auth-bypass-token" + ], + "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", + "env": "AUTH_BYPASS_TOKEN_DURATION", + "name": "auth-bypass-token-duration", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "build-command": { + "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", + "name": "build-command", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "theme", - "required": true, "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "lockfile-check": { + "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", + "name": "lockfile-check", + "allowNo": true, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:preview", - "multiEnvironmentsFlags": null, - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Applies JSON overrides to a theme and returns a preview URL." - }, - "theme:profile": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", - "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", - "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "shop": { + "char": "s", + "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", + "env": "SHOPIFY_SHOP", + "name": "shop", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "json-output": { + "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", + "name": "json-output", + "required": false, + "allowNo": true, + "type": "boolean" + }, + "token": { + "char": "t", + "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", + "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", + "name": "token", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "metadata-description": { + "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", + "name": "metadata-description", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "metadata-url": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", + "hidden": true, + "name": "metadata-url", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "store-password", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "metadata-user": { + "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", + "name": "metadata-user", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "url": { - "default": "/", - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", + "metadata-version": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", + "hidden": true, + "name": "metadata-version", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "url", "type": "option" }, - "verbose": { + "force-client-sourcemap": { + "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", + "name": "force-client-sourcemap", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:profile", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:deploy", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Profile the Liquid rendering of a theme page.", - "usage": [ - "theme profile", - "theme profile --url /products/classic-leather-jacket" - ] + "enableJsonFlag": false, + "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:publish": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", - "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "hydrogen:g": { + "aliases": [], + "args": {}, + "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "hydrogen:g", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": false, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:init": { + "aliases": [], + "args": {}, + "description": "Creates a new Hydrogen storefront.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, "force": { - "allowNo": false, "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "type": "boolean" - }, - "no-color": { "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "path": { + "description": "The path to the directory of the new Hydrogen storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "language": { + "description": "Sets the template language to use. One of `js` or `ts`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", + "name": "language", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "template": { + "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", + "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", + "name": "template", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "install-deps": { + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "allowNo": true, + "type": "boolean" + }, + "mock-shop": { + "description": "Use mock.shop as the data source for the storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", + "name": "mock-shop", + "allowNo": false, + "type": "boolean" + }, + "styling": { + "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", + "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", + "name": "styling", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "markets": { + "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", + "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "name": "markets", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "verbose": { + "shortcut": { + "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", + "name": "shortcut", + "allowNo": true, + "type": "boolean" + }, + "git": { + "description": "Init Git and create initial commits.", + "env": "SHOPIFY_HYDROGEN_FLAG_GIT", + "name": "git", + "allowNo": true, + "type": "boolean" + }, + "quickstart": { + "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --markets none`", + "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", + "name": "quickstart", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" + }, + "package-manager": { + "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", + "hidden": true, + "name": "package-manager", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "npm", + "yarn", + "pnpm", + "unknown" + ], + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:publish", - "multiEnvironmentsFlags": [ - "store", - "password", - "theme" - ], + "hiddenAliases": [], + "id": "hydrogen:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Set a remote theme as the live theme." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", - "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "hydrogen:link": { + "aliases": [], + "args": {}, + "description": "Link a local project to one of your shop's Hydrogen storefronts.", "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Pull theme files from your remote development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, "force": { - "allowNo": false, "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "type": "boolean" - }, - "ignore": { - "char": "x", - "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_IGNORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", - "type": "option" - }, - "live": { - "allowNo": false, - "char": "l", - "description": "Pull theme files from your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "nodelete": { "allowNo": false, - "char": "n", - "description": "Prevent deleting local files that don't exist remotely.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", "type": "boolean" }, - "only": { - "char": "o", - "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_ONLY", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "only", + "multiple": false, "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "storefront": { + "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", + "env": "SHOPIFY_HYDROGEN_STOREFRONT", + "name": "storefront", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:link", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:list": { + "aliases": [], + "args": {}, + "description": "Returns a list of Hydrogen storefronts available on a given shop.", + "flags": { "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:login": { + "aliases": [], + "args": {}, + "description": "Login to your Shopify account.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "name": "path", - "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "store": { + "shop": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", + "env": "SHOPIFY_SHOP", + "name": "shop", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:login", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:logout": { + "aliases": [], + "args": {}, + "description": "Logout of your local session.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:pull", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "hydrogen:logout", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Download your remote theme files locally." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Log out from the current shop.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:push": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", - "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", - "flags": { - "allow-live": { - "allowNo": false, - "char": "a", - "description": "Allow push to a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", - "type": "boolean" + "hydrogen:preview": { + "aliases": [], + "args": {}, + "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "development": { - "allowNo": false, - "char": "d", - "description": "Push theme files from your remote development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "name": "port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "development-context": { - "char": "c", - "dependsOn": [ - "development" - ], - "description": "Unique identifier for a development theme context (e.g., PR number, branch name). Reuses an existing development theme with this context name, or creates one if none exists.", - "env": "SHOPIFY_FLAG_DEVELOPMENT_CONTEXT", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", "exclusive": [ - "theme" + "env-branch" ], + "name": "env", "hasDynamicHelp": false, "multiple": false, - "name": "development-context", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "ignore": { - "char": "x", - "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_IGNORE", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", + "inspector-port": { + "description": "The port where the inspector is available. Defaults to 9229.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "name": "inspector-port", "hasDynamicHelp": false, "multiple": false, - "name": "listing", "type": "option" }, - "live": { + "debug": { + "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", + "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", + "name": "debug", "allowNo": false, - "char": "l", - "description": "Push theme files from your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", "type": "boolean" }, - "no-color": { + "verbose": { + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", + "name": "verbose", + "required": false, "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "nodelete": { + "build": { + "description": "Builds the app before starting the preview server.", + "name": "build", "allowNo": false, - "char": "n", - "description": "Prevent deleting remote files that don't exist locally.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", "type": "boolean" }, - "only": { - "char": "o", - "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_ONLY", + "watch": { + "dependsOn": [ + "build" + ], + "description": "Watches for changes and rebuilds the project.", + "name": "watch", + "allowNo": false, + "type": "boolean" + }, + "entry": { + "dependsOn": [ + "build" + ], + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, - "multiple": true, - "name": "only", + "multiple": false, "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "codegen": { + "dependsOn": [ + "build" + ], + "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "name": "codegen", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "name": "codegen-config-path", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:preview", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:setup": { + "aliases": [], + "args": {}, + "description": "Scaffold routes and core functionality.", + "flags": { "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "publish": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "char": "p", - "description": "Publish as the live theme after uploading.", - "env": "SHOPIFY_FLAG_PUBLISH", - "name": "publish", "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "markets": { + "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", + "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "name": "markets", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "shortcut": { + "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", + "name": "shortcut", + "allowNo": true, + "type": "boolean" + }, + "install-deps": { + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "allowNo": true, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:setup", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:shortcut": { + "aliases": [], + "args": {}, + "description": "Creates a global `h2` shortcut for the Hydrogen CLI", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:shortcut", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:unlink": { + "aliases": [], + "args": {}, + "description": "Unlink a local project from a Hydrogen storefront.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:unlink", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:upgrade": { + "aliases": [], + "args": {}, + "description": "Upgrade Remix and Hydrogen npm dependencies.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "strict": { - "allowNo": false, - "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", - "env": "SHOPIFY_FLAG_STRICT_PUSH", - "name": "strict", - "type": "boolean" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "version": { + "char": "v", + "description": "A target hydrogen version to update to", + "name": "version", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "unpublished": { - "allowNo": false, - "char": "u", - "description": "Create a new unpublished theme and push to it.", - "env": "SHOPIFY_FLAG_UNPUBLISHED", - "name": "unpublished", - "type": "boolean" - }, - "verbose": { + "force": { + "char": "f", + "description": "Ignore warnings and force the upgrade to the target version", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:push", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "hydrogen:upgrade", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", - "usage": [ - "theme push", - "theme push --unpublished --json" - ] + "enableJsonFlag": false, + "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:rename": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", - "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "hydrogen:customer-account-push": { + "aliases": [], + "args": {}, + "description": "Push project configuration to admin", "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Rename your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "live": { - "allowNo": false, - "char": "l", - "description": "Rename your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "type": "boolean" - }, - "name": { - "char": "n", - "description": "The new name for the theme.", - "env": "SHOPIFY_FLAG_NEW_NAME", + "storefront-id": { + "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", + "name": "storefront-id", "hasDynamicHelp": false, "multiple": false, - "name": "name", - "required": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" + "dev-origin": { + "description": "The development domain of your application.", + "name": "dev-origin", + "required": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "relative-redirect-uri": { + "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", + "name": "relative-redirect-uri", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "relative-logout-uri": { + "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", + "name": "relative-logout-uri", "hasDynamicHelp": false, "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:customer-account-push", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:debug:cpu": { + "aliases": [], + "args": {}, + "description": "Builds and profiles the server startup time the app.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "name": "path", - "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "output": { + "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", + "name": "output", + "required": false, + "default": "startup.cpuprofile", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:rename", - "multiEnvironmentsFlags": [ - "store", - "password", - "name", - [ - "live", - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "hydrogen:debug:cpu", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Renames an existing theme." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:serve": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "hydrogen:env:list": { + "aliases": [], + "args": {}, + "description": "List the environments on your linked Hydrogen storefront.", "flags": { - "allow-live": { - "allowNo": false, - "char": "a", - "description": "Allow development on a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "error-overlay": { - "default": "default", - "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", - "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "error-overlay", - "options": [ - "silent", - "default" - ], "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "host": { - "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", - "env": "SHOPIFY_FLAG_HOST", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:env:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:env:pull": { + "aliases": [], + "args": {}, + "description": "Populate your .env with variables from your Hydrogen storefront.", + "flags": { + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, "multiple": false, - "name": "host", "type": "option" }, - "ignore": { - "char": "x", - "description": "Skip hot reloading any files that match the specified pattern.", - "env": "SHOPIFY_FLAG_IGNORE", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", + "multiple": false, "type": "option" }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, "multiple": false, - "name": "listing", "type": "option" }, - "live-reload": { - "default": "hot-reload", - "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", - "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "live-reload", - "options": [ - "hot-reload", - "full-page", - "off" - ], "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "nodelete": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "char": "n", - "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", "type": "boolean" - }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:env:pull", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:env:push": { + "aliases": [], + "args": {}, + "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", + "flags": { + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, "multiple": false, - "name": "notify", "type": "option" }, - "only": { - "char": "o", - "description": "Hot reload only files that match the specified pattern.", - "env": "SHOPIFY_FLAG_ONLY", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, - "multiple": true, - "name": "only", + "multiple": false, "type": "option" }, - "open": { - "allowNo": false, - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:env:push", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:generate:route": { + "aliases": [], + "args": { + "routeName": { + "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", + "name": "routeName", + "options": [ + "home", + "page", + "cart", + "products", + "collections", + "policies", + "blogs", + "account", + "search", + "robots", + "sitemap", + "tokenlessApi", + "all" + ], + "required": true + } + }, + "description": "Generates a standard Shopify route.", + "flags": { + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "adapter", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "poll": { + "typescript": { + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "allowNo": false, - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", "type": "boolean" }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", + "locale-param": { + "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "locale-param", "hasDynamicHelp": false, "multiple": false, - "name": "port", "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "allowNo": false, + "type": "boolean" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "store-password", "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:generate:route", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:generate:routes": { + "aliases": [], + "args": {}, + "description": "Generates all supported standard shopify routes.", + "flags": { + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "adapter", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "theme-editor-sync": { + "typescript": { + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "allowNo": false, - "description": "Synchronize Theme Editor updates in the local theme files.", - "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", - "name": "theme-editor-sync", "type": "boolean" }, - "verbose": { + "locale-param": { + "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "locale-param", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "theme:serve", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:generate:routes", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:share": { - "aliases": [ - ], + "hydrogen:setup:css": { + "aliases": [], "args": { + "strategy": { + "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", + "name": "strategy", + "options": [ + "tailwind", + "vanilla-extract", + "css-modules", + "postcss" + ] + } }, - "customPluginName": "@shopify/theme", - "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", - "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "description": "Setup CSS strategies for your project.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, "force": { - "allowNo": false, "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "type": "boolean" - }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "hasDynamicHelp": false, - "multiple": false, - "name": "listing", - "type": "option" - }, - "no-color": { "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "install-deps": { + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "allowNo": true, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:setup:css", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:setup:markets": { + "aliases": [], + "args": { + "strategy": { + "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", + "name": "strategy", + "options": [ + "subfolders", + "domains", + "subdomains" + ] + } + }, + "description": "Setup support for multiple markets in your project.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:setup:markets", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:setup:vite": { + "aliases": [], + "args": {}, + "description": "EXPERIMENTAL: Upgrades the project to use Vite.", + "flags": { "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:setup:vite", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "search": { + "aliases": [], + "args": { + "query": { + "name": "query" + } + }, + "description": "Starts a search on shopify.dev.", + "examples": [ + "# open the search modal on Shopify.dev\n shopify search\n\n # search for a term on Shopify.dev\n shopify search \n\n # search for a phrase on Shopify.dev\n shopify search \"\"\n " + ], + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "search", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "usage": "search [query]", + "enableJsonFlag": false + }, + "upgrade": { + "aliases": [], + "args": {}, + "description": "Shows details on how to upgrade Shopify CLI.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "upgrade", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Shows details on how to upgrade Shopify CLI.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI." + }, + "version": { + "aliases": [], + "args": {}, + "description": "Shopify CLI version currently installed.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "version", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "help": { + "aliases": [], + "args": { + "command": { + "description": "Command to show help for.", + "name": "command", + "required": false + } + }, + "description": "Display help for Shopify CLI", + "flags": { + "nested-commands": { + "char": "n", + "description": "Include all nested commands in the output.", + "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", + "name": "nested-commands", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "help", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": false, + "usage": "help [command] [flags]", + "enableJsonFlag": false + }, + "auth:logout": { + "aliases": [], + "args": {}, + "description": "Logs you out of the Shopify account or Partner account and store.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "auth:logout", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "auth:login": { + "aliases": [], + "args": {}, + "description": "Logs you in to your Shopify account.", + "flags": { + "alias": { + "description": "Alias of the session you want to login to.", + "env": "SHOPIFY_FLAG_AUTH_ALIAS", + "name": "alias", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { + "no-polling": { + "description": "Start the login flow without polling. Prints the auth URL and exits immediately.", + "env": "SHOPIFY_FLAG_AUTH_NO_POLLING", + "name": "no-polling", + "allowNo": false, + "type": "boolean" + }, + "resume": { + "description": "Resume a previously started login flow.", + "env": "SHOPIFY_FLAG_AUTH_RESUME", + "name": "resume", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "auth:login", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "auth:whoami": { + "aliases": [], + "args": {}, + "description": "Displays the currently logged-in Shopify account.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "auth:whoami", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "debug:command-flags": { + "aliases": [], + "args": {}, + "description": "View all the available command flags", + "flags": { + "csv": { + "description": "Output as CSV", + "env": "SHOPIFY_FLAG_OUTPUT_CSV", + "name": "csv", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "debug:command-flags", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "kitchen-sink": { + "aliases": [], + "args": {}, + "description": "View all the available UI kit components", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, "hiddenAliases": [ + "kitchen-sink all" ], - "id": "theme:share", - "multiEnvironmentsFlags": [ - "store", - "password", - "path" - ], + "id": "kitchen-sink", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name." + "enableJsonFlag": false }, - "upgrade": { - "aliases": [ - ], - "args": { - }, - "description": "Shows details on how to upgrade Shopify CLI.", - "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI.", - "enableJsonFlag": false, - "flags": { - }, + "kitchen-sink:async": { + "aliases": [], + "args": {}, + "description": "View the UI kit components that process async tasks", + "flags": {}, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "upgrade", + "hidden": true, + "hiddenAliases": [], + "id": "kitchen-sink:async", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Shows details on how to upgrade Shopify CLI." + "enableJsonFlag": false }, - "version": { - "aliases": [ - ], - "args": { - }, - "description": "Shopify CLI version currently installed.", - "enableJsonFlag": false, - "flags": { - }, + "kitchen-sink:prompts": { + "aliases": [], + "args": {}, + "description": "View the UI kit components prompts", + "flags": {}, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "version", + "hidden": true, + "hiddenAliases": [], + "id": "kitchen-sink:prompts", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "enableJsonFlag": false }, - "webhook:trigger": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "kitchen-sink:static": { + "aliases": [], + "args": {}, + "description": "View the UI kit components that display static output", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "kitchen-sink:static", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "doctor-release": { + "aliases": [], + "args": {}, + "description": "Run CLI doctor-release tests", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "doctor-release", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "doctor-release:theme": { + "aliases": [], + "args": {}, + "description": "Run all theme command doctor-release tests", "flags": { - "address": { - "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", - "env": "SHOPIFY_FLAG_ADDRESS", - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "address", - "required": false, - "type": "option" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "api-version": { - "description": "The API Version of the webhook topic.", - "env": "SHOPIFY_FLAG_API_VERSION", - "hasDynamicHelp": false, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "multiple": false, - "name": "api-version", - "required": false, - "type": "option" + "name": "verbose", + "allowNo": false, + "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "char": "p", + "description": "The path to run tests in. Defaults to current directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "default": "/Users/nickwesselman/src/shopify-cli/packages/cli", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, - "client-secret": { - "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", - "env": "SHOPIFY_FLAG_CLIENT_SECRET", + "environment": { + "char": "e", + "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "required": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-secret", - "required": false, "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "store": { + "char": "s", + "description": "Store URL (overrides environment).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "delivery-method": { - "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", - "env": "SHOPIFY_FLAG_DELIVERY_METHOD", + "password": { + "description": "Password from Theme Access app (overrides environment).", + "env": "SHOPIFY_FLAG_PASSWORD", + "name": "password", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "delivery-method", - "options": [ - "http", - "google-pub-sub", - "event-bridge" - ], - "required": false, "type": "option" - }, - "help": { - "allowNo": false, - "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", - "env": "SHOPIFY_FLAG_HELP", + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "doctor-release:theme", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "docs:generate": { + "aliases": [], + "args": {}, + "description": "Generate CLI commands documentation", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "docs:generate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "notifications:list": { + "aliases": [], + "args": {}, + "description": "List current notifications configured for the CLI.", + "flags": { + "ignore-errors": { + "description": "Don't fail if an error occurs.", + "env": "SHOPIFY_FLAG_IGNORE_ERRORS", "hidden": false, - "name": "help", - "required": false, - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "reset": { + "name": "ignore-errors", "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", "type": "boolean" - }, - "shared-secret": { - "description": "Deprecated. Please use client-secret.", - "env": "SHOPIFY_FLAG_SHARED_SECRET", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "shared-secret", - "required": false, - "type": "option" - }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "topic", - "required": false, - "type": "option" } }, "hasDynamicHelp": false, "hidden": true, - "hiddenAliases": [ - ], - "id": "webhook:trigger", + "hiddenAliases": [], + "id": "notifications:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "notifications:generate": { + "aliases": [], + "args": {}, + "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "notifications:generate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "cache:clear": { + "aliases": [], + "args": {}, + "description": "Clear the CLI cache, used to store some API responses and handle notifications status", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "cache:clear", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Trigger delivery of a sample webhook topic payload to a designated address." + "strict": true, + "enableJsonFlag": false } }, "version": "3.92.0" diff --git a/packages/cli/src/cli/commands/auth/login.test.ts b/packages/cli/src/cli/commands/auth/login.test.ts index 29401713c58..845945d0ee2 100644 --- a/packages/cli/src/cli/commands/auth/login.test.ts +++ b/packages/cli/src/cli/commands/auth/login.test.ts @@ -1,9 +1,11 @@ import Login from './login.js' import {describe, expect, vi, test} from 'vitest' import {promptSessionSelect} from '@shopify/cli-kit/node/session-prompt' +import {startDeviceAuthNoPolling, resumeDeviceAuth} from '@shopify/cli-kit/node/session' import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' vi.mock('@shopify/cli-kit/node/session-prompt') +vi.mock('@shopify/cli-kit/node/session') describe('Login command', () => { test('runs login without alias flag', async () => { @@ -40,5 +42,81 @@ describe('Login command', () => { expect(flags.alias).toBeDefined() expect(flags.alias.description).toBe('Alias of the session you want to login to.') expect(flags.alias.env).toBe('SHOPIFY_FLAG_AUTH_ALIAS') + expect(flags['no-polling']).toBeDefined() + expect(flags.resume).toBeDefined() + }) + + test('--no-polling starts device auth and prints URL', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(startDeviceAuthNoPolling).mockResolvedValue({ + verificationUriComplete: 'https://accounts.shopify.com/activate?user_code=ABCD-EFGH', + }) + + // When + await Login.run(['--no-polling']) + + // Then + expect(startDeviceAuthNoPolling).toHaveBeenCalledOnce() + expect(outputMock.info()).toMatch('shopify auth login --resume') + expect(promptSessionSelect).not.toHaveBeenCalled() + }) + + test('--resume succeeds and outputs alias', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(resumeDeviceAuth).mockResolvedValue({status: 'success', alias: 'user@example.com'}) + + // When + await Login.run(['--resume']) + + // Then + expect(resumeDeviceAuth).toHaveBeenCalledOnce() + expect(outputMock.output()).toMatch('Logged in as: user@example.com') + }) + + test('--resume exits with error when authorization is still pending', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(resumeDeviceAuth).mockResolvedValue({ + status: 'pending', + verificationUriComplete: 'https://accounts.shopify.com/activate?user_code=ABCD-EFGH', + }) + + // When + await expect(Login.run(['--resume'])).rejects.toThrow() + + // Then + expect(outputMock.error()).toMatch('Authorization is still pending.') + }) + + test('--resume exits with error when no pending auth exists', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(resumeDeviceAuth).mockResolvedValue({ + status: 'no_pending', + message: 'No pending login flow. Run `shopify auth login --no-polling` first.', + }) + + // When + await expect(Login.run(['--resume'])).rejects.toThrow() + + // Then + expect(outputMock.error()).toMatch('No pending login flow.') + }) + + test('--resume exits with error when auth has expired', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(resumeDeviceAuth).mockResolvedValue({ + status: 'expired', + message: 'The login flow has expired. Run `shopify auth login --no-polling` again.', + }) + + // When + await expect(Login.run(['--resume'])).rejects.toThrow() + + // Then + expect(outputMock.error()).toMatch('The login flow has expired.') }) }) diff --git a/packages/cli/src/cli/commands/auth/login.ts b/packages/cli/src/cli/commands/auth/login.ts index 992b311dd26..2a70790c613 100644 --- a/packages/cli/src/cli/commands/auth/login.ts +++ b/packages/cli/src/cli/commands/auth/login.ts @@ -1,7 +1,9 @@ import Command from '@shopify/cli-kit/node/base-command' import {promptSessionSelect} from '@shopify/cli-kit/node/session-prompt' +import {startDeviceAuthNoPolling, resumeDeviceAuth} from '@shopify/cli-kit/node/session' import {Flags} from '@oclif/core' -import {outputCompleted} from '@shopify/cli-kit/node/output' +import {outputCompleted, outputInfo} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/node/error' export default class Login extends Command { static description = 'Logs you in to your Shopify account.' @@ -11,10 +13,46 @@ export default class Login extends Command { description: 'Alias of the session you want to login to.', env: 'SHOPIFY_FLAG_AUTH_ALIAS', }), + 'no-polling': Flags.boolean({ + description: 'Start the login flow without polling. Prints the auth URL and exits immediately.', + default: false, + env: 'SHOPIFY_FLAG_AUTH_NO_POLLING', + }), + resume: Flags.boolean({ + description: 'Resume a previously started login flow.', + default: false, + env: 'SHOPIFY_FLAG_AUTH_RESUME', + }), } async run(): Promise { const {flags} = await this.parse(Login) + + if (flags['no-polling']) { + await startDeviceAuthNoPolling() + outputInfo('Run `shopify auth login --resume` to complete login after authorizing.') + return + } + + if (flags.resume) { + const result = await resumeDeviceAuth() + switch (result.status) { + case 'success': + outputCompleted(`Logged in as: ${result.alias}`) + return + case 'pending': + throw new AbortError( + 'Authorization is still pending.', + `Open ${result.verificationUriComplete} to authorize, then run \`shopify auth login --resume\` again.`, + ) + case 'expired': + case 'denied': + case 'no_pending': + throw new AbortError(result.message) + } + } + + // Default: interactive flow const result = await promptSessionSelect(flags.alias) outputCompleted(`Current account: ${result}.`) } diff --git a/packages/cli/src/cli/commands/auth/whoami.test.ts b/packages/cli/src/cli/commands/auth/whoami.test.ts new file mode 100644 index 00000000000..e87c2b32098 --- /dev/null +++ b/packages/cli/src/cli/commands/auth/whoami.test.ts @@ -0,0 +1,32 @@ +import Whoami from './whoami.js' +import {describe, expect, vi, test} from 'vitest' +import {getCurrentUserInfo} from '@shopify/cli-kit/node/session' +import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' + +vi.mock('@shopify/cli-kit/node/session') + +describe('Whoami command', () => { + test('outputs account alias when logged in', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(getCurrentUserInfo).mockResolvedValue({alias: 'user@example.com'}) + + // When + await Whoami.run([]) + + // Then + expect(outputMock.info()).toMatch('Logged in as: user@example.com') + }) + + test('exits with error when not logged in', async () => { + // Given + const outputMock = mockAndCaptureOutput() + vi.mocked(getCurrentUserInfo).mockResolvedValue(undefined) + + // When + await expect(Whoami.run([])).rejects.toThrow() + + // Then + expect(outputMock.error()).toMatch('Not logged in.') + }) +}) diff --git a/packages/cli/src/cli/commands/auth/whoami.ts b/packages/cli/src/cli/commands/auth/whoami.ts new file mode 100644 index 00000000000..d2e035aa008 --- /dev/null +++ b/packages/cli/src/cli/commands/auth/whoami.ts @@ -0,0 +1,17 @@ +import Command from '@shopify/cli-kit/node/base-command' +import {getCurrentUserInfo} from '@shopify/cli-kit/node/session' +import {outputInfo} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/node/error' + +export default class Whoami extends Command { + static description = 'Displays the currently logged-in Shopify account.' + + async run(): Promise { + const userInfo = await getCurrentUserInfo() + if (userInfo) { + outputInfo(`Logged in as: ${userInfo.alias}`) + } else { + throw new AbortError('Not logged in.', 'Run `shopify auth login` to log in.') + } + } +} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 4e762b6067d..3ec298714a4 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -4,6 +4,7 @@ import Search from './cli/commands/search.js' import Upgrade from './cli/commands/upgrade.js' import Logout from './cli/commands/auth/logout.js' import Login from './cli/commands/auth/login.js' +import Whoami from './cli/commands/auth/whoami.js' import CommandFlags from './cli/commands/debug/command-flags.js' import KitchenSinkAsync from './cli/commands/kitchen-sink/async.js' import KitchenSinkPrompts from './cli/commands/kitchen-sink/prompts.js' @@ -140,6 +141,7 @@ export const COMMANDS: any = { help: HelpCommand, 'auth:logout': Logout, 'auth:login': Login, + 'auth:whoami': Whoami, 'debug:command-flags': CommandFlags, 'kitchen-sink': KitchenSink, 'kitchen-sink:async': KitchenSinkAsync, From 0a48a96ead02970b2eda282b5270edefc91088ff Mon Sep 17 00:00:00 2001 From: Nick Wesselman <27013789+nickwesselman@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:09:19 -0400 Subject: [PATCH 2/2] Regenerate OCLIF manifests and E2E snapshots Co-Authored-By: Claude Opus 4.6 --- packages/cli/README.md | 13 + packages/cli/oclif.manifest.json | 10929 ++++++++++++--------- packages/e2e/data/snapshots/commands.txt | 3 +- 3 files changed, 6533 insertions(+), 4412 deletions(-) diff --git a/packages/cli/README.md b/packages/cli/README.md index 18888ef00cf..ea15b3afe8d 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -32,6 +32,7 @@ * [`shopify app webhook trigger`](#shopify-app-webhook-trigger) * [`shopify auth login`](#shopify-auth-login) * [`shopify auth logout`](#shopify-auth-logout) +* [`shopify auth whoami`](#shopify-auth-whoami) * [`shopify commands`](#shopify-commands) * [`shopify config autocorrect off`](#shopify-config-autocorrect-off) * [`shopify config autocorrect on`](#shopify-config-autocorrect-on) @@ -1078,6 +1079,18 @@ DESCRIPTION Logs you out of the Shopify account or Partner account and store. ``` +## `shopify auth whoami` + +Displays the currently logged-in Shopify account. + +``` +USAGE + $ shopify auth whoami + +DESCRIPTION + Displays the currently logged-in Shopify account. +``` + ## `shopify commands` List all shopify commands. diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index de48e608df9..3e962066b43 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -1,58 +1,55 @@ { "commands": { "app:build": { - "aliases": [], - "args": {}, + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", "description": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a \"theme app extension\" (https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", + "descriptionWithMarkdown": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a [theme app extension](https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-id", + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -60,82 +57,93 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, "skip-dependencies-installation": { + "allowNo": false, "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", "hidden": false, "name": "skip-dependencies-installation", + "type": "boolean" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], + "hiddenAliases": [ + ], "id": "app:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Build the app, including extensions.", - "descriptionWithMarkdown": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a [theme app extension](https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", - "customPluginName": "@shopify/app" + "summary": "Build the app, including extensions." }, "app:bulk:cancel": { - "aliases": [], - "args": {}, + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", "description": "Cancels a running bulk operation by ID.", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, "hidden": false, + "multiple": false, "name": "config", + "type": "option" + }, + "id": { + "description": "The bulk operation ID to cancel (numeric ID or full GID).", + "env": "SHOPIFY_FLAG_ID", "hasDynamicHelp": false, "multiple": false, + "name": "id", + "required": true, "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-id", + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -143,30 +151,29 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "id": { - "description": "The bulk operation ID to cancel (numeric ID or full GID).", - "env": "SHOPIFY_FLAG_ID", - "name": "id", - "required": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, "store": { "char": "s", "description": "The store domain. Must be an existing dev store.", "env": "SHOPIFY_FLAG_STORE", - "name": "store", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], + "hiddenAliases": [ + ], "id": "app:bulk:cancel", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", @@ -2028,58 +2035,84 @@ "customPluginName": "@shopify/app" }, "app:bulk:execute": { - "aliases": [], - "args": {}, + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", "description": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk status`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk status`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" + "output-file": { + "dependsOn": [ + "watch" + ], + "description": "The file path where results should be written if --watch is specified. If not specified, results will be written to STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "hasDynamicHelp": false, + "multiple": false, + "name": "output-file", + "type": "option" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", + "query": { + "char": "q", + "description": "The GraphQL query or mutation to run as a bulk operation.", + "env": "SHOPIFY_FLAG_QUERY", "hasDynamicHelp": false, "multiple": false, + "name": "query", + "required": false, "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "client-id", + "query-file": { + "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", + "env": "SHOPIFY_FLAG_QUERY_FILE", "hasDynamicHelp": false, "multiple": false, + "name": "query-file", "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2087,25 +2120,26 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "query": { - "char": "q", - "description": "The GraphQL query or mutation to run as a bulk operation.", - "env": "SHOPIFY_FLAG_QUERY", - "name": "query", - "required": false, + "store": { + "char": "s", + "description": "The store domain. Must be an existing dev store.", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "query-file": { - "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", - "env": "SHOPIFY_FLAG_QUERY_FILE", - "name": "query-file", + "variable-file": { + "description": "Path to a file containing GraphQL variables in JSONL format (one JSON object per line). Can't be used with --variables.", + "env": "SHOPIFY_FLAG_VARIABLE_FILE", + "exclusive": [ + "variables" + ], "hasDynamicHelp": false, "multiple": false, + "name": "variable-file", "type": "option" }, "variables": { @@ -2115,123 +2149,103 @@ "exclusive": [ "variable-file" ], - "name": "variables", "hasDynamicHelp": false, "multiple": true, + "name": "variables", "type": "option" }, - "variable-file": { - "description": "Path to a file containing GraphQL variables in JSONL format (one JSON object per line). Can't be used with --variables.", - "env": "SHOPIFY_FLAG_VARIABLE_FILE", - "exclusive": [ - "variables" - ], - "name": "variable-file", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" }, - "store": { - "char": "s", - "description": "The store domain. Must be an existing dev store.", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "version": { + "description": "The API version to use for the bulk operation. If not specified, uses the latest stable version.", + "env": "SHOPIFY_FLAG_VERSION", "hasDynamicHelp": false, "multiple": false, + "name": "version", "type": "option" }, "watch": { + "allowNo": false, "description": "Wait for bulk operation results before exiting. Defaults to false.", "env": "SHOPIFY_FLAG_WATCH", "name": "watch", - "allowNo": false, "type": "boolean" - }, - "output-file": { - "dependsOn": [ - "watch" - ], - "description": "The file path where results should be written if --watch is specified. If not specified, results will be written to STDOUT.", - "env": "SHOPIFY_FLAG_OUTPUT_FILE", - "name": "output-file", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "version": { - "description": "The API version to use for the bulk operation. If not specified, uses the latest stable version.", - "env": "SHOPIFY_FLAG_VERSION", - "name": "version", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], + "hiddenAliases": [ + ], "id": "app:bulk:execute", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute bulk operations.", - "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk status`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", - "customPluginName": "@shopify/app" + "summary": "Execute bulk operations." }, - "app:generate:schema": { - "aliases": [], - "args": {}, - "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "app:bulk:status": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", + "descriptionWithMarkdown": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, "hidden": false, + "multiple": false, "name": "config", + "type": "option" + }, + "id": { + "description": "The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations belonging to this app on this store in the last 7 days.", + "env": "SHOPIFY_FLAG_ID", "hasDynamicHelp": false, "multiple": false, + "name": "id", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-id", + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2239,83 +2253,86 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "stdout": { - "description": "Output the schema to stdout instead of writing to a file.", - "env": "SHOPIFY_FLAG_STDOUT", - "name": "stdout", - "required": false, + "store": { + "char": "s", + "description": "The store domain. Must be an existing dev store.", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "app:generate:schema", + "hiddenAliases": [ + ], + "id": "app:bulk:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Fetch the latest GraphQL schema for a function.", - "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "customPluginName": "@shopify/app" + "strict": true, + "summary": "Check the status of bulk operations." }, - "app:function:build": { - "aliases": [], - "args": {}, - "description": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", + "app:config:link": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", + "descriptionWithMarkdown": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-id", + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2323,75 +2340,77 @@ ], "hidden": false, "name": "reset", + "type": "boolean" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:function:build", + "hiddenAliases": [ + ], + "id": "app:config:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Compile a function to wasm.", - "descriptionWithMarkdown": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", - "customPluginName": "@shopify/app" + "summary": "Fetch your app configuration from the Developer Dashboard." }, - "app:function:replay": { - "aliases": [], - "args": {}, - "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", + "app:config:pull": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", + "descriptionWithMarkdown": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-id", + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2399,102 +2418,71 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", + "verbose": { "allowNo": false, - "type": "boolean" - }, - "log": { - "char": "l", - "description": "Specifies a log identifier to replay instead of selecting from a list. The identifier is provided in the output of `shopify app dev` and is the suffix of the log file name.", - "env": "SHOPIFY_FLAG_LOG", - "name": "log", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "watch": { - "char": "w", - "description": "Re-run the function when the source code changes.", - "env": "SHOPIFY_FLAG_WATCH", + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "watch", - "allowNo": true, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:function:replay", + "hiddenAliases": [ + ], + "id": "app:config:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Replays a function run from an app log.", - "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", - "customPluginName": "@shopify/app" + "summary": "Refresh an already-linked app configuration without prompts." }, - "app:function:run": { - "aliases": [], - "args": {}, - "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", + "app:config:use": { + "aliases": [ + ], + "args": { + "config": { + "description": "The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'.", + "name": "config" + } + }, + "customPluginName": "@shopify/app", + "description": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", + "descriptionWithMarkdown": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, "type": "boolean" }, "path": { - "description": "The path to your function directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "client-id", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2502,188 +2490,131 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", + "verbose": { "allowNo": false, - "type": "boolean" - }, - "input": { - "char": "i", - "description": "The input JSON to pass to the function. If omitted, standard input is used.", - "env": "SHOPIFY_FLAG_INPUT", - "name": "input", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "export": { - "char": "e", - "description": "Name of the WebAssembly export to invoke.", - "env": "SHOPIFY_FLAG_EXPORT", + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "export", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:function:run", + "hiddenAliases": [ + ], + "id": "app:config:use", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Run a function locally for testing.", - "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", - "customPluginName": "@shopify/app" + "summary": "Activate an app configuration.", + "usage": "app config use [config] [flags]" }, - "app:function:info": { - "aliases": [], - "args": {}, - "description": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", + "app:deploy": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\"Builds the app\" (https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your \"web app\" (https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to \"deploy your web app\" (https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", + "descriptionWithMarkdown": "[Builds the app](https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your [web app](https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to [deploy your web app](https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", + "allow-deletes": { "allowNo": false, + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "allow-updates": { "allowNo": false, + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", "type": "boolean" }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], "hidden": false, - "name": "client-id", - "hasDynamicHelp": false, "multiple": false, + "name": "config", "type": "option" }, - "reset": { - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", + "force": { "allowNo": false, + "char": "f", + "description": "[Deprecated] Deploy without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": false, + "name": "force", "type": "boolean" }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", + "message": { + "description": "Optional message that will be associated with this version. This is for internal use only and won't be available externally.", + "env": "SHOPIFY_FLAG_MESSAGE", + "hasDynamicHelp": false, "hidden": false, - "name": "json", + "multiple": false, + "name": "message", + "type": "option" + }, + "no-build": { "allowNo": false, + "description": "Use with caution: Skips building any elements of the app that require building. You should ensure your app has been prepared in advance, such as by running `shopify app build` or by caching build artifacts.", + "env": "SHOPIFY_FLAG_NO_BUILD", + "name": "no-build", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:function:info", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Print basic information about your function.", - "descriptionWithMarkdown": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", - "customPluginName": "@shopify/app" - }, - "app:function:schema": { - "aliases": [], - "args": {}, - "description": "Generates the latest \"GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "flags": { + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "no-release": { "allowNo": false, + "description": "Creates a version but doesn't release it - it's not made available to merchants. With this flag, a user confirmation is not required.", + "env": "SHOPIFY_FLAG_NO_RELEASE", + "exclusive": [ + "allow-updates", + "allow-deletes" + ], + "hidden": false, + "name": "no-release", "type": "boolean" }, "path": { - "description": "The path to your function directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "client-id", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2691,158 +2622,144 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "stdout": { - "description": "Output the schema to stdout instead of writing to a file.", - "env": "SHOPIFY_FLAG_STDOUT", - "name": "stdout", - "required": false, + "source-control-url": { + "description": "URL associated with the new app version.", + "env": "SHOPIFY_FLAG_SOURCE_CONTROL_URL", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "source-control-url", + "type": "option" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" + }, + "version": { + "description": "Optional version tag that will be associated with this app version. If not provided, an auto-generated identifier will be generated for this app version.", + "env": "SHOPIFY_FLAG_VERSION", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "version", + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:function:schema", + "hiddenAliases": [ + ], + "id": "app:deploy", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Fetch the latest GraphQL schema for a function.", - "descriptionWithMarkdown": "Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "customPluginName": "@shopify/app" + "summary": "Deploy your Shopify app." }, - "app:function:typegen": { - "aliases": [], - "args": {}, - "description": "Creates GraphQL types based on your \"input query\" (https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", + "app:dev": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Builds and previews your app on a dev store, and watches for changes. \"Read more about testing apps locally\" (https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", + "descriptionWithMarkdown": "Builds and previews your app on a dev store, and watches for changes. [Read more about testing apps locally](https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" + "checkout-cart-url": { + "description": "Resource URL for checkout UI extension. Format: \"/cart/{productVariantID}:{productQuantity}\"", + "env": "SHOPIFY_FLAG_CHECKOUT_CART_URL", + "hasDynamicHelp": false, + "multiple": false, + "name": "checkout-cart-url", + "type": "option" }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", - "hidden": false, - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, "hidden": false, + "multiple": false, "name": "config", + "type": "option" + }, + "graphiql-key": { + "description": "Key used to authenticate GraphiQL requests. By default, a key is automatically derived from the app secret. Use this flag to override with a custom key.", + "env": "SHOPIFY_FLAG_GRAPHIQL_KEY", "hasDynamicHelp": false, + "hidden": true, "multiple": false, + "name": "graphiql-key", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "client-id", + "graphiql-port": { + "description": "Local port of the GraphiQL development server.", + "env": "SHOPIFY_FLAG_GRAPHIQL_PORT", "hasDynamicHelp": false, + "hidden": true, "multiple": false, + "name": "graphiql-port", + "type": "option" + }, + "localhost-port": { + "description": "Port to use for localhost.", + "env": "SHOPIFY_FLAG_LOCALHOST_PORT", + "hasDynamicHelp": false, + "multiple": false, + "name": "localhost-port", "type": "option" }, - "reset": { - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", - "allowNo": false, - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:function:typegen", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Generate GraphQL types for a function.", - "descriptionWithMarkdown": "Creates GraphQL types based on your [input query](https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", - "customPluginName": "@shopify/app" - }, - "app:generate:extension": { - "aliases": [], - "args": {}, - "description": "Generates a new \"app extension\" (https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to \"Supported extensions\" (https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to \"App structure\" (https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.\n ", - "flags": { "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "no-update": { "allowNo": false, + "description": "Uses the app URL from the toml file instead an autogenerated URL for dev.", + "env": "SHOPIFY_FLAG_NO_UPDATE", + "name": "no-update", "type": "boolean" }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "hasDynamicHelp": false, + "multiple": false, + "name": "notify", + "type": "option" + }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "client-id", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2850,84 +2767,97 @@ ], "hidden": false, "name": "reset", + "type": "boolean" + }, + "skip-dependencies-installation": { "allowNo": false, + "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", + "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", + "name": "skip-dependencies-installation", "type": "boolean" }, - "type": { - "char": "t", - "description": "Deprecated. Please use --template", - "env": "SHOPIFY_FLAG_EXTENSION_TYPE", - "hidden": false, - "name": "type", + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "template": { - "char": "t", - "description": "Extension template", - "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", - "hidden": false, - "name": "template", + "subscription-product-url": { + "description": "Resource URL for subscription UI extension. Format: \"/products/{productId}\"", + "env": "SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL", "hasDynamicHelp": false, "multiple": false, + "name": "subscription-product-url", "type": "option" }, - "name": { - "char": "n", - "description": "name of your Extension", - "env": "SHOPIFY_FLAG_NAME", - "hidden": false, - "name": "name", + "theme": { + "char": "t", + "description": "Theme ID or name of the theme app extension host theme.", + "env": "SHOPIFY_FLAG_THEME", "hasDynamicHelp": false, "multiple": false, + "name": "theme", "type": "option" }, - "clone-url": { - "char": "u", - "description": "The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples", - "env": "SHOPIFY_FLAG_CLONE_URL", - "hidden": true, - "name": "clone-url", + "theme-app-extension-port": { + "description": "Local port of the theme app extension development server.", + "env": "SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT", "hasDynamicHelp": false, "multiple": false, + "name": "theme-app-extension-port", "type": "option" }, - "flavor": { - "description": "Choose a starting template for your extension, where applicable", - "env": "SHOPIFY_FLAG_FLAVOR", - "hidden": false, - "name": "flavor", + "tunnel-url": { + "description": "Use a custom tunnel, it must be running before executing dev. Format: \"https://my-tunnel-url:port\".", + "env": "SHOPIFY_FLAG_TUNNEL_URL", + "exclusive": [ + "tunnel" + ], "hasDynamicHelp": false, "multiple": false, - "options": [ - "vanilla-js", - "react", - "typescript", - "typescript-react", - "wasm", - "rust" - ], + "name": "tunnel-url", "type": "option" + }, + "use-localhost": { + "allowNo": false, + "description": "Service entry point will listen to localhost. A tunnel won't be used. Will work for testing many app features, but not those that directly invoke your app (E.g: Webhooks)", + "env": "SHOPIFY_FLAG_USE_LOCALHOST", + "exclusive": [ + "tunnel-url" + ], + "name": "use-localhost", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:generate:extension", + "hiddenAliases": [ + ], + "id": "app:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Generate a new app Extension." + "summary": "Run the app." }, - "app:generate:schema": { + "app:dev:clean": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "description": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", + "descriptionWithMarkdown": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -2960,10 +2890,9 @@ "type": "boolean" }, "path": { - "description": "The path to your function directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, - "hidden": false, "multiple": false, "name": "path", "noCacheDefault": true, @@ -2980,13 +2909,15 @@ "name": "reset", "type": "boolean" }, - "stdout": { - "allowNo": false, - "description": "Output the schema to stdout instead of writing to a file.", - "env": "SHOPIFY_FLAG_STDOUT", - "name": "stdout", - "required": false, - "type": "boolean" + "store": { + "char": "s", + "description": "Store URL. Must be an existing development store.", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "store", + "type": "option" }, "verbose": { "allowNo": false, @@ -2998,23 +2929,23 @@ } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], - "id": "app:generate:schema", + "id": "app:dev:clean", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Fetch the latest GraphQL schema for a function." + "strict": true, + "summary": "Cleans up the dev preview from the selected store." }, - "app:import-custom-data-definitions": { + "app:env:pull": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", - "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "description": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", + "descriptionWithMarkdown": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -3038,12 +2969,14 @@ "name": "config", "type": "option" }, - "include-existing": { - "allowNo": false, - "description": "Include existing declared definitions in the output.", - "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", - "name": "include-existing", - "type": "boolean" + "env-file": { + "description": "Specify an environment file to update if the update flag is set", + "env": "SHOPIFY_FLAG_ENV_FILE", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "env-file", + "type": "option" }, "no-color": { "allowNo": false, @@ -3073,15 +3006,6 @@ "name": "reset", "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, "verbose": { "allowNo": false, "description": "Increase the verbosity of the output.", @@ -3094,20 +3018,21 @@ "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:import-custom-data-definitions", + "id": "app:env:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Import metafield and metaobject definitions." + "summary": "Pull app and extensions environment variables." }, - "app:import-extensions": { + "app:env:show": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "Import dashboard-managed extensions into your app.", + "description": "Displays environment variables that can be used to deploy apps and app extensions.", + "descriptionWithMarkdown": "Displays environment variables that can be used to deploy apps and app extensions.", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -3171,20 +3096,21 @@ "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:import-extensions", + "id": "app:env:show", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Display app and extensions environment variables." }, - "app:info": { + "app:execute": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", - "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "description": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -3208,15 +3134,6 @@ "name": "config", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, "no-color": { "allowNo": false, "description": "Disable color output.", @@ -3225,6 +3142,14 @@ "name": "no-color", "type": "boolean" }, + "output-file": { + "description": "The file name where results should be written, instead of STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "hasDynamicHelp": false, + "multiple": false, + "name": "output-file", + "type": "option" + }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", @@ -3234,6 +3159,24 @@ "noCacheDefault": true, "type": "option" }, + "query": { + "char": "q", + "description": "The GraphQL query or mutation, as a string.", + "env": "SHOPIFY_FLAG_QUERY", + "hasDynamicHelp": false, + "multiple": false, + "name": "query", + "required": false, + "type": "option" + }, + "query-file": { + "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", + "env": "SHOPIFY_FLAG_QUERY_FILE", + "hasDynamicHelp": false, + "multiple": false, + "name": "query-file", + "type": "option" + }, "reset": { "allowNo": false, "description": "Reset all your settings.", @@ -3245,129 +3188,36 @@ "name": "reset", "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" + "store": { + "char": "s", + "description": "The myshopify.com domain of the store to execute against. The app must be installed on the store. If not specified, you will be prompted to select a store.", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" }, - "web-env": { - "allowNo": false, - "description": "Outputs environment variables necessary for running and deploying web/.", - "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", - "hidden": false, - "name": "web-env", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:info", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Print basic information about your app and extensions." - }, - "app:init": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "flags": { - "client-id": { - "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", - "env": "SHOPIFY_FLAG_CLIENT_ID", + "variable-file": { + "description": "Path to a file containing GraphQL variables in JSON format. Can't be used with --variables.", + "env": "SHOPIFY_FLAG_VARIABLE_FILE", "exclusive": [ - "config" + "variables" ], "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "flavor": { - "description": "Which flavor of the given template to use.", - "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", - "hasDynamicHelp": false, - "multiple": false, - "name": "flavor", - "type": "option" - }, - "local": { - "allowNo": false, - "char": "l", - "env": "SHOPIFY_FLAG_LOCAL", - "hidden": true, - "name": "local", - "type": "boolean" - }, - "name": { - "char": "n", - "description": "The name for the new app. When provided, skips the app selection prompt and creates a new app with this name.", - "env": "SHOPIFY_FLAG_NAME", - "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "name", + "name": "variable-file", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "organization-id": { - "description": "The organization ID. Your organization ID can be found in your Dev Dashboard URL: https://dev.shopify.com/dashboard/", - "env": "SHOPIFY_FLAG_ORGANIZATION_ID", + "variables": { + "char": "v", + "description": "The values for any GraphQL variables in your query or mutation, in JSON format.", + "env": "SHOPIFY_FLAG_VARIABLES", "exclusive": [ - "client-id" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "organization-id", - "type": "option" - }, - "package-manager": { - "char": "d", - "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "package-manager", - "options": [ - "npm", - "yarn", - "pnpm", - "bun" + "variable-file" ], - "type": "option" - }, - "path": { - "char": "p", - "default": ".", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "path", - "type": "option" - }, - "template": { - "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", - "env": "SHOPIFY_FLAG_TEMPLATE", "hasDynamicHelp": false, "multiple": false, - "name": "template", + "name": "variables", "type": "option" }, "verbose": { @@ -3377,26 +3227,34 @@ "hidden": false, "name": "verbose", "type": "boolean" + }, + "version": { + "description": "The API version to use for the query or mutation. Defaults to the latest stable version.", + "env": "SHOPIFY_FLAG_VERSION", + "hasDynamicHelp": false, + "multiple": false, + "name": "version", + "type": "option" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:init", + "id": "app:execute", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Create a new app project" + "summary": "Execute GraphQL queries and mutations." }, - "app:logs": { + "app:function:build": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", - "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "description": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", + "descriptionWithMarkdown": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -3420,15 +3278,6 @@ "name": "config", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, "no-color": { "allowNo": false, "description": "Disable color output.", @@ -3438,9 +3287,10 @@ "type": "boolean" }, "path": { - "description": "The path to your app directory.", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, "name": "path", "noCacheDefault": true, @@ -3457,35 +3307,6 @@ "name": "reset", "type": "boolean" }, - "source": { - "description": "Filters output to the specified log source.", - "env": "SHOPIFY_FLAG_SOURCE", - "hasDynamicHelp": false, - "multiple": true, - "name": "source", - "type": "option" - }, - "status": { - "description": "Filters output to the specified status (success or failure).", - "env": "SHOPIFY_FLAG_STATUS", - "hasDynamicHelp": false, - "multiple": false, - "name": "status", - "options": [ - "success", - "failure" - ], - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "store", - "type": "option" - }, "verbose": { "allowNo": false, "description": "Increase the verbosity of the output.", @@ -3498,21 +3319,21 @@ "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:logs", + "id": "app:function:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Stream detailed logs for your Shopify app." + "summary": "Compile a function to wasm." }, - "app:logs:sources": { + "app:function:info": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", - "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "description": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", "flags": { "client-id": { "description": "The Client ID of your app.", @@ -3536,6 +3357,15 @@ "name": "config", "type": "option" }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, "no-color": { "allowNo": false, "description": "Disable color output.", @@ -3545,9 +3375,10 @@ "type": "boolean" }, "path": { - "description": "The path to your app directory.", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, "name": "path", "noCacheDefault": true, @@ -3576,38 +3407,22 @@ "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:logs:sources", + "id": "app:function:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print out a list of sources that may be used with the logs command." + "summary": "Print basic information about your function." }, - "app:release": { + "app:function:replay": { "aliases": [ ], "args": { }, "customPluginName": "@shopify/app", - "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", - "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", + "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", "flags": { - "allow-deletes": { - "allowNo": false, - "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_ALLOW_DELETES", - "hidden": false, - "name": "allow-deletes", - "type": "boolean" - }, - "allow-updates": { - "allowNo": false, - "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", - "env": "SHOPIFY_FLAG_ALLOW_UPDATES", - "hidden": false, - "name": "allow-updates", - "type": "boolean" - }, "client-id": { "description": "The Client ID of your app.", "env": "SHOPIFY_FLAG_CLIENT_ID", @@ -3630,15 +3445,24 @@ "name": "config", "type": "option" }, - "force": { + "json": { "allowNo": false, - "char": "f", - "description": "[Deprecated] Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", - "env": "SHOPIFY_FLAG_FORCE", + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "force", + "name": "json", "type": "boolean" }, + "log": { + "char": "l", + "description": "Specifies a log identifier to replay instead of selecting from a list. The identifier is provided in the output of `shopify app dev` and is the suffix of the log file name.", + "env": "SHOPIFY_FLAG_LOG", + "hasDynamicHelp": false, + "multiple": false, + "name": "log", + "type": "option" + }, "no-color": { "allowNo": false, "description": "Disable color output.", @@ -3648,9 +3472,10 @@ "type": "boolean" }, "path": { - "description": "The path to your app directory.", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, "name": "path", "noCacheDefault": true, @@ -3675,81 +3500,105 @@ "name": "verbose", "type": "boolean" }, - "version": { - "description": "The name of the app version to release.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, + "watch": { + "allowNo": true, + "char": "w", + "description": "Re-run the function when the source code changes.", + "env": "SHOPIFY_FLAG_WATCH", "hidden": false, - "multiple": false, - "name": "version", - "required": true, - "type": "option" + "name": "watch", + "type": "boolean" } }, "hasDynamicHelp": false, "hiddenAliases": [ ], - "id": "app:release", + "id": "app:function:replay", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Release an app version.", - "usage": "app release --version " + "summary": "Replays a function run from an app log." }, - "app:versions:list": { - "aliases": [], - "args": {}, - "description": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", - "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "app:function:run": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", + "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, "hidden": false, + "multiple": false, "name": "config", + "type": "option" + }, + "export": { + "char": "e", + "description": "Name of the WebAssembly export to invoke.", + "env": "SHOPIFY_FLAG_EXPORT", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "export", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "input": { + "char": "i", + "description": "The input JSON to pass to the function. If omitted, standard input is used.", + "env": "SHOPIFY_FLAG_INPUT", + "hasDynamicHelp": false, + "multiple": false, + "name": "input", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "client-id", + "name": "json", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -3757,67 +3606,78 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:versions:list", + "hiddenAliases": [ + ], + "id": "app:function:run", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "List deployed versions of your app.", - "descriptionWithMarkdown": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", - "customPluginName": "@shopify/app" + "summary": "Run a function locally for testing." }, - "app:webhook:trigger": { - "aliases": [], - "args": {}, - "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "app:function:schema": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Generates the latest \"GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "descriptionWithMarkdown": "Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", "flags": { - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-id", + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "reset": { + "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -3825,4925 +3685,7172 @@ ], "hidden": false, "name": "reset", - "allowNo": false, "type": "boolean" }, - "help": { - "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", - "env": "SHOPIFY_FLAG_HELP", - "hidden": false, - "name": "help", - "required": false, + "stdout": { "allowNo": false, + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, "type": "boolean" }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "topic", - "required": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:function:schema", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Fetch the latest GraphQL schema for a function." + }, + "app:function:typegen": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Creates GraphQL types based on your \"input query\" (https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", + "descriptionWithMarkdown": "Creates GraphQL types based on your [input query](https://shopify.dev/docs/apps/functions/input-output#input) for a function. Supports JavaScript functions out of the box, or any language via the `build.typegen_command` configuration.", + "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "api-version": { - "description": "The API Version of the webhook topic.", - "env": "SHOPIFY_FLAG_API_VERSION", "hidden": false, - "name": "api-version", - "required": false, - "hasDynamicHelp": false, "multiple": false, + "name": "client-id", "type": "option" }, - "delivery-method": { - "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", - "env": "SHOPIFY_FLAG_DELIVERY_METHOD", - "hidden": false, - "name": "delivery-method", - "required": false, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, - "multiple": false, - "options": [ - "http", - "google-pub-sub", - "event-bridge" - ], - "type": "option" - }, - "shared-secret": { - "description": "Deprecated. Please use client-secret.", - "env": "SHOPIFY_FLAG_SHARED_SECRET", "hidden": false, - "name": "shared-secret", - "required": false, - "hasDynamicHelp": false, "multiple": false, + "name": "config", "type": "option" }, - "client-secret": { - "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", - "env": "SHOPIFY_FLAG_CLIENT_SECRET", + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "client-secret", - "required": false, + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "address": { - "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", - "env": "SHOPIFY_FLAG_ADDRESS", + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "name": "address", - "required": false, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "name": "reset", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "app:webhook:trigger", + "hiddenAliases": [ + ], + "id": "app:function:typegen", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Trigger delivery of a sample webhook topic payload to a designated address.", - "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "customPluginName": "@shopify/app" + "summary": "Generate GraphQL types for a function." }, - "webhook:trigger": { - "aliases": [], - "args": {}, - "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "app:generate:extension": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Generates a new \"app extension\" (https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to \"Supported extensions\" (https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to \"App structure\" (https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.\n ", + "descriptionWithMarkdown": "Generates a new [app extension](https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to [Supported extensions](https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to [App structure](https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.\n ", "flags": { - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, "client-id": { "description": "The Client ID of your app.", "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], - "hidden": false, - "name": "client-id", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, - "reset": { - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", - "allowNo": false, - "type": "boolean" - }, - "help": { - "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", - "env": "SHOPIFY_FLAG_HELP", - "hidden": false, - "name": "help", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", - "hidden": false, - "name": "topic", - "required": false, + "clone-url": { + "char": "u", + "description": "The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples", + "env": "SHOPIFY_FLAG_CLONE_URL", "hasDynamicHelp": false, + "hidden": true, "multiple": false, + "name": "clone-url", "type": "option" }, - "api-version": { - "description": "The API Version of the webhook topic.", - "env": "SHOPIFY_FLAG_API_VERSION", - "hidden": false, - "name": "api-version", - "required": false, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "delivery-method": { - "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", - "env": "SHOPIFY_FLAG_DELIVERY_METHOD", - "hidden": false, - "name": "delivery-method", - "required": false, + "flavor": { + "description": "Choose a starting template for your extension, where applicable", + "env": "SHOPIFY_FLAG_FLAVOR", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "flavor", "options": [ - "http", - "google-pub-sub", - "event-bridge" + "vanilla-js", + "react", + "typescript", + "typescript-react", + "wasm", + "rust" ], "type": "option" }, - "shared-secret": { - "description": "Deprecated. Please use client-secret.", - "env": "SHOPIFY_FLAG_SHARED_SECRET", - "hidden": false, - "name": "shared-secret", - "required": false, + "name": { + "char": "n", + "description": "name of your Extension", + "env": "SHOPIFY_FLAG_NAME", "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "client-secret": { - "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", - "env": "SHOPIFY_FLAG_CLIENT_SECRET", "hidden": false, - "name": "client-secret", - "required": false, - "hasDynamicHelp": false, "multiple": false, + "name": "name", "type": "option" }, - "address": { - "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", - "env": "SHOPIFY_FLAG_ADDRESS", - "hidden": false, - "name": "address", - "required": false, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "webhook:trigger", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "summary": "Trigger delivery of a sample webhook topic payload to a designated address.", - "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "customPluginName": "@shopify/app" - }, - "demo:watcher": { - "aliases": [], - "args": {}, - "flags": { "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hidden": false, - "name": "config", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", "exclusive": [ "config" ], "hidden": false, - "name": "client-id", + "name": "reset", + "type": "boolean" + }, + "template": { + "char": "t", + "description": "Extension template", + "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "template", "type": "option" }, - "reset": { - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], + "type": { + "char": "t", + "description": "Deprecated. Please use --template", + "env": "SHOPIFY_FLAG_EXTENSION_TYPE", + "hasDynamicHelp": false, "hidden": false, - "name": "reset", + "multiple": false, + "name": "type", + "type": "option" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "demo:watcher", + "hiddenAliases": [ + ], + "id": "app:generate:extension", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Watch and prints out changes to an app.", - "customPluginName": "@shopify/app" + "summary": "Generate a new app Extension." }, - "organization:list": { - "aliases": [], - "args": {}, - "description": "Lists the Shopify organizations that you have access to, along with their organization IDs.", + "app:generate:schema": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "stdout": { "allowNo": false, + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "organization:list", + "hidden": true, + "hiddenAliases": [ + ], + "id": "app:generate:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "List Shopify organizations you have access to.", - "enableJsonFlag": false, - "descriptionWithMarkdown": "Lists the Shopify organizations that you have access to, along with their organization IDs.", - "customPluginName": "@shopify/app" + "summary": "Fetch the latest GraphQL schema for a function." }, - "theme:init": { - "aliases": [], + "app:import-custom-data-definitions": { + "aliases": [ + ], "args": { - "name": { - "description": "Name of the new theme", - "name": "name", - "required": false - } }, - "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "customPluginName": "@shopify/app", + "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, "hidden": false, - "name": "no-color", + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, + "include-existing": { "allowNo": false, + "description": "Include existing declared definitions in the output.", + "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", + "name": "include-existing", "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "clone-url": { - "char": "u", - "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", - "env": "SHOPIFY_FLAG_CLONE_URL", - "name": "clone-url", - "default": "https://github.com/Shopify/skeleton-theme.git", + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "latest": { - "char": "l", - "description": "Downloads the latest release of the `clone-url`", - "env": "SHOPIFY_FLAG_LATEST", - "name": "latest", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:init", + "hiddenAliases": [ + ], + "id": "app:import-custom-data-definitions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Clones a Git repository to use as a starting point for building a new theme.", - "usage": "theme init [name] [flags]", - "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "summary": "Import metafield and metaobject definitions." }, - "theme:check": { - "aliases": [], - "args": {}, - "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", + "app:import-extensions": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Import dashboard-managed extensions into your app.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, "type": "boolean" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "auto-correct": { - "char": "a", - "description": "Automatically fix offenses", - "env": "SHOPIFY_FLAG_AUTO_CORRECT", - "name": "auto-correct", - "required": false, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, - "config": { - "char": "C", - "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", - "env": "SHOPIFY_FLAG_CONFIG", - "name": "config", - "required": false, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "fail-level": { - "description": "Minimum severity for exit with error code", - "env": "SHOPIFY_FLAG_FAIL_LEVEL", - "name": "fail-level", - "required": false, - "default": "error", - "hasDynamicHelp": false, - "multiple": false, - "options": [ - "crash", - "error", - "suggestion", - "style", - "warning", - "info" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:import-extensions", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "app:info": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", "type": "option" }, - "init": { - "description": "Generate a .theme-check.yml file", - "env": "SHOPIFY_FLAG_INIT", - "name": "init", - "required": false, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, + "json": { "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "type": "boolean" }, - "list": { - "description": "List enabled checks", - "env": "SHOPIFY_FLAG_LIST", - "name": "list", - "required": false, + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "output": { - "char": "o", - "description": "The output format to use", - "env": "SHOPIFY_FLAG_OUTPUT", - "name": "output", - "required": false, - "default": "text", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "options": [ - "text", - "json" - ], + "name": "path", + "noCacheDefault": true, "type": "option" }, - "print": { - "description": "Output active config to STDOUT", - "env": "SHOPIFY_FLAG_PRINT", - "name": "print", - "required": false, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, - "version": { - "char": "v", - "description": "Print Theme Check version", - "env": "SHOPIFY_FLAG_VERSION", - "name": "version", - "required": false, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" + "web-env": { + "allowNo": false, + "description": "Outputs environment variables necessary for running and deploying web/.", + "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", + "hidden": false, + "name": "web-env", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:check", + "hiddenAliases": [ + ], + "id": "app:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Validate the theme.", - "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", - "multiEnvironmentsFlags": [ - "path" - ], - "customPluginName": "@shopify/theme" + "summary": "Print basic information about your app and extensions." }, - "theme:console": { - "aliases": [], - "args": {}, - "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", + "app:init": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "client-id": { + "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" + "multiple": false, + "name": "client-id", + "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "flavor": { + "description": "Which flavor of the given template to use.", + "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", "hasDynamicHelp": false, "multiple": false, + "name": "flavor", "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "local": { + "allowNo": false, + "char": "l", + "env": "SHOPIFY_FLAG_LOCAL", + "hidden": true, + "name": "local", + "type": "boolean" + }, + "name": { + "char": "n", + "description": "The name for the new app. When provided, skips the app selection prompt and creates a new app with this name.", + "env": "SHOPIFY_FLAG_NAME", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "name", "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "organization-id": { + "description": "The organization ID. Your organization ID can be found in your Dev Dashboard URL: https://dev.shopify.com/dashboard/", + "env": "SHOPIFY_FLAG_ORGANIZATION_ID", + "exclusive": [ + "client-id" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "organization-id", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", + "package-manager": { + "char": "d", + "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", "hasDynamicHelp": false, - "multiple": true, + "hidden": false, + "multiple": false, + "name": "package-manager", + "options": [ + "npm", + "yarn", + "pnpm", + "bun" + ], "type": "option" }, - "url": { - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", - "name": "url", - "default": "/", + "path": { + "char": "p", + "default": ".", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "path", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", - "name": "store-password", + "template": { + "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", + "env": "SHOPIFY_FLAG_TEMPLATE", "hasDynamicHelp": false, "multiple": false, + "name": "template", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:console", + "hiddenAliases": [ + ], + "id": "app:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Shopify Liquid REPL (read-eval-print loop) tool", - "usage": [ - "theme console", - "theme console --url /products/classic-leather-jacket" - ], - "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "summary": "Create a new app project" }, - "theme:delete": { - "aliases": [], - "args": {}, - "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "app:logs": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, "hidden": false, - "name": "no-color", + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, + "json": { "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, "name": "path", "noCacheDefault": true, + "type": "option" + }, + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "source": { + "description": "Filters output to the specified log source.", + "env": "SHOPIFY_FLAG_SOURCE", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "source", "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "status": { + "description": "Filters output to the specified status (success or failure).", + "env": "SHOPIFY_FLAG_STATUS", "hasDynamicHelp": false, "multiple": false, + "name": "status", + "options": [ + "success", + "failure" + ], "type": "option" }, "store": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", "env": "SHOPIFY_FLAG_STORE", - "name": "store", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", "hasDynamicHelp": false, "multiple": true, + "name": "store", "type": "option" }, - "development": { - "char": "d", - "description": "Delete your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "allowNo": false, - "type": "boolean" - }, - "show-all": { - "char": "a", - "description": "Include others development themes in theme list.", - "env": "SHOPIFY_FLAG_SHOW_ALL", - "name": "show-all", - "allowNo": false, - "type": "boolean" - }, - "force": { - "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", - "name": "force", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:delete", + "hiddenAliases": [ + ], + "id": "app:logs", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Delete remote themes from the connected store. This command can't be undone.", - "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", - "multiEnvironmentsFlags": [ - "store", - "password", - [ - "development", - "theme" - ] - ], - "customPluginName": "@shopify/theme" + "summary": "Stream detailed logs for your Shopify app." }, - "theme:dev": { - "aliases": [], - "args": {}, - "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "app:logs:sources": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:logs:sources", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Print out a list of sources that may be used with the logs command." + }, + "app:release": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "flags": { + "allow-deletes": { "allowNo": false, + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "allow-updates": { + "allowNo": false, + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", + "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "host": { - "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", - "env": "SHOPIFY_FLAG_HOST", - "name": "host", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "force": { + "allowNo": false, + "char": "f", + "description": "[Deprecated] Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": false, + "name": "force", + "type": "boolean" }, - "live-reload": { - "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", - "env": "SHOPIFY_FLAG_LIVE_RELOAD", - "name": "live-reload", - "default": "hot-reload", - "hasDynamicHelp": false, - "multiple": false, - "options": [ - "hot-reload", - "full-page", - "off" - ], - "type": "option" + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" }, - "error-overlay": { - "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", - "env": "SHOPIFY_FLAG_ERROR_OVERLAY", - "name": "error-overlay", - "default": "default", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "options": [ - "silent", - "default" - ], + "name": "path", + "noCacheDefault": true, "type": "option" }, - "poll": { - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, - "theme-editor-sync": { - "description": "Synchronize Theme Editor updates in the local theme files.", - "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", - "name": "theme-editor-sync", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", - "name": "port", + "version": { + "description": "The name of the app version to release.", + "env": "SHOPIFY_FLAG_VERSION", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "version", + "required": true, "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:release", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Release an app version.", + "usage": "app release --version " + }, + "app:generate:schema": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "name": "listing", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "nodelete": { - "char": "n", - "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "only": { - "char": "o", - "description": "Hot reload only files that match the specified pattern.", - "env": "SHOPIFY_FLAG_ONLY", - "name": "only", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "ignore": { - "char": "x", - "description": "Skip hot reloading any files that match the specified pattern.", - "env": "SHOPIFY_FLAG_IGNORE", - "name": "ignore", + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, - "multiple": true, + "hidden": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "force": { - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", - "name": "notify", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "open": { - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", + "stdout": { "allowNo": false, + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, "type": "boolean" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", - "name": "store-password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "allow-live": { - "char": "a", - "description": "Allow development on a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:dev", - "pluginAlias": "@shopify/cli", + "hidden": true, + "hiddenAliases": [ + ], + "id": "app:generate:schema", + "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time.", - "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "summary": "Fetch the latest GraphQL schema for a function." }, - "theme:duplicate": { - "aliases": [], - "args": {}, - "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "app:import-custom-data-definitions": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" + "multiple": false, + "name": "client-id", + "type": "option" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, "hidden": false, - "name": "verbose", + "multiple": false, + "name": "config", + "type": "option" + }, + "include-existing": { "allowNo": false, + "description": "Include existing declared definitions in the output.", + "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", + "name": "include-existing", "type": "boolean" }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "name": { - "char": "n", - "description": "Name of the newly duplicated theme.", - "env": "SHOPIFY_FLAG_NAME", - "name": "name", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" }, "store": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", "env": "SHOPIFY_FLAG_STORE", - "name": "store", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "force": { - "char": "f", - "description": "Force the duplicate operation to run without prompts or confirmations.", - "env": "SHOPIFY_FLAG_FORCE", - "name": "force", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:duplicate", + "hiddenAliases": [ + ], + "id": "app:import-custom-data-definitions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Duplicates a theme from your theme library.", - "usage": [ - "theme duplicate", - "theme duplicate --theme 10 --name 'New Theme'" - ], - "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", - "customPluginName": "@shopify/theme" + "summary": "Import metafield and metaobject definitions." }, - "theme:info": { - "aliases": [], - "args": {}, - "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", + "app:import-extensions": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Import dashboard-managed extensions into your app.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:import-extensions", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "app:info": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" }, "json": { + "allowNo": false, "char": "j", "description": "Output the result as JSON.", "env": "SHOPIFY_FLAG_JSON", "hidden": false, "name": "json", + "type": "boolean" + }, + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" }, - "development": { - "char": "d", - "description": "Retrieve info from your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "web-env": { + "allowNo": false, + "description": "Outputs environment variables necessary for running and deploying web/.", + "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", + "hidden": false, + "name": "web-env", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:info", + "hiddenAliases": [ + ], + "id": "app:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "multiEnvironmentsFlags": [ - "store", - "password" - ], - "customPluginName": "@shopify/theme" + "summary": "Print basic information about your app and extensions." }, - "theme:language-server": { - "aliases": [], - "args": {}, - "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", + "app:init": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", "flags": { + "client-id": { + "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "flavor": { + "description": "Which flavor of the given template to use.", + "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", + "hasDynamicHelp": false, + "multiple": false, + "name": "flavor", + "type": "option" + }, + "local": { + "allowNo": false, + "char": "l", + "env": "SHOPIFY_FLAG_LOCAL", + "hidden": true, + "name": "local", + "type": "boolean" + }, + "name": { + "char": "n", + "description": "The name for the new app. When provided, skips the app selection prompt and creates a new app with this name.", + "env": "SHOPIFY_FLAG_NAME", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "name", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, "type": "boolean" }, + "organization-id": { + "description": "The organization ID. Your organization ID can be found in your Dev Dashboard URL: https://dev.shopify.com/dashboard/", + "env": "SHOPIFY_FLAG_ORGANIZATION_ID", + "exclusive": [ + "client-id" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "organization-id", + "type": "option" + }, + "package-manager": { + "char": "d", + "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "package-manager", + "options": [ + "npm", + "yarn", + "pnpm", + "bun" + ], + "type": "option" + }, + "path": { + "char": "p", + "default": ".", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "path", + "type": "option" + }, + "template": { + "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", + "env": "SHOPIFY_FLAG_TEMPLATE", + "hasDynamicHelp": false, + "multiple": false, + "name": "template", + "type": "option" + }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:language-server", + "hiddenAliases": [ + ], + "id": "app:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Start a Language Server Protocol server.", - "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "summary": "Create a new app project" }, - "theme:list": { - "aliases": [], - "args": {}, - "description": "Lists the themes in your store, along with their IDs and statuses.", + "app:logs": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" + "multiple": false, + "name": "client-id", + "type": "option" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" + "multiple": false, + "name": "config", + "type": "option" }, "json": { + "allowNo": false, "char": "j", "description": "Output the result as JSON.", "env": "SHOPIFY_FLAG_JSON", "hidden": false, "name": "json", + "type": "boolean" + }, + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, "name": "path", "noCacheDefault": true, + "type": "option" + }, + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "source": { + "description": "Filters output to the specified log source.", + "env": "SHOPIFY_FLAG_SOURCE", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "source", "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "status": { + "description": "Filters output to the specified status (success or failure).", + "env": "SHOPIFY_FLAG_STATUS", "hasDynamicHelp": false, "multiple": false, + "name": "status", + "options": [ + "success", + "failure" + ], "type": "option" }, "store": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", "env": "SHOPIFY_FLAG_STORE", - "name": "store", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "store", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "role": { - "description": "Only list themes with the given role.", - "env": "SHOPIFY_FLAG_ROLE", - "name": "role", - "hasDynamicHelp": false, - "multiple": false, - "options": [ - "live", - "unpublished", - "development" - ], - "type": "option" - }, - "name": { - "description": "Only list themes that contain the given name.", - "env": "SHOPIFY_FLAG_NAME", - "name": "name", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "id": { - "description": "Only list theme with the given ID.", - "env": "SHOPIFY_FLAG_ID", - "name": "id", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:list", + "hiddenAliases": [ + ], + "id": "app:logs", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "multiEnvironmentsFlags": [ - "store", - "password" - ], - "customPluginName": "@shopify/theme" + "summary": "Stream detailed logs for your Shopify app." }, - "theme:metafields:pull": { - "aliases": [], - "args": {}, - "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "app:logs:sources": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:logs:sources", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Print out a list of sources that may be used with the logs command." + }, + "app:release": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "flags": { + "allow-deletes": { "allowNo": false, + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "allow-updates": { + "allowNo": false, + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", + "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, - "type": "option" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, + "name": "config", "type": "option" }, "force": { + "allowNo": false, "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "description": "[Deprecated] Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. Use --allow-updates for CI/CD environments instead.", "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, + "hidden": false, "name": "force", - "allowNo": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:metafields:pull", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Download metafields definitions from your shop into a local file.", - "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" - }, - "theme:open": { - "aliases": [], - "args": {}, - "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", - "flags": { + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "development": { - "char": "d", - "description": "Open your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "allowNo": false, - "type": "boolean" - }, - "editor": { - "char": "E", - "description": "Open the theme editor for the specified theme in the browser.", - "env": "SHOPIFY_FLAG_EDITOR", - "name": "editor", - "allowNo": false, - "type": "boolean" - }, - "live": { - "char": "l", - "description": "Open your live (published) theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "allowNo": false, - "type": "boolean" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + "version": { + "description": "The name of the app version to release.", + "env": "SHOPIFY_FLAG_VERSION", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "version", + "required": true, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:open", + "hiddenAliases": [ + ], + "id": "app:release", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Opens the preview of your remote theme.", - "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "summary": "Release an app version.", + "usage": "app release --version " }, - "theme:package": { - "aliases": [], - "args": {}, - "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "app:validate": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", + "descriptionWithMarkdown": "Validates the selected app configuration file and all extension configurations against their schemas and reports any errors found.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:package", + "hiddenAliases": [ + ], + "id": "app:validate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Package your theme into a .zip file, ready to upload to the Online Store.", - "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "summary": "Validate your app configuration and extensions." }, - "theme:profile": { - "aliases": [], - "args": {}, - "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "app:versions:list": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", + "descriptionWithMarkdown": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "app:versions:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "List deployed versions of your app." + }, + "app:webhook:trigger": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "flags": { + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "address", + "required": false, "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "api-version": { + "description": "The API Version of the webhook topic.", + "env": "SHOPIFY_FLAG_API_VERSION", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "api-version", + "required": false, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + "client-secret": { + "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", + "env": "SHOPIFY_FLAG_CLIENT_SECRET", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-secret", + "required": false, "type": "option" }, - "url": { - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", - "name": "url", - "default": "/", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", - "name": "store-password", + "delivery-method": { + "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", + "env": "SHOPIFY_FLAG_DELIVERY_METHOD", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "delivery-method", + "options": [ + "http", + "google-pub-sub", + "event-bridge" + ], + "required": false, "type": "option" }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "allowNo": false, - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:profile", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Profile the Liquid rendering of a theme page.", - "usage": [ - "theme profile", - "theme profile --url /products/classic-leather-jacket" - ], - "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" - }, - "theme:publish": { - "aliases": [], - "args": {}, - "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", - "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", + "help": { "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", "hidden": false, - "name": "verbose", - "allowNo": false, + "name": "help", + "required": false, "type": "boolean" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "shared-secret", + "required": false, "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "force": { - "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", - "name": "force", - "allowNo": false, - "type": "boolean" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "topic", + "required": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:publish", + "hiddenAliases": [ + ], + "id": "app:webhook:trigger", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Set a remote theme as the live theme.", - "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", - "multiEnvironmentsFlags": [ - "store", - "password", - "theme" - ], - "customPluginName": "@shopify/theme" + "summary": "Trigger delivery of a sample webhook topic payload to a designated address." }, - "theme:preview": { - "aliases": [], - "args": {}, - "description": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", + "auth:login": { + "aliases": [ + ], + "args": { + }, + "description": "Logs you in to your Shopify account.", + "enableJsonFlag": false, "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", - "required": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "overrides": { - "description": "Path to a JSON overrides file.", - "env": "SHOPIFY_FLAG_OVERRIDES", - "name": "overrides", - "required": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "preview-id": { - "description": "An existing preview identifier to update instead of creating a new preview.", - "env": "SHOPIFY_FLAG_PREVIEW_ID", - "name": "preview-id", + "alias": { + "description": "Alias of the session you want to login to.", + "env": "SHOPIFY_FLAG_AUTH_ALIAS", "hasDynamicHelp": false, "multiple": false, + "name": "alias", "type": "option" }, - "open": { - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", + "no-polling": { "allowNo": false, + "description": "Start the login flow without polling. Prints the auth URL and exits immediately.", + "env": "SHOPIFY_FLAG_AUTH_NO_POLLING", + "name": "no-polling", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:preview", + }, + "resume": { + "allowNo": false, + "description": "Resume a previously started login flow.", + "env": "SHOPIFY_FLAG_AUTH_RESUME", + "name": "resume", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "auth:login", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Applies JSON overrides to a theme and returns a preview URL.", - "descriptionWithMarkdown": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" + "strict": true }, - "theme:pull": { - "aliases": [], - "args": {}, - "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "auth:logout": { + "aliases": [ + ], + "args": { + }, + "description": "Logs you out of the Shopify account or Partner account and store.", + "enableJsonFlag": false, "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "auth:logout", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "auth:whoami": { + "aliases": [ + ], + "args": { + }, + "description": "Displays the currently logged-in Shopify account.", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "auth:whoami", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "cache:clear": { + "aliases": [ + ], + "args": { + }, + "description": "Clear the CLI cache, used to store some API responses and handle notifications status", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "cache:clear", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "commands": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@oclif/plugin-commands", + "description": "List all <%= config.bin %> commands.", + "enableJsonFlag": true, + "flags": { + "columns": { + "char": "c", + "delimiter": ",", + "description": "Only show provided columns (comma-separated).", + "exclusive": [ + "tree" + ], "hasDynamicHelp": false, "multiple": true, + "name": "columns", + "options": [ + "id", + "plugin", + "summary", + "type" + ], "type": "option" }, - "only": { - "char": "o", - "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_ONLY", - "name": "only", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" + "deprecated": { + "allowNo": false, + "description": "Show deprecated commands.", + "name": "deprecated", + "type": "boolean" }, - "ignore": { + "extended": { + "allowNo": false, "char": "x", - "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_IGNORE", - "name": "ignore", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "description": "Show extra columns.", + "exclusive": [ + "tree" + ], + "name": "extended", + "type": "boolean" }, - "development": { - "char": "d", - "description": "Pull theme files from your remote development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", + "hidden": { "allowNo": false, + "description": "Show hidden commands.", + "name": "hidden", "type": "boolean" }, - "live": { - "char": "l", - "description": "Pull theme files from your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", + "json": { "allowNo": false, + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", "type": "boolean" }, - "nodelete": { - "char": "n", - "description": "Prevent deleting local files that don't exist remotely.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", + "no-truncate": { "allowNo": false, + "description": "Do not truncate output.", + "exclusive": [ + "tree" + ], + "name": "no-truncate", "type": "boolean" }, - "force": { - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", + "sort": { + "default": "id", + "description": "Property to sort by.", + "exclusive": [ + "tree" + ], + "hasDynamicHelp": false, + "multiple": false, + "name": "sort", + "options": [ + "id", + "plugin", + "summary", + "type" + ], + "type": "option" + }, + "tree": { "allowNo": false, + "description": "Show tree of commands.", + "name": "tree", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:pull", + "hiddenAliases": [ + ], + "id": "commands", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Download your remote theme files locally.", - "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], - "customPluginName": "@shopify/theme" + "strict": true }, - "theme:push": { - "aliases": [], - "args": {}, - "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", + "config:autocorrect:off": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/plugin-did-you-mean", + "description": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "descriptionWithMarkdown": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "config:autocorrect:off", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Disable autocorrect. Off by default." + }, + "config:autocorrect:on": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/plugin-did-you-mean", + "description": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "descriptionWithMarkdown": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "config:autocorrect:on", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Enable autocorrect. Off by default." + }, + "config:autocorrect:status": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/plugin-did-you-mean", + "description": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "descriptionWithMarkdown": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "config:autocorrect:status", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Check whether autocorrect is enabled or disabled. On by default." + }, + "debug:command-flags": { + "aliases": [ + ], + "args": { + }, + "description": "View all the available command flags", + "enableJsonFlag": false, + "flags": { + "csv": { + "allowNo": false, + "description": "Output as CSV", + "env": "SHOPIFY_FLAG_OUTPUT_CSV", + "name": "csv", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "debug:command-flags", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "demo:watcher": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", "flags": { + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" }, "verbose": { + "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "allowNo": false, "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "demo:watcher", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Watch and prints out changes to an app." + }, + "docs:generate": { + "aliases": [ + ], + "args": { + }, + "description": "Generate CLI commands documentation", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "docs:generate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "doctor-release": { + "aliases": [ + ], + "args": { + }, + "description": "Run CLI doctor-release tests", + "enableJsonFlag": false, + "flags": { + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "doctor-release", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "doctor-release:theme": { + "aliases": [ + ], + "args": { + }, + "description": "Run all theme command doctor-release tests", + "enableJsonFlag": false, + "flags": { + "environment": { + "char": "e", + "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, "multiple": false, + "name": "environment", + "required": true, "type": "option" }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "description": "Password from Theme Access app (overrides environment).", + "env": "SHOPIFY_FLAG_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, "name": "password", + "type": "option" + }, + "path": { + "char": "p", + "default": ".", + "description": "The path to run tests in. Defaults to current directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, "store": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "description": "Store URL (overrides environment).", "env": "SHOPIFY_FLAG_STORE", - "name": "store", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "only": { - "char": "o", - "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_ONLY", - "name": "only", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "ignore": { - "char": "x", - "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_IGNORE", - "name": "ignore", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "json": { - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "json", + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "doctor-release:theme", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "help": { + "aliases": [ + ], + "args": { + "command": { + "description": "Command to show help for.", + "name": "command", + "required": false + } + }, + "description": "Display help for Shopify CLI", + "enableJsonFlag": false, + "flags": { + "nested-commands": { "allowNo": false, + "char": "n", + "description": "Include all nested commands in the output.", + "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", + "name": "nested-commands", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "help", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": false, + "usage": "help [command] [flags]" + }, + "hydrogen:build": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Builds a Hydrogen storefront for production.", + "descriptionWithMarkdown": "Builds a Hydrogen storefront for production. The client and app worker files are compiled to a `/dist` folder in your Hydrogen project directory.", + "enableJsonFlag": false, + "flags": { + "bundle-stats": { + "allowNo": true, + "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", + "name": "bundle-stats", "type": "boolean" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "development": { - "char": "d", - "description": "Push theme files from your remote development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", + "codegen": { "allowNo": false, + "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "name": "codegen", + "required": false, "type": "boolean" }, - "development-context": { - "char": "c", + "codegen-config-path": { "dependsOn": [ - "development" - ], - "description": "Unique identifier for a development theme context (e.g., PR number, branch name). Reuses an existing development theme with this context name, or creates one if none exists.", - "env": "SHOPIFY_FLAG_DEVELOPMENT_CONTEXT", - "exclusive": [ - "theme" + "codegen" ], - "name": "development-context", + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", "hasDynamicHelp": false, "multiple": false, + "name": "codegen-config-path", + "required": false, "type": "option" }, - "live": { - "char": "l", - "description": "Push theme files from your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", + "disable-route-warning": { "allowNo": false, + "description": "Disables any warnings about missing standard routes.", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING", + "name": "disable-route-warning", "type": "boolean" }, - "unpublished": { - "char": "u", - "description": "Create a new unpublished theme and push to it.", - "env": "SHOPIFY_FLAG_UNPUBLISHED", - "name": "unpublished", - "allowNo": false, - "type": "boolean" + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "hasDynamicHelp": false, + "multiple": false, + "name": "entry", + "type": "option" }, - "nodelete": { - "char": "n", - "description": "Prevent deleting remote files that don't exist locally.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", + "force-client-sourcemap": { "allowNo": false, + "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", + "name": "force-client-sourcemap", "type": "boolean" }, - "allow-live": { - "char": "a", - "description": "Allow push to a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", - "allowNo": false, + "lockfile-check": { + "allowNo": true, + "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", + "name": "lockfile-check", "type": "boolean" }, - "publish": { - "char": "p", - "description": "Publish as the live theme after uploading.", - "env": "SHOPIFY_FLAG_PUBLISH", - "name": "publish", - "allowNo": false, - "type": "boolean" + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "type": "option" }, - "force": { - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "allowNo": false, + "sourcemap": { + "allowNo": true, + "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", + "name": "sourcemap", "type": "boolean" }, - "strict": { - "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", - "env": "SHOPIFY_FLAG_STRICT_PUSH", - "name": "strict", + "watch": { "allowNo": false, + "description": "Watches for changes and rebuilds the project writing output to disk.", + "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", + "name": "watch", "type": "boolean" - }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "name": "listing", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:push", + "hiddenAliases": [ + ], + "id": "hydrogen:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", - "usage": [ - "theme push", - "theme push --unpublished --json" - ], - "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], - "customPluginName": "@shopify/theme" + "strict": true }, - "theme:rename": { - "aliases": [], - "args": {}, - "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "hydrogen:check": { + "aliases": [ + ], + "args": { + "resource": { + "description": "The resource to check. Currently only 'routes' is supported.", + "name": "resource", + "options": [ + "routes" + ], + "required": true + } + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Returns diagnostic information about a Hydrogen storefront.", + "descriptionWithMarkdown": "Checks whether your Hydrogen app includes a set of standard Shopify routes.", + "enableJsonFlag": false, "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "hydrogen:check", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "hydrogen:codegen": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Generate types for the Storefront API queries found in your project.", + "descriptionWithMarkdown": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "enableJsonFlag": false, + "flags": { + "codegen-config-path": { + "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", "hasDynamicHelp": false, "multiple": false, + "name": "codegen-config-path", + "required": false, "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "name": { - "char": "n", - "description": "The new name for the theme.", - "env": "SHOPIFY_FLAG_NEW_NAME", - "name": "name", - "required": false, + "force-sfapi-version": { + "description": "Force generating Storefront API types for a specific version instead of using the one provided in Hydrogen. A token can also be provided with this format: `:`.", "hasDynamicHelp": false, + "hidden": true, "multiple": false, + "name": "force-sfapi-version", "type": "option" }, - "development": { - "char": "d", - "description": "Rename your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "allowNo": false, - "type": "boolean" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "live": { - "char": "l", - "description": "Rename your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", + "watch": { "allowNo": false, + "description": "Watch the project for changes to update types on file save.", + "name": "watch", + "required": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:rename", + "hiddenAliases": [ + ], + "id": "hydrogen:codegen", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Renames an existing theme.", - "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", - "multiEnvironmentsFlags": [ - "store", - "password", - "name", - [ - "live", - "development", - "theme" - ] - ], - "customPluginName": "@shopify/theme" + "strict": true }, - "theme:serve": { - "aliases": [], - "args": {}, - "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "hydrogen:customer-account-push": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Push project configuration to admin", + "enableJsonFlag": false, "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "dev-origin": { + "description": "The development domain of your application.", "hasDynamicHelp": false, "multiple": false, + "name": "dev-origin", + "required": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "hasDynamicHelp": false, - "multiple": true, - "type": "option" - }, - "host": { - "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", - "env": "SHOPIFY_FLAG_HOST", - "name": "host", + "relative-logout-uri": { + "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", "hasDynamicHelp": false, "multiple": false, + "name": "relative-logout-uri", "type": "option" }, - "live-reload": { - "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", - "env": "SHOPIFY_FLAG_LIVE_RELOAD", - "name": "live-reload", - "default": "hot-reload", + "relative-redirect-uri": { + "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", "hasDynamicHelp": false, "multiple": false, - "options": [ - "hot-reload", - "full-page", - "off" - ], + "name": "relative-redirect-uri", "type": "option" }, - "error-overlay": { - "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", - "env": "SHOPIFY_FLAG_ERROR_OVERLAY", - "name": "error-overlay", - "default": "default", + "storefront-id": { + "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", "hasDynamicHelp": false, "multiple": false, - "options": [ - "silent", - "default" - ], + "name": "storefront-id", "type": "option" - }, - "poll": { - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", - "allowNo": false, - "type": "boolean" - }, - "theme-editor-sync": { - "description": "Synchronize Theme Editor updates in the local theme files.", - "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", - "name": "theme-editor-sync", - "allowNo": false, - "type": "boolean" - }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", - "name": "port", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "hydrogen:customer-account-push", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "hydrogen:debug:cpu": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Builds and profiles the server startup time the app.", + "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", + "enableJsonFlag": false, + "flags": { + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", "hasDynamicHelp": false, "multiple": false, + "name": "entry", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "name": "theme", + "output": { + "default": "startup.cpuprofile", + "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", "hasDynamicHelp": false, "multiple": false, + "name": "output", + "required": false, "type": "option" }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "name": "listing", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" - }, - "nodelete": { - "char": "n", - "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "hydrogen:debug:cpu", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "hydrogen:deploy": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Builds and deploys a Hydrogen storefront to Oxygen.", + "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", + "enableJsonFlag": false, + "flags": { + "auth-bypass-token": { "allowNo": false, + "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", + "env": "AUTH_BYPASS_TOKEN", + "name": "auth-bypass-token", + "required": false, "type": "boolean" }, - "only": { - "char": "o", - "description": "Hot reload only files that match the specified pattern.", - "env": "SHOPIFY_FLAG_ONLY", - "name": "only", + "auth-bypass-token-duration": { + "dependsOn": [ + "auth-bypass-token" + ], + "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", + "env": "AUTH_BYPASS_TOKEN_DURATION", "hasDynamicHelp": false, - "multiple": true, + "multiple": false, + "name": "auth-bypass-token-duration", + "required": false, "type": "option" }, - "ignore": { - "char": "x", - "description": "Skip hot reloading any files that match the specified pattern.", - "env": "SHOPIFY_FLAG_IGNORE", - "name": "ignore", + "build-command": { + "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", "hasDynamicHelp": false, - "multiple": true, + "multiple": false, + "name": "build-command", + "required": false, "type": "option" }, - "force": { - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "allowNo": false, - "type": "boolean" + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "hasDynamicHelp": false, + "multiple": false, + "name": "entry", + "type": "option" }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", - "name": "notify", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], "hasDynamicHelp": false, "multiple": false, + "name": "env", "type": "option" }, - "open": { - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", - "allowNo": false, - "type": "boolean" + "env-branch": { + "deprecated": { + "message": "--env-branch is deprecated. Use --env instead.", + "to": "env" + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "hasDynamicHelp": false, + "multiple": false, + "name": "env-branch", + "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", - "name": "store-password", + "env-file": { + "description": "Path to an environment file to override existing environment variables for the deployment.", "hasDynamicHelp": false, "multiple": false, + "name": "env-file", + "required": false, "type": "option" }, - "allow-live": { - "char": "a", - "description": "Allow development on a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", + "force": { "allowNo": false, + "char": "f", + "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "required": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "theme:serve", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time.", - "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "multiEnvironmentsFlags": null, - "customPluginName": "@shopify/theme" - }, - "theme:share": { - "aliases": [], - "args": {}, - "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", - "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", + }, + "force-client-sourcemap": { "allowNo": false, + "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", + "name": "force-client-sourcemap", "type": "boolean" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, + "json-output": { + "allowNo": true, + "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", + "name": "json-output", + "required": false, "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "noCacheDefault": true, + "lockfile-check": { + "allowNo": true, + "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", + "name": "lockfile-check", + "type": "boolean" + }, + "metadata-description": { + "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", "hasDynamicHelp": false, "multiple": false, + "name": "metadata-description", + "required": false, "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "name": "password", + "metadata-url": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", "hasDynamicHelp": false, + "hidden": true, "multiple": false, + "name": "metadata-url", + "required": false, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "metadata-user": { + "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", "hasDynamicHelp": false, "multiple": false, + "name": "metadata-user", + "required": false, "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", + "metadata-version": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", "hasDynamicHelp": false, - "multiple": true, + "hidden": true, + "multiple": false, + "name": "metadata-version", + "required": false, "type": "option" }, - "force": { - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", + "no-verify": { "allowNo": false, + "description": "Skip the routability verification step after deployment.", + "name": "no-verify", + "required": false, "type": "boolean" }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "name": "listing", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "type": "option" + }, + "preview": { + "allowNo": false, + "description": "Deploys to the Preview environment.", + "name": "preview", + "required": false, + "type": "boolean" + }, + "shop": { + "char": "s", + "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", + "env": "SHOPIFY_SHOP", + "hasDynamicHelp": false, + "multiple": false, + "name": "shop", + "type": "option" + }, + "token": { + "char": "t", + "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", + "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "token", + "required": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "theme:share", + "hiddenAliases": [ + ], + "id": "hydrogen:deploy", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name.", - "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", - "multiEnvironmentsFlags": [ - "store", - "password", - "path" - ], - "customPluginName": "@shopify/theme" + "strict": true }, - "plugins": { - "aliases": [], - "args": {}, - "description": "List installed plugins.", - "examples": [ - "<%= config.bin %> <%= command.id %>" + "hydrogen:dev": { + "aliases": [ ], - "flags": { - "json": { - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", - "allowNo": false, - "type": "boolean" - }, - "core": { - "description": "Show core plugins.", - "name": "core", - "allowNo": false, - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "plugins", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": true, - "customPluginName": "@oclif/plugin-plugins" - }, - "plugins:inspect": { - "aliases": [], "args": { - "plugin": { - "default": ".", - "description": "Plugin to inspect.", - "name": "plugin", - "required": true - } }, - "description": "Displays installation properties of a plugin.", - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " - ], + "customPluginName": "@shopify/cli-hydrogen", + "description": "Runs Hydrogen storefront in an Oxygen worker for development.", + "descriptionWithMarkdown": "Runs a Hydrogen storefront in a local runtime that emulates an Oxygen worker for development.\n\n If your project is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) to a Hydrogen storefront, then its environment variables will be loaded with the runtime.", + "enableJsonFlag": false, "flags": { - "json": { - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", + "codegen": { "allowNo": false, + "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "name": "codegen", + "required": false, "type": "boolean" }, - "help": { - "char": "h", - "description": "Show CLI help.", - "name": "help", - "allowNo": false, - "type": "boolean" + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "hasDynamicHelp": false, + "multiple": false, + "name": "codegen-config-path", + "required": false, + "type": "option" }, - "verbose": { - "char": "v", - "name": "verbose", + "customer-account-push": { "allowNo": false, + "description": "Use tunneling for local development and push the tunneling domain to admin. Required to use Customer Account API's OAuth flow", + "env": "SHOPIFY_HYDROGEN_FLAG_CUSTOMER_ACCOUNT_PUSH", + "name": "customer-account-push", + "required": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "plugins:inspect", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false, - "usage": "plugins:inspect PLUGIN...", - "enableJsonFlag": true, - "customPluginName": "@oclif/plugin-plugins" - }, - "plugins:install": { - "aliases": [ - "plugins:add" - ], - "args": { - "plugin": { - "description": "Plugin to install.", - "name": "plugin", - "required": true - } - }, - "description": "", - "examples": [ - { - "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", - "description": "Install a plugin from npm registry." - }, - { - "command": "<%= config.bin %> <%= command.id %> https://github.com/someuser/someplugin", - "description": "Install a plugin from a github url." }, - { - "command": "<%= config.bin %> <%= command.id %> someuser/someplugin", - "description": "Install a plugin from a github slug." - } - ], - "flags": { - "json": { - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", + "debug": { "allowNo": false, + "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", + "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", + "name": "debug", "type": "boolean" }, - "force": { - "char": "f", - "description": "Force npm to fetch remote resources even if a local copy exists on disk.", - "name": "force", + "disable-deps-optimizer": { "allowNo": false, + "description": "Disable adding dependencies to Vite's `ssr.optimizeDeps.include` automatically", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_DEPS_OPTIMIZER", + "name": "disable-deps-optimizer", "type": "boolean" }, - "help": { - "char": "h", - "description": "Show CLI help.", - "name": "help", + "disable-version-check": { "allowNo": false, + "description": "Skip the version check when running `hydrogen dev`", + "name": "disable-version-check", + "required": false, "type": "boolean" }, - "jit": { - "hidden": true, - "name": "jit", + "disable-virtual-routes": { "allowNo": false, + "description": "Disable rendering fallback routes when a route file doesn't exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES", + "name": "disable-virtual-routes", "type": "boolean" }, - "silent": { - "char": "s", - "description": "Silences npm output.", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "hasDynamicHelp": false, + "multiple": false, + "name": "entry", + "type": "option" + }, + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", "exclusive": [ - "verbose" + "env-branch" ], - "name": "silent", + "hasDynamicHelp": false, + "multiple": false, + "name": "env", + "type": "option" + }, + "env-branch": { + "deprecated": { + "message": "--env-branch is deprecated. Use --env instead.", + "to": "env" + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "hasDynamicHelp": false, + "multiple": false, + "name": "env-branch", + "type": "option" + }, + "env-file": { + "default": ".env", + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "hasDynamicHelp": false, + "multiple": false, + "name": "env-file", + "required": false, + "type": "option" + }, + "host": { "allowNo": false, + "description": "Expose the server to the local network", + "name": "host", + "required": false, "type": "boolean" }, + "inspector-port": { + "description": "The port where the inspector is available. Defaults to 9229.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "hasDynamicHelp": false, + "multiple": false, + "name": "inspector-port", + "type": "option" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "type": "option" + }, + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "hasDynamicHelp": false, + "multiple": false, + "name": "port", + "required": false, + "type": "option" + }, "verbose": { - "char": "v", - "description": "Show verbose npm output.", - "exclusive": [ - "silent" - ], - "name": "verbose", "allowNo": false, + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", + "name": "verbose", + "required": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "plugins:install", + "hiddenAliases": [ + ], + "id": "hydrogen:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "summary": "Installs a plugin into <%= config.bin %>.", - "enableJsonFlag": true, - "customPluginName": "@oclif/plugin-plugins" + "strict": true }, - "plugins:link": { - "aliases": [], + "hydrogen:env:list": { + "aliases": [ + ], "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "List the environments on your linked Hydrogen storefront.", + "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", + "enableJsonFlag": false, + "flags": { "path": { - "default": ".", - "description": "path to plugin", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, "name": "path", - "required": true + "type": "option" } }, - "description": "Installation of a linked plugin will override a user-installed or core plugin.\n\ne.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work.\n", - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " - ], + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "hydrogen:env:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "hydrogen:env:pull": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Populate your .env with variables from your Hydrogen storefront.", + "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", + "enableJsonFlag": false, "flags": { - "help": { - "char": "h", - "description": "Show CLI help.", - "name": "help", - "allowNo": false, - "type": "boolean" + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "hasDynamicHelp": false, + "multiple": false, + "name": "env", + "type": "option" }, - "install": { - "description": "Install dependencies after linking the plugin.", - "name": "install", - "allowNo": true, - "type": "boolean" + "env-branch": { + "deprecated": { + "message": "--env-branch is deprecated. Use --env instead.", + "to": "env" + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "hasDynamicHelp": false, + "multiple": false, + "name": "env-branch", + "type": "option" }, - "verbose": { - "char": "v", - "name": "verbose", + "env-file": { + "default": ".env", + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "hasDynamicHelp": false, + "multiple": false, + "name": "env-file", + "required": false, + "type": "option" + }, + "force": { "allowNo": false, + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "type": "boolean" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "plugins:link", + "hiddenAliases": [ + ], + "id": "hydrogen:env:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Links a plugin into the CLI for development.", - "enableJsonFlag": false, - "customPluginName": "@oclif/plugin-plugins" + "strict": true }, - "plugins:reset": { - "aliases": [], - "args": {}, + "hydrogen:env:push": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", + "enableJsonFlag": false, "flags": { - "hard": { - "name": "hard", - "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", - "allowNo": false, - "type": "boolean" + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "hasDynamicHelp": false, + "multiple": false, + "name": "env", + "type": "option" }, - "reinstall": { - "name": "reinstall", - "summary": "Reinstall all plugins after uninstalling.", - "allowNo": false, - "type": "boolean" + "env-file": { + "default": ".env", + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "hasDynamicHelp": false, + "multiple": false, + "name": "env-file", + "required": false, + "type": "option" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "plugins:reset", + "hiddenAliases": [ + ], + "id": "hydrogen:env:push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Remove all user-installed and linked plugins.", - "enableJsonFlag": false, - "customPluginName": "@oclif/plugin-plugins" + "strict": true }, - "plugins:uninstall": { + "hydrogen:g": { "aliases": [ - "plugins:unlink", - "plugins:remove" ], "args": { - "plugin": { - "description": "plugin to uninstall", - "name": "plugin" - } }, - "description": "Removes a plugin from the CLI.", - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %>" - ], + "customPluginName": "@shopify/cli-hydrogen", + "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", + "enableJsonFlag": false, "flags": { - "help": { - "char": "h", - "description": "Show CLI help.", - "name": "help", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "char": "v", - "name": "verbose", - "allowNo": false, - "type": "boolean" - } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "plugins:uninstall", + "hidden": true, + "hiddenAliases": [ + ], + "id": "hydrogen:g", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "enableJsonFlag": false, - "customPluginName": "@oclif/plugin-plugins" + "strict": false }, - "plugins:update": { - "aliases": [], - "args": {}, - "description": "Update installed plugins.", + "hydrogen:generate:route": { + "aliases": [ + ], + "args": { + "routeName": { + "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", + "name": "routeName", + "options": [ + "home", + "page", + "cart", + "products", + "collections", + "policies", + "blogs", + "account", + "search", + "robots", + "sitemap", + "tokenlessApi", + "all" + ], + "required": true + } + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Generates a standard Shopify route.", + "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", + "enableJsonFlag": false, "flags": { - "help": { - "char": "h", - "description": "Show CLI help.", - "name": "help", + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "hasDynamicHelp": false, + "multiple": false, + "name": "adapter", + "type": "option" + }, + "force": { "allowNo": false, + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "type": "boolean" }, - "verbose": { - "char": "v", - "name": "verbose", + "locale-param": { + "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "hasDynamicHelp": false, + "multiple": false, + "name": "locale-param", + "type": "option" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "type": "option" + }, + "typescript": { "allowNo": false, + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "plugins:update", + "hiddenAliases": [ + ], + "id": "hydrogen:generate:route", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@oclif/plugin-plugins" + "strict": true }, - "config:autocorrect:off": { - "aliases": [], - "args": {}, - "description": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "config:autocorrect:off", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Disable autocorrect. Off by default.", - "enableJsonFlag": false, - "descriptionWithMarkdown": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "customPluginName": "@shopify/plugin-did-you-mean" - }, - "config:autocorrect:status": { - "aliases": [], - "args": {}, - "description": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "config:autocorrect:status", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Check whether autocorrect is enabled or disabled. On by default.", - "enableJsonFlag": false, - "descriptionWithMarkdown": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "customPluginName": "@shopify/plugin-did-you-mean" - }, - "config:autocorrect:on": { - "aliases": [], - "args": {}, - "description": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "config:autocorrect:on", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Enable autocorrect. Off by default.", + "hydrogen:generate:routes": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Generates all supported standard shopify routes.", "enableJsonFlag": false, - "descriptionWithMarkdown": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "customPluginName": "@shopify/plugin-did-you-mean" - }, - "commands": { - "aliases": [], - "args": {}, - "description": "List all <%= config.bin %> commands.", "flags": { - "json": { - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", - "allowNo": false, - "type": "boolean" - }, - "columns": { - "char": "c", - "description": "Only show provided columns (comma-separated).", - "exclusive": [ - "tree" - ], - "name": "columns", - "delimiter": ",", + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", "hasDynamicHelp": false, - "multiple": true, - "options": [ - "id", - "plugin", - "summary", - "type" - ], + "multiple": false, + "name": "adapter", "type": "option" }, - "deprecated": { - "description": "Show deprecated commands.", - "name": "deprecated", - "allowNo": false, - "type": "boolean" - }, - "extended": { - "char": "x", - "description": "Show extra columns.", - "exclusive": [ - "tree" - ], - "name": "extended", - "allowNo": false, - "type": "boolean" - }, - "hidden": { - "description": "Show hidden commands.", - "name": "hidden", + "force": { "allowNo": false, + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "type": "boolean" }, - "no-truncate": { - "description": "Do not truncate output.", - "exclusive": [ - "tree" - ], - "name": "no-truncate", - "allowNo": false, - "type": "boolean" + "locale-param": { + "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "hasDynamicHelp": false, + "multiple": false, + "name": "locale-param", + "type": "option" }, - "sort": { - "description": "Property to sort by.", - "exclusive": [ - "tree" - ], - "name": "sort", - "default": "id", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, - "options": [ - "id", - "plugin", - "summary", - "type" - ], + "name": "path", "type": "option" }, - "tree": { - "description": "Show tree of commands.", - "name": "tree", + "typescript": { "allowNo": false, + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "commands", + "hiddenAliases": [ + ], + "id": "hydrogen:generate:routes", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": true, - "customPluginName": "@oclif/plugin-commands" + "strict": true }, - "hydrogen:dev": { - "aliases": [], - "args": {}, - "description": "Runs Hydrogen storefront in an Oxygen worker for development.", + "hydrogen:init": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Creates a new Hydrogen storefront.", + "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", + "enableJsonFlag": false, "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "force": { + "allowNo": false, + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "type": "boolean" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", + "git": { + "allowNo": true, + "description": "Init Git and create initial commits.", + "env": "SHOPIFY_HYDROGEN_FLAG_GIT", + "name": "git", + "type": "boolean" + }, + "install-deps": { + "allowNo": true, + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "type": "boolean" + }, + "language": { + "description": "Sets the template language to use. One of `js` or `ts`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", "hasDynamicHelp": false, "multiple": false, + "name": "language", "type": "option" }, - "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", - "name": "port", - "required": false, + "markets": { + "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", + "env": "SHOPIFY_HYDROGEN_FLAG_I18N", "hasDynamicHelp": false, "multiple": false, + "name": "markets", "type": "option" }, - "codegen": { - "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "name": "codegen", - "required": false, + "mock-shop": { "allowNo": false, + "description": "Use mock.shop as the data source for the storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", + "name": "mock-shop", "type": "boolean" }, - "codegen-config-path": { - "dependsOn": [ - "codegen" + "package-manager": { + "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", + "hasDynamicHelp": false, + "hidden": true, + "multiple": false, + "name": "package-manager", + "options": [ + "npm", + "yarn", + "pnpm", + "unknown" ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", - "name": "codegen-config-path", - "required": false, + "type": "option" + }, + "path": { + "description": "The path to the directory of the new Hydrogen storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "disable-virtual-routes": { - "description": "Disable rendering fallback routes when a route file doesn't exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES", - "name": "disable-virtual-routes", + "quickstart": { "allowNo": false, + "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --markets none`", + "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", + "name": "quickstart", "type": "boolean" }, - "debug": { - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "allowNo": false, + "shortcut": { + "allowNo": true, + "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", + "name": "shortcut", "type": "boolean" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", - "name": "inspector-port", + "styling": { + "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", + "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", "hasDynamicHelp": false, "multiple": false, + "name": "styling", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", + "template": { + "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", + "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", "hasDynamicHelp": false, "multiple": false, + "name": "template", "type": "option" - }, - "disable-version-check": { - "description": "Skip the version check when running `hydrogen dev`", - "name": "disable-version-check", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "customer-account-push": { - "description": "Use tunneling for local development and push the tunneling domain to admin. Required to use Customer Account API's OAuth flow", - "env": "SHOPIFY_HYDROGEN_FLAG_CUSTOMER_ACCOUNT_PUSH", - "name": "customer-account-push", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "host": { - "description": "Expose the server to the local network", - "name": "host", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "disable-deps-optimizer": { - "description": "Disable adding dependencies to Vite's `ssr.optimizeDeps.include` automatically", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_DEPS_OPTIMIZER", - "name": "disable-deps-optimizer", - "allowNo": false, - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:dev", + "hiddenAliases": [ + ], + "id": "hydrogen:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Runs a Hydrogen storefront in a local runtime that emulates an Oxygen worker for development.\n\n If your project is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) to a Hydrogen storefront, then its environment variables will be loaded with the runtime.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:build": { - "aliases": [], - "args": {}, - "description": "Builds a Hydrogen storefront for production.", + "hydrogen:link": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Link a local project to one of your shop's Hydrogen storefronts.", + "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", + "enableJsonFlag": false, "flags": { + "force": { + "allowNo": false, + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "sourcemap": { - "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", - "name": "sourcemap", - "allowNo": true, - "type": "boolean" - }, - "lockfile-check": { - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", - "allowNo": true, - "type": "boolean" - }, - "disable-route-warning": { - "description": "Disables any warnings about missing standard routes.", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING", - "name": "disable-route-warning", - "allowNo": false, - "type": "boolean" - }, - "codegen": { - "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "name": "codegen", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", - "name": "codegen-config-path", - "required": false, + "storefront": { + "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", + "env": "SHOPIFY_HYDROGEN_STOREFRONT", "hasDynamicHelp": false, "multiple": false, + "name": "storefront", "type": "option" - }, - "watch": { - "description": "Watches for changes and rebuilds the project writing output to disk.", - "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", - "name": "watch", - "allowNo": false, - "type": "boolean" - }, - "bundle-stats": { - "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", - "name": "bundle-stats", - "allowNo": true, - "type": "boolean" - }, - "force-client-sourcemap": { - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", - "allowNo": false, - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:build", + "hiddenAliases": [ + ], + "id": "hydrogen:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Builds a Hydrogen storefront for production. The client and app worker files are compiled to a `/dist` folder in your Hydrogen project directory.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:check": { - "aliases": [], + "hydrogen:list": { + "aliases": [ + ], "args": { - "resource": { - "description": "The resource to check. Currently only 'routes' is supported.", - "name": "resource", - "options": [ - "routes" - ], - "required": true - } }, - "description": "Returns diagnostic information about a Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen", + "description": "Returns a list of Hydrogen storefronts available on a given shop.", + "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", + "enableJsonFlag": false, "flags": { "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:check", + "hiddenAliases": [ + ], + "id": "hydrogen:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Checks whether your Hydrogen app includes a set of standard Shopify routes.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:codegen": { - "aliases": [], - "args": {}, - "description": "Generate types for the Storefront API queries found in your project.", + "hydrogen:login": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Login to your Shopify account.", + "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", + "enableJsonFlag": false, "flags": { "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "codegen-config-path": { - "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", - "name": "codegen-config-path", - "required": false, "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "force-sfapi-version": { - "description": "Force generating Storefront API types for a specific version instead of using the one provided in Hydrogen. A token can also be provided with this format: `:`.", - "hidden": true, - "name": "force-sfapi-version", + "shop": { + "char": "s", + "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", + "env": "SHOPIFY_SHOP", "hasDynamicHelp": false, "multiple": false, + "name": "shop", "type": "option" - }, - "watch": { - "description": "Watch the project for changes to update types on file save.", - "name": "watch", - "required": false, - "allowNo": false, - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:codegen", + "hiddenAliases": [ + ], + "id": "hydrogen:login", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:deploy": { - "aliases": [], - "args": {}, - "description": "Builds and deploys a Hydrogen storefront to Oxygen.", - "flags": { - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-file": { - "description": "Path to an environment file to override existing environment variables for the deployment.", - "name": "env-file", - "required": false, + "hydrogen:logout": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Logout of your local session.", + "descriptionWithMarkdown": "Log out from the current shop.", + "enableJsonFlag": false, + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" - }, - "preview": { - "description": "Deploys to the Preview environment.", - "name": "preview", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "force": { - "char": "f", - "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "required": false, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "hydrogen:logout", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "hydrogen:preview": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", + "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", + "enableJsonFlag": false, + "flags": { + "build": { "allowNo": false, + "description": "Builds the app before starting the preview server.", + "name": "build", "type": "boolean" }, - "no-verify": { - "description": "Skip the routability verification step after deployment.", - "name": "no-verify", - "required": false, + "codegen": { "allowNo": false, - "type": "boolean" - }, - "auth-bypass-token": { - "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", - "env": "AUTH_BYPASS_TOKEN", - "name": "auth-bypass-token", + "dependsOn": [ + "build" + ], + "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", + "name": "codegen", "required": false, - "allowNo": false, "type": "boolean" }, - "auth-bypass-token-duration": { + "codegen-config-path": { "dependsOn": [ - "auth-bypass-token" + "codegen" ], - "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", - "env": "AUTH_BYPASS_TOKEN_DURATION", - "name": "auth-bypass-token-duration", - "required": false, + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", "hasDynamicHelp": false, "multiple": false, - "type": "option" - }, - "build-command": { - "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", - "name": "build-command", + "name": "codegen-config-path", "required": false, - "hasDynamicHelp": false, - "multiple": false, "type": "option" }, - "lockfile-check": { - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", - "allowNo": true, + "debug": { + "allowNo": false, + "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", + "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", + "name": "debug", "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "entry": { + "dependsOn": [ + "build" + ], + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", "hasDynamicHelp": false, "multiple": false, + "name": "entry", "type": "option" }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", - "name": "shop", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], "hasDynamicHelp": false, "multiple": false, + "name": "env", "type": "option" }, - "json-output": { - "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", - "name": "json-output", - "required": false, - "allowNo": true, - "type": "boolean" - }, - "token": { - "char": "t", - "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", - "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", - "name": "token", - "required": false, + "env-branch": { + "deprecated": { + "message": "--env-branch is deprecated. Use --env instead.", + "to": "env" + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", "hasDynamicHelp": false, "multiple": false, + "name": "env-branch", "type": "option" }, - "metadata-description": { - "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", - "name": "metadata-description", - "required": false, + "env-file": { + "default": ".env", + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", "hasDynamicHelp": false, "multiple": false, + "name": "env-file", + "required": false, "type": "option" }, - "metadata-url": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", - "hidden": true, - "name": "metadata-url", - "required": false, + "inspector-port": { + "description": "The port where the inspector is available. Defaults to 9229.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", "hasDynamicHelp": false, "multiple": false, + "name": "inspector-port", "type": "option" }, - "metadata-user": { - "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", - "name": "metadata-user", - "required": false, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "metadata-version": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", - "hidden": true, - "name": "metadata-version", - "required": false, + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", "hasDynamicHelp": false, "multiple": false, + "name": "port", "type": "option" }, - "force-client-sourcemap": { - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", + "verbose": { + "allowNo": false, + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", + "name": "verbose", + "required": false, + "type": "boolean" + }, + "watch": { "allowNo": false, + "dependsOn": [ + "build" + ], + "description": "Watches for changes and rebuilds the project.", + "name": "watch", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:deploy", + "hiddenAliases": [ + ], + "id": "hydrogen:preview", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:g": { - "aliases": [], - "args": {}, - "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "hydrogen:g", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false, + "hydrogen:setup": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Scaffold routes and core functionality.", "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:init": { - "aliases": [], - "args": {}, - "description": "Creates a new Hydrogen storefront.", "flags": { "force": { + "allowNo": false, "char": "f", "description": "Overwrites the destination directory and files if they already exist.", "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "allowNo": false, "type": "boolean" }, - "path": { - "description": "The path to the directory of the new Hydrogen storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "language": { - "description": "Sets the template language to use. One of `js` or `ts`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", - "name": "language", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "template": { - "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", - "name": "template", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, "install-deps": { + "allowNo": true, "description": "Auto installs dependencies using the active package manager.", "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", "name": "install-deps", - "allowNo": true, - "type": "boolean" - }, - "mock-shop": { - "description": "Use mock.shop as the data source for the storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", - "name": "mock-shop", - "allowNo": false, "type": "boolean" }, - "styling": { - "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", - "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", - "name": "styling", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, "markets": { "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "hasDynamicHelp": false, + "multiple": false, "name": "markets", + "type": "option" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, "shortcut": { + "allowNo": true, "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", "name": "shortcut", - "allowNo": true, - "type": "boolean" - }, - "git": { - "description": "Init Git and create initial commits.", - "env": "SHOPIFY_HYDROGEN_FLAG_GIT", - "name": "git", - "allowNo": true, - "type": "boolean" - }, - "quickstart": { - "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --markets none`", - "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", - "name": "quickstart", - "allowNo": false, "type": "boolean" - }, - "package-manager": { - "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", - "hidden": true, - "name": "package-manager", - "hasDynamicHelp": false, - "multiple": false, - "options": [ - "npm", - "yarn", - "pnpm", - "unknown" - ], - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:init", + "hiddenAliases": [ + ], + "id": "hydrogen:setup", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:link": { - "aliases": [], - "args": {}, - "description": "Link a local project to one of your shop's Hydrogen storefronts.", + "hydrogen:setup:css": { + "aliases": [ + ], + "args": { + "strategy": { + "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", + "name": "strategy", + "options": [ + "tailwind", + "vanilla-extract", + "css-modules", + "postcss" + ] + } + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Setup CSS strategies for your project.", + "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", + "enableJsonFlag": false, "flags": { "force": { + "allowNo": false, "char": "f", "description": "Overwrites the destination directory and files if they already exist.", "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "allowNo": false, + "type": "boolean" + }, + "install-deps": { + "allowNo": true, + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", "type": "boolean" }, "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "storefront": { - "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", - "env": "SHOPIFY_HYDROGEN_STOREFRONT", - "name": "storefront", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:link", + "hiddenAliases": [ + ], + "id": "hydrogen:setup:css", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:list": { - "aliases": [], - "args": {}, - "description": "Returns a list of Hydrogen storefronts available on a given shop.", + "hydrogen:setup:markets": { + "aliases": [ + ], + "args": { + "strategy": { + "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", + "name": "strategy", + "options": [ + "subfolders", + "domains", + "subdomains" + ] + } + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Setup support for multiple markets in your project.", + "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", + "enableJsonFlag": false, "flags": { "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:list", + "hiddenAliases": [ + ], + "id": "hydrogen:setup:markets", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:login": { - "aliases": [], - "args": {}, - "description": "Login to your Shopify account.", + "hydrogen:setup:vite": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "EXPERIMENTAL: Upgrades the project to use Vite.", + "enableJsonFlag": false, "flags": { "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", - "name": "shop", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:login", + "hiddenAliases": [ + ], + "id": "hydrogen:setup:vite", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, + "strict": true + }, + "hydrogen:shortcut": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Creates a global `h2` shortcut for the Hydrogen CLI", + "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", "enableJsonFlag": false, - "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", - "customPluginName": "@shopify/cli-hydrogen" + "flags": { + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "hydrogen:shortcut", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true }, - "hydrogen:logout": { - "aliases": [], - "args": {}, - "description": "Logout of your local session.", + "hydrogen:unlink": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Unlink a local project from a Hydrogen storefront.", + "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", + "enableJsonFlag": false, "flags": { "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:logout", + "hiddenAliases": [ + ], + "id": "hydrogen:unlink", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Log out from the current shop.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:preview": { - "aliases": [], - "args": {}, - "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", + "hydrogen:upgrade": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/cli-hydrogen", + "description": "Upgrade Remix and Hydrogen npm dependencies.", + "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", + "enableJsonFlag": false, "flags": { + "force": { + "allowNo": false, + "char": "f", + "description": "Ignore warnings and force the upgrade to the target version", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, "path": { "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", - "name": "port", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", - "name": "inspector-port", "hasDynamicHelp": false, "multiple": false, + "name": "path", "type": "option" }, - "debug": { - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "build": { - "description": "Builds the app before starting the preview server.", - "name": "build", - "allowNo": false, - "type": "boolean" - }, - "watch": { - "dependsOn": [ - "build" - ], - "description": "Watches for changes and rebuilds the project.", - "name": "watch", - "allowNo": false, - "type": "boolean" - }, - "entry": { - "dependsOn": [ - "build" - ], - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", + "version": { + "char": "v", + "description": "A target hydrogen version to update to", "hasDynamicHelp": false, "multiple": false, - "type": "option" - }, - "codegen": { - "dependsOn": [ - "build" - ], - "description": "Automatically generates GraphQL types for your projectโ€™s Storefront API queries.", - "name": "codegen", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", - "name": "codegen-config-path", + "name": "version", "required": false, - "hasDynamicHelp": false, - "multiple": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:preview", + "hiddenAliases": [ + ], + "id": "hydrogen:upgrade", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:setup": { - "aliases": [], - "args": {}, - "description": "Scaffold routes and core functionality.", + "kitchen-sink": { + "aliases": [ + ], + "args": { + }, + "description": "View all the available UI kit components", + "enableJsonFlag": false, "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "allowNo": false, - "type": "boolean" - }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", - "name": "markets", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "shortcut": { - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", - "allowNo": true, - "type": "boolean" - }, - "install-deps": { - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "allowNo": true, - "type": "boolean" - } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup", + "hidden": true, + "hiddenAliases": [ + "kitchen-sink all" + ], + "id": "kitchen-sink", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:shortcut": { - "aliases": [], - "args": {}, - "description": "Creates a global `h2` shortcut for the Hydrogen CLI", - "flags": {}, + "kitchen-sink:async": { + "aliases": [ + ], + "args": { + }, + "description": "View the UI kit components that process async tasks", + "enableJsonFlag": false, + "flags": { + }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:shortcut", + "hidden": true, + "hiddenAliases": [ + ], + "id": "kitchen-sink:async", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:unlink": { - "aliases": [], - "args": {}, - "description": "Unlink a local project from a Hydrogen storefront.", + "kitchen-sink:prompts": { + "aliases": [ + ], + "args": { + }, + "description": "View the UI kit components prompts", + "enableJsonFlag": false, "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:unlink", + "hidden": true, + "hiddenAliases": [ + ], + "id": "kitchen-sink:prompts", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, + "strict": true + }, + "kitchen-sink:static": { + "aliases": [ + ], + "args": { + }, + "description": "View the UI kit components that display static output", "enableJsonFlag": false, - "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", - "customPluginName": "@shopify/cli-hydrogen" + "flags": { + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "kitchen-sink:static", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true }, - "hydrogen:upgrade": { - "aliases": [], - "args": {}, - "description": "Upgrade Remix and Hydrogen npm dependencies.", + "notifications:generate": { + "aliases": [ + ], + "args": { + }, + "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", + "enableJsonFlag": false, "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "version": { - "char": "v", - "description": "A target hydrogen version to update to", - "name": "version", - "required": false, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "force": { - "char": "f", - "description": "Ignore warnings and force the upgrade to the target version", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "notifications:generate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "notifications:list": { + "aliases": [ + ], + "args": { + }, + "description": "List current notifications configured for the CLI.", + "enableJsonFlag": false, + "flags": { + "ignore-errors": { "allowNo": false, + "description": "Don't fail if an error occurs.", + "env": "SHOPIFY_FLAG_IGNORE_ERRORS", + "hidden": false, + "name": "ignore-errors", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:upgrade", + "hidden": true, + "hiddenAliases": [ + ], + "id": "notifications:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:customer-account-push": { - "aliases": [], - "args": {}, - "description": "Push project configuration to admin", + "organization:list": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "Lists the Shopify organizations that you have access to, along with their organization IDs.", + "descriptionWithMarkdown": "Lists the Shopify organizations that you have access to, along with their organization IDs.", + "enableJsonFlag": false, "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "storefront-id": { - "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", - "name": "storefront-id", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "dev-origin": { - "description": "The development domain of your application.", - "name": "dev-origin", - "required": true, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" }, - "relative-redirect-uri": { - "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", - "name": "relative-redirect-uri", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" }, - "relative-logout-uri": { - "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", - "name": "relative-logout-uri", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:customer-account-push", + "hiddenAliases": [ + ], + "id": "organization:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "summary": "List Shopify organizations you have access to." }, - "hydrogen:debug:cpu": { - "aliases": [], - "args": {}, - "description": "Builds and profiles the server startup time the app.", + "plugins": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@oclif/plugin-plugins", + "description": "List installed plugins.", + "enableJsonFlag": true, + "examples": [ + "<%= config.bin %> <%= command.id %>" + ], "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "core": { + "allowNo": false, + "description": "Show core plugins.", + "name": "core", + "type": "boolean" }, - "output": { - "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", - "name": "output", - "required": false, - "default": "startup.cpuprofile", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "json": { + "allowNo": false, + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:debug:cpu", + "hidden": true, + "hiddenAliases": [ + ], + "id": "plugins", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:env:list": { - "aliases": [], - "args": {}, - "description": "List the environments on your linked Hydrogen storefront.", + "plugins:inspect": { + "aliases": [ + ], + "args": { + "plugin": { + "default": ".", + "description": "Plugin to inspect.", + "name": "plugin", + "required": true + } + }, + "customPluginName": "@oclif/plugin-plugins", + "description": "Displays installation properties of a plugin.", + "enableJsonFlag": true, + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + ], "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "help": { + "allowNo": false, + "char": "h", + "description": "Show CLI help.", + "name": "help", + "type": "boolean" + }, + "json": { + "allowNo": false, + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "char": "v", + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:env:list", + "hiddenAliases": [ + ], + "id": "plugins:inspect", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": false, + "usage": "plugins:inspect PLUGIN..." }, - "hydrogen:env:pull": { - "aliases": [], - "args": {}, - "description": "Populate your .env with variables from your Hydrogen storefront.", - "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "plugins:install": { + "aliases": [ + "plugins:add" + ], + "args": { + "plugin": { + "description": "Plugin to install.", + "name": "plugin", + "required": true + } + }, + "customPluginName": "@oclif/plugin-plugins", + "description": "", + "enableJsonFlag": true, + "examples": [ + { + "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", + "description": "Install a plugin from npm registry." }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + { + "command": "<%= config.bin %> <%= command.id %> https://github.com/someuser/someplugin", + "description": "Install a plugin from a github url." }, + { + "command": "<%= config.bin %> <%= command.id %> someuser/someplugin", + "description": "Install a plugin from a github slug." + } + ], + "flags": { "force": { + "allowNo": false, "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "description": "Force npm to fetch remote resources even if a local copy exists on disk.", "name": "force", + "type": "boolean" + }, + "help": { + "allowNo": false, + "char": "h", + "description": "Show CLI help.", + "name": "help", + "type": "boolean" + }, + "jit": { + "allowNo": false, + "hidden": true, + "name": "jit", + "type": "boolean" + }, + "json": { + "allowNo": false, + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "type": "boolean" + }, + "silent": { + "allowNo": false, + "char": "s", + "description": "Silences npm output.", + "exclusive": [ + "verbose" + ], + "name": "silent", + "type": "boolean" + }, + "verbose": { "allowNo": false, + "char": "v", + "description": "Show verbose npm output.", + "exclusive": [ + "silent" + ], + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:env:pull", + "hiddenAliases": [ + ], + "id": "plugins:install", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": false, + "summary": "Installs a plugin into <%= config.bin %>." }, - "hydrogen:env:push": { - "aliases": [], - "args": {}, - "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", + "plugins:link": { + "aliases": [ + ], + "args": { + "path": { + "default": ".", + "description": "path to plugin", + "name": "path", + "required": true + } + }, + "customPluginName": "@oclif/plugin-plugins", + "description": "Installation of a linked plugin will override a user-installed or core plugin.\n\ne.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work.\n", + "enableJsonFlag": false, + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + ], "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "help": { + "allowNo": false, + "char": "h", + "description": "Show CLI help.", + "name": "help", + "type": "boolean" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "install": { + "allowNo": true, + "description": "Install dependencies after linking the plugin.", + "name": "install", + "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "char": "v", + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:env:push", + "hiddenAliases": [ + ], + "id": "plugins:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Links a plugin into the CLI for development." }, - "hydrogen:generate:route": { - "aliases": [], + "plugins:reset": { + "aliases": [ + ], "args": { - "routeName": { - "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", - "name": "routeName", - "options": [ - "home", - "page", - "cart", - "products", - "collections", - "policies", - "blogs", - "account", - "search", - "robots", - "sitemap", - "tokenlessApi", - "all" - ], - "required": true - } }, - "description": "Generates a standard Shopify route.", + "customPluginName": "@oclif/plugin-plugins", + "enableJsonFlag": false, "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "adapter", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "typescript": { - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", + "hard": { "allowNo": false, + "name": "hard", + "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", "type": "boolean" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "locale-param", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "reinstall": { "allowNo": false, + "name": "reinstall", + "summary": "Reinstall all plugins after uninstalling.", "type": "boolean" - }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:generate:route", + "hiddenAliases": [ + ], + "id": "plugins:reset", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Remove all user-installed and linked plugins." }, - "hydrogen:generate:routes": { - "aliases": [], - "args": {}, - "description": "Generates all supported standard shopify routes.", - "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "adapter", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "typescript": { - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", - "allowNo": false, - "type": "boolean" - }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "locale-param", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "allowNo": false, - "type": "boolean" - }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:generate:routes", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:setup:css": { - "aliases": [], + "plugins:uninstall": { + "aliases": [ + "plugins:unlink", + "plugins:remove" + ], "args": { - "strategy": { - "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", - "name": "strategy", - "options": [ - "tailwind", - "vanilla-extract", - "css-modules", - "postcss" - ] + "plugin": { + "description": "plugin to uninstall", + "name": "plugin" } }, - "description": "Setup CSS strategies for your project.", + "customPluginName": "@oclif/plugin-plugins", + "description": "Removes a plugin from the CLI.", + "enableJsonFlag": false, + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %>" + ], "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "help": { "allowNo": false, + "char": "h", + "description": "Show CLI help.", + "name": "help", "type": "boolean" }, - "install-deps": { - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "allowNo": true, + "verbose": { + "allowNo": false, + "char": "v", + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup:css", + "hiddenAliases": [ + ], + "id": "plugins:uninstall", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", - "customPluginName": "@shopify/cli-hydrogen" + "strict": false }, - "hydrogen:setup:markets": { - "aliases": [], + "plugins:update": { + "aliases": [ + ], "args": { - "strategy": { - "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", - "name": "strategy", - "options": [ - "subfolders", - "domains", - "subdomains" - ] - } - }, - "description": "Setup support for multiple markets in your project.", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - } }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup:markets", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, + "customPluginName": "@oclif/plugin-plugins", + "description": "Update installed plugins.", "enableJsonFlag": false, - "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:setup:vite": { - "aliases": [], - "args": {}, - "description": "EXPERIMENTAL: Upgrades the project to use Vite.", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "help": { + "allowNo": false, + "char": "h", + "description": "Show CLI help.", + "name": "help", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "char": "v", + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup:vite", + "hiddenAliases": [ + ], + "id": "plugins:update", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, "search": { - "aliases": [], + "aliases": [ + ], "args": { "query": { "name": "query" } }, "description": "Starts a search on shopify.dev.", + "enableJsonFlag": false, "examples": [ "# open the search modal on Shopify.dev\n shopify search\n\n # search for a term on Shopify.dev\n shopify search \n\n # search for a phrase on Shopify.dev\n shopify search \"\"\n " ], - "flags": {}, + "flags": { + }, "hasDynamicHelp": false, - "hiddenAliases": [], + "hiddenAliases": [ + ], "id": "search", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "usage": "search [query]", - "enableJsonFlag": false - }, - "upgrade": { - "aliases": [], - "args": {}, - "description": "Shows details on how to upgrade Shopify CLI.", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "upgrade", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Shows details on how to upgrade Shopify CLI.", - "enableJsonFlag": false, - "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI." - }, - "version": { - "aliases": [], - "args": {}, - "description": "Shopify CLI version currently installed.", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "version", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false + "usage": "search [query]" }, - "help": { - "aliases": [], + "theme:check": { + "aliases": [ + ], "args": { - "command": { - "description": "Command to show help for.", - "name": "command", - "required": false - } }, - "description": "Display help for Shopify CLI", + "customPluginName": "@shopify/theme", + "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", + "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", "flags": { - "nested-commands": { - "char": "n", - "description": "Include all nested commands in the output.", - "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", - "name": "nested-commands", + "auto-correct": { "allowNo": false, + "char": "a", + "description": "Automatically fix offenses", + "env": "SHOPIFY_FLAG_AUTO_CORRECT", + "name": "auto-correct", + "required": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "help", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false, - "usage": "help [command] [flags]", - "enableJsonFlag": false - }, - "auth:logout": { - "aliases": [], - "args": {}, - "description": "Logs you out of the Shopify account or Partner account and store.", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "auth:logout", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "auth:login": { - "aliases": [], - "args": {}, - "description": "Logs you in to your Shopify account.", - "flags": { - "alias": { - "description": "Alias of the session you want to login to.", - "env": "SHOPIFY_FLAG_AUTH_ALIAS", - "name": "alias", + }, + "config": { + "char": "C", + "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", + "env": "SHOPIFY_FLAG_CONFIG", "hasDynamicHelp": false, "multiple": false, + "name": "config", + "required": false, "type": "option" }, - "no-polling": { - "description": "Start the login flow without polling. Prints the auth URL and exits immediately.", - "env": "SHOPIFY_FLAG_AUTH_NO_POLLING", - "name": "no-polling", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "fail-level": { + "default": "error", + "description": "Minimum severity for exit with error code", + "env": "SHOPIFY_FLAG_FAIL_LEVEL", + "hasDynamicHelp": false, + "multiple": false, + "name": "fail-level", + "options": [ + "crash", + "error", + "suggestion", + "style", + "warning", + "info" + ], + "required": false, + "type": "option" + }, + "init": { "allowNo": false, + "description": "Generate a .theme-check.yml file", + "env": "SHOPIFY_FLAG_INIT", + "name": "init", + "required": false, "type": "boolean" }, - "resume": { - "description": "Resume a previously started login flow.", - "env": "SHOPIFY_FLAG_AUTH_RESUME", - "name": "resume", + "list": { + "allowNo": false, + "description": "List enabled checks", + "env": "SHOPIFY_FLAG_LIST", + "name": "list", + "required": false, + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "output": { + "char": "o", + "default": "text", + "description": "The output format to use", + "env": "SHOPIFY_FLAG_OUTPUT", + "hasDynamicHelp": false, + "multiple": false, + "name": "output", + "options": [ + "text", + "json" + ], + "required": false, + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "print": { + "allowNo": false, + "description": "Output active config to STDOUT", + "env": "SHOPIFY_FLAG_PRINT", + "name": "print", + "required": false, + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + }, + "version": { "allowNo": false, + "char": "v", + "description": "Print Theme Check version", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "required": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "auth:login", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "auth:whoami": { - "aliases": [], - "args": {}, - "description": "Displays the currently logged-in Shopify account.", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "auth:whoami", + "hiddenAliases": [ + ], + "id": "theme:check", + "multiEnvironmentsFlags": [ + "path" + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Validate the theme." }, - "debug:command-flags": { - "aliases": [], - "args": {}, - "description": "View all the available command flags", + "theme:console": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", + "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", "flags": { - "csv": { - "description": "Output as CSV", - "env": "SHOPIFY_FLAG_OUTPUT_CSV", - "name": "csv", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" + }, + "url": { + "default": "/", + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "hasDynamicHelp": false, + "multiple": false, + "name": "url", + "type": "option" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "debug:command-flags", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "kitchen-sink": { - "aliases": [], - "args": {}, - "description": "View all the available UI kit components", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ - "kitchen-sink all" ], - "id": "kitchen-sink", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "kitchen-sink:async": { - "aliases": [], - "args": {}, - "description": "View the UI kit components that process async tasks", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "kitchen-sink:async", + "id": "theme:console", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Shopify Liquid REPL (read-eval-print loop) tool", + "usage": [ + "theme console", + "theme console --url /products/classic-leather-jacket" + ] }, - "kitchen-sink:prompts": { - "aliases": [], - "args": {}, - "description": "View the UI kit components prompts", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "kitchen-sink:prompts", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", + "theme:delete": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "flags": { + "development": { + "allowNo": false, + "char": "d", + "description": "Delete your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "show-all": { + "allowNo": false, + "char": "a", + "description": "Include others development themes in theme list.", + "env": "SHOPIFY_FLAG_SHOW_ALL", + "name": "show-all", + "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": true, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:delete", + "multiEnvironmentsFlags": [ + "store", + "password", + [ + "development", + "theme" + ] + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Delete remote themes from the connected store. This command can't be undone." + }, + "theme:dev": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "flags": { + "allow-live": { + "allowNo": false, + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "error-overlay": { + "default": "default", + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "hasDynamicHelp": false, + "multiple": false, + "name": "error-overlay", + "options": [ + "silent", + "default" + ], + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "hasDynamicHelp": false, + "multiple": false, + "name": "host", + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, + "live-reload": { + "default": "hot-reload", + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "hasDynamicHelp": false, + "multiple": false, + "name": "live-reload", + "options": [ + "hot-reload", + "full-page", + "off" + ], + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "hasDynamicHelp": false, + "multiple": false, + "name": "notify", + "type": "option" + }, + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "open": { + "allowNo": false, + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "poll": { + "allowNo": false, + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "type": "boolean" + }, + "port": { + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "hasDynamicHelp": false, + "multiple": false, + "name": "port", + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "theme-editor-sync": { + "allowNo": false, + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:dev", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." + }, + "theme:duplicate": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Force the duplicate operation to run without prompts or confirmations.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "name": { + "char": "n", + "description": "Name of the newly duplicated theme.", + "env": "SHOPIFY_FLAG_NAME", + "hasDynamicHelp": false, + "multiple": false, + "name": "name", + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:duplicate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Duplicates a theme from your theme library.", + "usage": [ + "theme duplicate", + "theme duplicate --theme 10 --name 'New Theme'" + ] + }, + "theme:info": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", + "flags": { + "development": { + "allowNo": false, + "char": "d", + "description": "Retrieve info from your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:info", + "multiEnvironmentsFlags": [ + "store", + "password" + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "theme:init": { + "aliases": [ + ], + "args": { + "name": { + "description": "Name of the new theme", + "name": "name", + "required": false + } + }, + "customPluginName": "@shopify/theme", + "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "flags": { + "clone-url": { + "char": "u", + "default": "https://github.com/Shopify/skeleton-theme.git", + "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", + "env": "SHOPIFY_FLAG_CLONE_URL", + "hasDynamicHelp": false, + "multiple": false, + "name": "clone-url", + "type": "option" + }, + "latest": { + "allowNo": false, + "char": "l", + "description": "Downloads the latest release of the `clone-url`", + "env": "SHOPIFY_FLAG_LATEST", + "name": "latest", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:init", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Clones a Git repository to use as a starting point for building a new theme.", + "usage": "theme init [name] [flags]" + }, + "theme:language-server": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", + "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", + "flags": { + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:language-server", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Start a Language Server Protocol server." + }, + "theme:list": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Lists the themes in your store, along with their IDs and statuses.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "id": { + "description": "Only list theme with the given ID.", + "env": "SHOPIFY_FLAG_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "id", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "name": { + "description": "Only list themes that contain the given name.", + "env": "SHOPIFY_FLAG_NAME", + "hasDynamicHelp": false, + "multiple": false, + "name": "name", + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "role": { + "description": "Only list themes with the given role.", + "env": "SHOPIFY_FLAG_ROLE", + "hasDynamicHelp": false, + "multiple": false, + "name": "role", + "options": [ + "live", + "unpublished", + "development" + ], + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:list", + "multiEnvironmentsFlags": [ + "store", + "password" + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true + }, + "theme:metafields:pull": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:metafields:pull", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Download metafields definitions from your shop into a local file." + }, + "theme:open": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "flags": { + "development": { + "allowNo": false, + "char": "d", + "description": "Open your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "editor": { + "allowNo": false, + "char": "E", + "description": "Open the theme editor for the specified theme in the browser.", + "env": "SHOPIFY_FLAG_EDITOR", + "name": "editor", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Open your live (published) theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:open", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Opens the preview of your remote theme." + }, + "theme:package": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "flags": { + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:package", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Package your theme into a .zip file, ready to upload to the Online Store." + }, + "theme:preview": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", + "descriptionWithMarkdown": "Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "open": { + "allowNo": false, + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "type": "boolean" + }, + "overrides": { + "description": "Path to a JSON overrides file.", + "env": "SHOPIFY_FLAG_OVERRIDES", + "hasDynamicHelp": false, + "multiple": false, + "name": "overrides", + "required": true, + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "preview-id": { + "description": "An existing preview identifier to update instead of creating a new preview.", + "env": "SHOPIFY_FLAG_PREVIEW_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "preview-id", + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "required": true, + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:preview", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Applies JSON overrides to a theme and returns a preview URL." + }, + "theme:profile": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "url": { + "default": "/", + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "hasDynamicHelp": false, + "multiple": false, + "name": "url", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:profile", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Profile the Liquid rendering of a theme page.", + "usage": [ + "theme profile", + "theme profile --url /products/classic-leather-jacket" + ] + }, + "theme:publish": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:publish", + "multiEnvironmentsFlags": [ + "store", + "password", + "theme" + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Set a remote theme as the live theme." + }, + "theme:pull": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "flags": { + "development": { + "allowNo": false, + "char": "d", + "description": "Pull theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "ignore": { + "char": "x", + "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Pull theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevent deleting local files that don't exist remotely.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "only": { + "char": "o", + "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:pull", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Download your remote theme files locally." + }, + "theme:push": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", + "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", + "flags": { + "allow-live": { + "allowNo": false, + "char": "a", + "description": "Allow push to a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "type": "boolean" + }, + "development": { + "allowNo": false, + "char": "d", + "description": "Push theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "development-context": { + "char": "c", + "dependsOn": [ + "development" + ], + "description": "Unique identifier for a development theme context (e.g., PR number, branch name). Reuses an existing development theme with this context name, or creates one if none exists.", + "env": "SHOPIFY_FLAG_DEVELOPMENT_CONTEXT", + "exclusive": [ + "theme" + ], + "hasDynamicHelp": false, + "multiple": false, + "name": "development-context", + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "ignore": { + "char": "x", + "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Push theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevent deleting remote files that don't exist locally.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "only": { + "char": "o", + "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "publish": { + "allowNo": false, + "char": "p", + "description": "Publish as the live theme after uploading.", + "env": "SHOPIFY_FLAG_PUBLISH", + "name": "publish", + "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "strict": { + "allowNo": false, + "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", + "env": "SHOPIFY_FLAG_STRICT_PUSH", + "name": "strict", + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "unpublished": { + "allowNo": false, + "char": "u", + "description": "Create a new unpublished theme and push to it.", + "env": "SHOPIFY_FLAG_UNPUBLISHED", + "name": "unpublished", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:push", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", + "usage": [ + "theme push", + "theme push --unpublished --json" + ] }, - "kitchen-sink:static": { - "aliases": [], - "args": {}, - "description": "View the UI kit components that display static output", - "flags": {}, + "theme:rename": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "flags": { + "development": { + "allowNo": false, + "char": "d", + "description": "Rename your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Rename your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "name": { + "char": "n", + "description": "The new name for the theme.", + "env": "SHOPIFY_FLAG_NEW_NAME", + "hasDynamicHelp": false, + "multiple": false, + "name": "name", + "required": false, + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "kitchen-sink:static", + "hiddenAliases": [ + ], + "id": "theme:rename", + "multiEnvironmentsFlags": [ + "store", + "password", + "name", + [ + "live", + "development", + "theme" + ] + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Renames an existing theme." }, - "doctor-release": { - "aliases": [], - "args": {}, - "description": "Run CLI doctor-release tests", - "flags": {}, + "theme:serve": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "flags": { + "allow-live": { + "allowNo": false, + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "error-overlay": { + "default": "default", + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "hasDynamicHelp": false, + "multiple": false, + "name": "error-overlay", + "options": [ + "silent", + "default" + ], + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "hasDynamicHelp": false, + "multiple": false, + "name": "host", + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, + "live-reload": { + "default": "hot-reload", + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "hasDynamicHelp": false, + "multiple": false, + "name": "live-reload", + "options": [ + "hot-reload", + "full-page", + "off" + ], + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "hasDynamicHelp": false, + "multiple": false, + "name": "notify", + "type": "option" + }, + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "open": { + "allowNo": false, + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "poll": { + "allowNo": false, + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "type": "boolean" + }, + "port": { + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "hasDynamicHelp": false, + "multiple": false, + "name": "port", + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "theme-editor-sync": { + "allowNo": false, + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, "hasDynamicHelp": false, "hidden": true, - "hiddenAliases": [], - "id": "doctor-release", + "hiddenAliases": [ + ], + "id": "theme:serve", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." }, - "doctor-release:theme": { - "aliases": [], - "args": {}, - "description": "Run all theme command doctor-release tests", + "theme:share": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, "no-color": { + "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "allowNo": false, "type": "boolean" }, - "path": { - "char": "p", - "description": "The path to run tests in. Defaults to current directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "default": "/Users/nickwesselman/src/shopify-cli/packages/cli", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "required": true, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, "store": { "char": "s", - "description": "Store URL (overrides environment).", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", "env": "SHOPIFY_FLAG_STORE", - "name": "store", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "password": { - "description": "Password from Theme Access app (overrides environment).", - "env": "SHOPIFY_FLAG_PASSWORD", - "name": "password", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "doctor-release:theme", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "docs:generate": { - "aliases": [], - "args": {}, - "description": "Generate CLI commands documentation", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "docs:generate", + "hiddenAliases": [ + ], + "id": "theme:share", + "multiEnvironmentsFlags": [ + "store", + "password", + "path" + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name." }, - "notifications:list": { - "aliases": [], - "args": {}, - "description": "List current notifications configured for the CLI.", + "upgrade": { + "aliases": [ + ], + "args": { + }, + "description": "Shows details on how to upgrade Shopify CLI.", + "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI.", + "enableJsonFlag": false, "flags": { - "ignore-errors": { - "description": "Don't fail if an error occurs.", - "env": "SHOPIFY_FLAG_IGNORE_ERRORS", - "hidden": false, - "name": "ignore-errors", - "allowNo": false, - "type": "boolean" - } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "notifications:list", + "hiddenAliases": [ + ], + "id": "upgrade", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Shows details on how to upgrade Shopify CLI." }, - "notifications:generate": { - "aliases": [], - "args": {}, - "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", - "flags": {}, + "version": { + "aliases": [ + ], + "args": { + }, + "description": "Shopify CLI version currently installed.", + "enableJsonFlag": false, + "flags": { + }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "notifications:generate", + "hiddenAliases": [ + ], + "id": "version", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false + "strict": true }, - "cache:clear": { - "aliases": [], - "args": {}, - "description": "Clear the CLI cache, used to store some API responses and handle notifications status", - "flags": {}, + "webhook:trigger": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "flags": { + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n ยท For remote HTTP testing, use a URL that starts with https://\n ยท For local HTTP testing, use http://localhost:{port}/{url-path}\n ยท For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n ยท For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "address", + "required": false, + "type": "option" + }, + "api-version": { + "description": "The API Version of the webhook topic.", + "env": "SHOPIFY_FLAG_API_VERSION", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "api-version", + "required": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-id", + "type": "option" + }, + "client-secret": { + "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", + "env": "SHOPIFY_FLAG_CLIENT_SECRET", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "client-secret", + "required": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "config", + "type": "option" + }, + "delivery-method": { + "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", + "env": "SHOPIFY_FLAG_DELIVERY_METHOD", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "delivery-method", + "options": [ + "http", + "google-pub-sub", + "event-bridge" + ], + "required": false, + "type": "option" + }, + "help": { + "allowNo": false, + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", + "hidden": false, + "name": "help", + "required": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { + "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "type": "boolean" + }, + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "shared-secret", + "required": false, + "type": "option" + }, + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "topic", + "required": false, + "type": "option" + } + }, "hasDynamicHelp": false, "hidden": true, - "hiddenAliases": [], - "id": "cache:clear", + "hiddenAliases": [ + ], + "id": "webhook:trigger", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false + "summary": "Trigger delivery of a sample webhook topic payload to a designated address." } }, "version": "3.92.0" diff --git a/packages/e2e/data/snapshots/commands.txt b/packages/e2e/data/snapshots/commands.txt index 0c727fc0868..b6c8a291c98 100644 --- a/packages/e2e/data/snapshots/commands.txt +++ b/packages/e2e/data/snapshots/commands.txt @@ -38,7 +38,8 @@ โ”‚ โ””โ”€ trigger โ”œโ”€ auth โ”‚ โ”œโ”€ login -โ”‚ โ””โ”€ logout +โ”‚ โ”œโ”€ logout +โ”‚ โ””โ”€ whoami โ”œโ”€ commands โ”œโ”€ config โ”‚ โ””โ”€ autocorrect