From f10fe32872a204da0ebc256cfa7fd4d976f19bf6 Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Fri, 22 May 2026 13:32:33 +0200 Subject: [PATCH] feat(cli): add shopify auth whoami diagnostic command Adds a first-class command to inspect the currently-active CLI session without leaking tokens. Default output is masked (first-8-chars + length); --raw includes the full unredacted Sessions blob for debugging. Also adds the underlying getCurrentSessionInfo() helper to cli-kit so downstream commands can detect placeholder sessions without parsing the on-disk config themselves. --- packages/cli/oclif.manifest.json | 10562 ++++++++--------- packages/cli/src/cli/commands/auth/whoami.ts | 66 + packages/cli/src/index.ts | 2 + 3 files changed, 5192 insertions(+), 5438 deletions(-) create mode 100644 packages/cli/src/cli/commands/auth/whoami.ts diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index d32a1d8c776..92e2a54bed8 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,82 @@ ], "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", - "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" }, - "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": [ @@ -151,115 +143,91 @@ ], "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", "pluginType": "core", "strict": true, - "summary": "Cancel a bulk operation." + "summary": "Cancel a bulk operation.", + "customPluginName": "@shopify/app" }, - "app:bulk:execute": { - "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.", + "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": { - "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": { - "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" + "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" }, - "query": { - "char": "q", - "description": "The GraphQL query or mutation to run as a bulk operation.", - "env": "SHOPIFY_FLAG_QUERY", + "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", - "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", + "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": "query-file", "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -267,132 +235,91 @@ ], "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", - "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.", - "env": "SHOPIFY_FLAG_VERBOSE", - "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", + "hiddenAliases": [], + "id": "app:bulk:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute bulk operations." - }, - "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.", + "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: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 +327,136 @@ ], "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", + "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 +464,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,71 +650,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" + }, + "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": [ @@ -637,87 +735,112 @@ ], "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. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", - "type": "boolean" + "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:use", + "hiddenAliases": [], + "id": "app:logs", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Activate an app configuration.", - "usage": "app config use [config] [flags]" + "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: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.", + "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": { - "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. Automatically disables color output.", - "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": [ @@ -725,121 +848,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:config:validate", + "hiddenAliases": [], + "id": "app:logs:sources", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Validate your app configuration and extensions." + "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: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: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": { - "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", - "type": "option" - }, - "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, "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" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "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", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ - "allow-updates", - "allow-deletes" + "config" ], "hidden": false, - "name": "no-release", - "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": [ @@ -847,284 +923,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" - }, - "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" - }, - "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" - }, "no-color": { - "allowNo": false, "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", - "hasDynamicHelp": false, - "multiple": false, - "name": "notify", - "type": "option" - }, "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" - }, - "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" - }, - "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" - }, - "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" - }, - "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" }, - "theme-app-extension-port": { - "description": "Local port of the theme app extension development server.", - "env": "SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "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", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ - "tunnel" + "config" ], + "hidden": false, + "name": "client-id", "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", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", "exclusive": [ - "tunnel-url" + "config" ], - "name": "use-localhost", - "type": "boolean" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "verbose", + "name": "reset", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:dev", + "hiddenAliases": [], + "id": "app:import-extensions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Run the app." + "customPluginName": "@shopify/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 ", + "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": { - "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": [ @@ -1132,174 +1087,205 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "verbose": { + "name": "json", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "type": "boolean" + }, + "web-env": { + "description": "Outputs environment variables necessary for running and deploying web/.", + "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", "hidden": false, - "name": "verbose", + "name": "web-env", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:dev:clean", + "hiddenAliases": [], + "id": "app:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Cleans up the dev preview from the selected store." + "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: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:init": { + "aliases": [], + "args": {}, "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "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" + }, + "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, + "type": "option" + }, + "path": { + "char": "p", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "default": "/Users/fonso/worktrees/cli-storte-preview-poc/packages/cli", + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "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, - "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", + "flavor": { + "description": "Which flavor of the given template to use.", + "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", + "name": "flavor", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "env-file", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "package-manager": { + "char": "d", + "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "package-manager", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, + "options": [ + "npm", + "yarn", + "pnpm", + "bun" + ], "type": "option" }, - "reset": { + "local": { + "char": "l", + "env": "SHOPIFY_FLAG_LOCAL", + "hidden": true, + "name": "local", "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", + "type": "boolean" + }, + "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" ], "hidden": false, - "name": "reset", - "type": "boolean" + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "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" + ], "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "organization-id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:env:pull", + "hiddenAliases": [], + "id": "app:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Pull app and extensions environment variables." + "summary": "Create a new app project", + "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:config: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", + "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 +1293,185 @@ ], "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. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", + "name": "json", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:env:show", + "hiddenAliases": [], + "id": "app:config:validate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Display 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: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: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, - "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" + "hidden": false, + "name": "reset", + "allowNo": false, + "type": "boolean" }, - "verbose": { + "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, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "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": "verbose", + "name": "allow-deletes", + "allowNo": false, "type": "boolean" }, "version": { - "description": "The API version to use for the query or mutation. Defaults to the latest stable version.", + "description": "The name of the app version to release.", "env": "SHOPIFY_FLAG_VERSION", + "hidden": false, + "name": "version", + "required": true, "hasDynamicHelp": false, "multiple": false, - "name": "version", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:execute", + "hiddenAliases": [], + "id": "app:release", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute GraphQL queries and mutations." + "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:function:build": { - "aliases": [ - ], - "args": { - }, - "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.", + "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, + "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": [ @@ -1530,87 +1479,69 @@ ], "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." + "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:info": { - "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": "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", + "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" - }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "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": { + "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": [ @@ -1618,96 +1549,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:info", + "hiddenAliases": [], + "id": "app:config:use", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print basic information about your function." + "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: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: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, - "hidden": 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. Automatically disables color output.", - "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,115 +1625,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" - }, - "watch": { - "allowNo": true, - "char": "w", - "description": "Re-run the function when the source code changes.", - "env": "SHOPIFY_FLAG_WATCH", - "hidden": false, - "name": "watch", "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." + "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: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: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" - }, - "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", "hasDynamicHelp": false, "multiple": false, - "name": "input", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "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": [ @@ -1831,78 +1700,83 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "env-file": { + "description": "Specify an environment file to update if the update flag is set", + "env": "SHOPIFY_FLAG_ENV_FILE", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "env-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:run", + "hiddenAliases": [], + "id": "app:env:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Run a function locally for testing." + "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: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.", + "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", + "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 +1784,74 @@ ], "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", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:schema", + "hiddenAliases": [], + "id": "app:env:show", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Fetch the latest GraphQL schema for a function." + "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: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: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": { - "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,114 +1859,140 @@ ], "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", + }, + "query": { + "char": "q", + "description": "The GraphQL query or mutation, as a string.", + "env": "SHOPIFY_FLAG_QUERY", + "name": "query", + "required": false, + "hasDynamicHelp": false, + "multiple": 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", + "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": [ - "config" + "variable-file" ], + "name": "variables", "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", + "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, - "hidden": true, "multiple": false, - "name": "clone-url", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "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, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "flavor": { - "description": "Choose a starting template for your extension, where applicable", - "env": "SHOPIFY_FLAG_FLAVOR", + "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, - "hidden": false, "multiple": false, - "name": "flavor", - "options": [ - "vanilla-js", - "react", - "typescript", - "typescript-react", - "wasm", - "rust" - ], "type": "option" }, - "name": { - "char": "n", - "description": "name of your Extension", - "env": "SHOPIFY_FLAG_NAME", + "output-file": { + "description": "The file name where results should be written, instead of STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "name": "output-file", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "name", "type": "option" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:execute", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "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: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": { "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": [ @@ -2112,94 +2000,151 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "template": { - "char": "t", - "description": "Extension template", - "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", + "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": 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", + "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 mutation, in JSON format. Can be specified multiple times.", + "env": "SHOPIFY_FLAG_VARIABLES", + "exclusive": [ + "variable-file" + ], + "name": "variables", + "hasDynamicHelp": false, + "multiple": true, + "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" + }, + "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" + }, + "watch": { + "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": [ - ], - "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: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, + "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" }, - "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", + "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": [ @@ -2207,85 +2152,75 @@ ], "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" - }, - "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-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": [ @@ -2293,85 +2228,206 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "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 - }, - "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.", + "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: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", + "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" }, - "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. Automatically disables color output.", "env": "SHOPIFY_FLAG_JSON", "hidden": false, "name": "json", + "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", + "hidden": false, + "name": "export", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:function:run", + "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" + }, + "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": { "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": [ @@ -2379,318 +2435,168 @@ ], "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" }, - "web-env": { - "allowNo": false, - "description": "Outputs environment variables necessary for running and deploying web/.", - "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "web-env", + "name": "json", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:info", + "hiddenAliases": [], + "id": "app:function:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print basic information about your app and extensions." + "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:init": { - "aliases": [ - ], - "args": { - }, - "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": { - "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, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "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" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "local": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "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, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "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" - ], + "name": "config", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "organization-id", "type": "option" }, - "package-manager": { - "char": "d", - "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", - "hasDynamicHelp": false, + "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": "package-manager", - "options": [ - "npm", - "yarn", - "pnpm", - "bun" - ], "type": "option" }, - "path": { - "char": "p", - "default": ".", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "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" + "name": "reset", + "allowNo": false, + "type": "boolean" }, - "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:init", + "hiddenAliases": [], + "id": "app:function:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Create a new app project" + "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": { - "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 ", + "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, - "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. Automatically disables color output.", - "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" }, - "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.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", + "allowNo": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:logs", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Stream detailed logs for your 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.", - "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + }, + "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": [ @@ -2698,93 +2604,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" }, - "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": [ @@ -2792,97 +2679,121 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "template": { + "char": "t", + "description": "Extension template", + "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "template", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "version": { - "description": "The name of the app version to release.", - "env": "SHOPIFY_FLAG_VERSION", + "name": { + "char": "n", + "description": "name of your Extension", + "env": "SHOPIFY_FLAG_NAME", + "hidden": false, + "name": "name", + "hasDynamicHelp": false, + "multiple": false, + "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, - "name": "version", - "required": true, + "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.", + "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 ", + "customPluginName": "@shopify/app" }, "app:versions:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "aliases": [], + "args": {}, "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, + "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. Automatically disables color output.", - "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": [ @@ -2890,54 +2801,52 @@ ], "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. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", + "name": "json", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "app:versions:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "List deployed versions of your app." + "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" }, "app:webhook:trigger": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "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 ", - "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", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "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, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hidden": false, + "name": "config", + "hasDynamicHelp": false, "multiple": false, - "name": "api-version", - "required": false, "type": "option" }, "client-id": { @@ -2946,2419 +2855,2280 @@ "exclusive": [ "config" ], - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "client-id", + "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", - "hasDynamicHelp": false, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "multiple": false, - "name": "client-secret", + "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, - "type": "option" + "allowNo": false, + "type": "boolean" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", + "hidden": false, + "name": "topic", + "required": false, "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": "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", + "required": false, + "hasDynamicHelp": false, + "multiple": false, "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", + "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": "help", + "name": "client-secret", "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" - }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", - "hasDynamicHelp": false, + "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, - "multiple": false, - "name": "topic", + "name": "address", "required": false, + "hasDynamicHelp": false, + "multiple": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "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." + "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" }, - "auth:login": { - "aliases": [ - ], - "args": { - }, - "description": "Logs you in to your Shopify account.", - "enableJsonFlag": false, + "demo:watcher": { + "aliases": [], + "args": {}, "flags": { - "alias": { - "description": "Alias of the session you want to login to.", - "env": "SHOPIFY_FLAG_AUTH_ALIAS", + "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, + "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": "alias", "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": "auth:login", + "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" }, - "auth:logout": { - "aliases": [ - ], - "args": { - }, - "description": "Logs you out of the Shopify account or Partner account and store.", - "enableJsonFlag": false, + "organization:list": { + "aliases": [], + "args": {}, + "description": "Lists the Shopify organizations that you have access to, along with their organization IDs.", "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. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" + } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "auth:logout", + "hiddenAliases": [], + "id": "organization:list", "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", + "strict": true, + "summary": "List Shopify organizations you have access to.", "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "cache:clear", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true + "descriptionWithMarkdown": "Lists the Shopify organizations that you have access to, along with their organization IDs.", + "customPluginName": "@shopify/app" }, - "commands": { - "aliases": [ - ], + "theme:init": { + "aliases": [], "args": { + "name": { + "description": "Name of the new theme", + "name": "name", + "required": false + } }, - "customPluginName": "@oclif/plugin-commands", - "description": "List all <%= config.bin %> commands.", - "enableJsonFlag": true, + "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": { - "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" - }, - "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": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Show hidden commands.", - "name": "hidden", "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" }, - "no-truncate": { - "allowNo": false, - "description": "Do not truncate output.", - "exclusive": [ - "tree" - ], - "name": "no-truncate", - "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" }, - "sort": { - "default": "id", - "description": "Property to sort by.", - "exclusive": [ - "tree" - ], + "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": "sort", - "options": [ - "id", - "plugin", - "summary", - "type" - ], "type": "option" }, - "tree": { + "latest": { + "char": "l", + "description": "Downloads the latest release of the `clone-url`", + "env": "SHOPIFY_FLAG_LATEST", + "name": "latest", "allowNo": false, - "description": "Show tree of commands.", - "name": "tree", "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." - }, - "config:autoupgrade:off": { - "aliases": [ - ], - "args": { - }, - "description": "Disable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is disabled, Shopify CLI won't automatically update. Run `shopify upgrade` to update manually.\n\n To enable auto-upgrade, run `shopify config autoupgrade on`.\n", - "descriptionWithMarkdown": "Disable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is disabled, Shopify CLI won't automatically update. Run `shopify upgrade` to update manually.\n\n To enable auto-upgrade, run `shopify config autoupgrade on`.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autoupgrade:off", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Disable automatic upgrades for Shopify CLI." - }, - "config:autoupgrade:on": { - "aliases": [ - ], - "args": { - }, - "description": "Enable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version once per day. Major version upgrades are skipped and must be done manually.\n\n To disable auto-upgrade, run `shopify config autoupgrade off`.\n", - "descriptionWithMarkdown": "Enable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version once per day. Major version upgrades are skipped and must be done manually.\n\n To disable auto-upgrade, run `shopify config autoupgrade off`.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autoupgrade:on", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Enable automatic upgrades for Shopify CLI." - }, - "config:autoupgrade:status": { - "aliases": [ - ], - "args": { - }, - "description": "Check whether auto-upgrade is enabled, disabled, or not yet configured.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version after each command.\n\n Run `shopify config autoupgrade on` or `shopify config autoupgrade off` to configure it.\n", - "descriptionWithMarkdown": "Check whether auto-upgrade is enabled, disabled, or not yet configured.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version after each command.\n\n Run `shopify config autoupgrade on` or `shopify config autoupgrade off` to configure it.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autoupgrade:status", + "hiddenAliases": [], + "id": "theme:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Check whether auto-upgrade is enabled, disabled, or not yet configured." + "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" }, - "debug:command-flags": { - "aliases": [ - ], - "args": { - }, - "description": "View all the available command flags", - "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": { - "csv": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "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, + }, + "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": "client-id", "type": "option" }, + "auto-correct": { + "char": "a", + "description": "Automatically fix offenses", + "env": "SHOPIFY_FLAG_AUTO_CORRECT", + "name": "auto-correct", + "required": false, + "allowNo": false, + "type": "boolean" + }, "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_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, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "no-color": { + "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" + ], + "type": "option" + }, + "init": { + "description": "Generate a .theme-check.yml file", + "env": "SHOPIFY_FLAG_INIT", + "name": "init", + "required": false, "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", + "list": { + "description": "List enabled checks", + "env": "SHOPIFY_FLAG_LIST", + "name": "list", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "output": { + "char": "o", + "description": "The output format to use", + "env": "SHOPIFY_FLAG_OUTPUT", + "name": "output", + "required": false, + "default": "text", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, + "options": [ + "text", + "json" + ], "type": "option" }, - "reset": { + "print": { + "description": "Output active config to STDOUT", + "env": "SHOPIFY_FLAG_PRINT", + "name": "print", + "required": false, "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", "type": "boolean" }, - "verbose": { + "version": { + "char": "v", + "description": "Print Theme Check version", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "required": false, "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" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "demo:watcher", + "hiddenAliases": [], + "id": "theme:check", "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": [ + "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" ], - "id": "doctor-release", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true + "customPluginName": "@shopify/theme" }, - "doctor-release:theme": { - "aliases": [ - ], - "args": { - }, - "description": "Run all theme command doctor-release tests", - "enableJsonFlag": false, + "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": { - "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", + "allowNo": false, "type": "boolean" }, - "password": { - "description": "Password from Theme Access app (overrides environment).", - "env": "SHOPIFY_FLAG_PASSWORD", + "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": "password", "type": "option" }, - "path": { - "char": "p", - "default": ".", - "description": "The path to run tests in. Defaults to current directory.", - "env": "SHOPIFY_FLAG_PATH", + "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" }, "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" }, - "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" + }, + "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" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "doctor-release:theme", + "hiddenAliases": [], + "id": "theme:console", "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": [ + "strict": true, + "summary": "Shopify Liquid REPL (read-eval-print loop) tool", + "usage": [ + "theme console", + "theme console --url /products/classic-leather-jacket" ], - "id": "help", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false, - "usage": "help [command] [flags]" + "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" }, - "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, + "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": { - "bundle-stats": { - "allowNo": true, - "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", - "name": "bundle-stats", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, "type": "boolean" }, - "codegen": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "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" - ], - "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" }, - "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" + "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" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "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": "entry", "type": "option" }, - "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" - }, - "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" - }, - "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" }, - "sourcemap": { - "allowNo": true, - "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", - "name": "sourcemap", + "development": { + "char": "d", + "description": "Delete your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, "type": "boolean" }, - "watch": { + "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, - "description": "Watches for changes and rebuilds the project writing output to disk.", - "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", - "name": "watch", "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": "hydrogen:build", + "hiddenAliases": [], + "id": "theme:delete", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:check": { - "aliases": [ + "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" + ] ], - "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, + "customPluginName": "@shopify/theme" + }, + "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": { + "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", + "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" - } - }, - "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.", + }, + "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": "codegen-config-path", - "required": false, "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: `:`.", + "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": "force-sfapi-version", "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", + "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, - "name": "path", "type": "option" }, - "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": "hydrogen:codegen", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:customer-account-push": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Push project configuration to admin", - "enableJsonFlag": false, - "flags": { - "dev-origin": { - "description": "The development domain of your application.", + "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": "dev-origin", - "required": true, + "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", + "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, - "name": "path", + "options": [ + "silent", + "default" + ], "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.", + "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, "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'", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "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/'", + "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": "storefront-id", "type": "option" - } - }, - "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", + }, + "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, + "type": "boolean" + }, + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", "hasDynamicHelp": false, - "multiple": false, - "name": "entry", + "multiple": true, "type": "option" }, - "output": { - "default": "startup.cpuprofile", - "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", + "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, - "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", + "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" + }, + "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:debug:cpu", + "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: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, + "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": { - "auth-bypass-token": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "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", - "required": false, - "type": "option" + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, - "build-command": { - "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "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": "build-command", - "required": false, "type": "option" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "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" - ], + "name": { + "char": "n", + "description": "Name of the newly duplicated theme.", + "env": "SHOPIFY_FLAG_NAME", + "name": "name", "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", + "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-branch", "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables for the deployment.", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "env-file", - "required": false, + "multiple": true, "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", + "description": "Force the duplicate operation to run without prompts or confirmations.", + "env": "SHOPIFY_FLAG_FORCE", "name": "force", - "required": false, + "allowNo": false, "type": "boolean" - }, - "force-client-sourcemap": { + } + }, + "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'" + ], + "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": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "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" }, - "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, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": 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", + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, "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", + "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, "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", + "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": "metadata-user", - "required": false, "type": "option" }, - "metadata-version": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", + "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": "metadata-version", - "required": false, "type": "option" }, - "no-verify": { - "allowNo": false, - "description": "Skip the routability verification step after deployment.", - "name": "no-verify", - "required": 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", + "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" }, - "preview": { + "development": { + "char": "d", + "description": "Retrieve info from your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "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": { + "theme": { "char": "t", - "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", - "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "token", - "required": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:deploy", + "hiddenAliases": [], + "id": "theme:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:dev": { - "aliases": [ + "strict": true, + "multiEnvironmentsFlags": [ + "store", + "password" ], - "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, + "customPluginName": "@shopify/theme" + }, + "theme:language-server": { + "aliases": [], + "args": {}, + "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", "flags": { - "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" - ], - "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" - }, - "customer-account-push": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "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": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "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": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "theme:language-server", + "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" + }, + "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, - "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": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Skip the version check when running `hydrogen dev`", - "name": "disable-version-check", - "required": false, "type": "boolean" }, - "disable-virtual-routes": { + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "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", + "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": "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" - ], + "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": "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", + "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-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`.", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "env-file", - "required": false, + "multiple": true, "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", + "role": { + "description": "Only list themes with the given role.", + "env": "SHOPIFY_FLAG_ROLE", + "name": "role", "hasDynamicHelp": false, "multiple": false, - "name": "inspector-port", + "options": [ + "live", + "unpublished", + "development" + ], "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", + "name": { + "description": "Only list themes that contain the given name.", + "env": "SHOPIFY_FLAG_NAME", + "name": "name", "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", + "id": { + "description": "Only list theme with the given ID.", + "env": "SHOPIFY_FLAG_ID", + "name": "id", "hasDynamicHelp": false, "multiple": false, - "name": "port", - "required": false, "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" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:dev", + "hiddenAliases": [], + "id": "theme:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:env:list": { - "aliases": [ + "strict": true, + "multiEnvironmentsFlags": [ + "store", + "password" ], - "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, + "customPluginName": "@shopify/theme" + }, + "theme:metafields:pull": { + "aliases": [], + "args": {}, + "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", "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 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" + }, + "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, - "hiddenAliases": [ - ], - "id": "hydrogen:env: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" }, - "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, + "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": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "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, - "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", + "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": "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`.", + "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-file", - "required": false, "type": "option" }, - "force": { + "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, - "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", + "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, - "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:pull", + "hiddenAliases": [], + "id": "theme:open", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "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" }, - "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: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": { - "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", + "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" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:push", + "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" }, - "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, + "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": { - "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" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "force": { + "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" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "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": "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", + "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" }, - "typescript": { - "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", + "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": "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" + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "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", + "url": { + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "name": "url", + "default": "/", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "typescript": { + "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": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "allowNo": false, - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:generate:routes", + "hiddenAliases": [], + "id": "theme:profile", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:init": { - "aliases": [ + "strict": true, + "summary": "Profile the Liquid rendering of a theme page.", + "usage": [ + "theme profile", + "theme profile --url /products/classic-leather-jacket" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Creates a new Hydrogen storefront.", - "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", - "enableJsonFlag": false, + "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": "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": { + "force": { + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", "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", - "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", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "template", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:init", + "hiddenAliases": [], + "id": "theme:publish", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:link": { - "aliases": [ + "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" ], - "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, + "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": { - "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": 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, - "name": "path", "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", + "overrides": { + "description": "Path to a JSON overrides file.", + "env": "SHOPIFY_FLAG_OVERRIDES", + "name": "overrides", + "required": true, "hasDynamicHelp": false, "multiple": false, - "name": "shop", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:login", - "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", + }, + "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, - "name": "path", "type": "option" + }, + "open": { + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "allowNo": false, + "type": "boolean" + }, + "json": { + "description": "Output the preview URL and identifier as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "name": "json", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:logout", + "hiddenAliases": [], + "id": "theme:preview", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "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" }, - "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: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": { - "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`.", + "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": false, - "name": "env-file", - "required": false, + "multiple": true, "type": "option" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "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": false, - "name": "inspector-port", + "multiple": true, "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", + "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" }, - "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" + "development": { + "char": "d", + "description": "Pull theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" }, - "verbose": { + "live": { + "char": "l", + "description": "Pull theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", "allowNo": false, - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, "type": "boolean" }, - "watch": { + "nodelete": { + "char": "n", + "description": "Prevent deleting local files that don't exist remotely.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "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, - "dependsOn": [ - "build" - ], - "description": "Watches for changes and rebuilds the project.", - "name": "watch", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:preview", + "hiddenAliases": [], + "id": "theme:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:setup": { - "aliases": [ + "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" + ] ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Scaffold routes and core functionality.", - "enableJsonFlag": false, + "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": { - "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" }, - "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", + "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": "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", + "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" }, - "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" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "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", - "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", + "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: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", + }, + "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" - } - }, - "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", + }, + "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": "path", + "multiple": true, "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", + }, + "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. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "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": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:unlink", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "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": { + }, + "development": { + "char": "d", + "description": "Push theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "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", + "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", "type": "option" }, - "version": { - "char": "v", - "description": "A target hydrogen version to update to", + "live": { + "char": "l", + "description": "Push theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, + "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" + }, + "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, + "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": "version", - "required": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:upgrade", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "kitchen-sink": { - "aliases": [ - ], - "args": { - }, - "description": "View all the available UI kit components", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - "kitchen-sink all" - ], - "id": "kitchen-sink", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "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, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:static", + "hiddenAliases": [], + "id": "theme:push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "notifications:generate": { - "aliases": [ + "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" ], - "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": [ + "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" + ] ], - "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: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": { - "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" + }, + "name": { + "char": "n", + "description": "The new name for the theme.", + "env": "SHOPIFY_FLAG_NEW_NAME", + "name": "name", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "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", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "live": { + "char": "l", + "description": "Rename your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "notifications:list", + "hiddenAliases": [], + "id": "theme:rename", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "organization:list": { - "aliases": [ + "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" + ] ], - "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, + "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": { - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "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" + }, + "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, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "organization:list", + "hiddenAliases": [], + "id": "theme:share", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "List Shopify organizations you have access to." + "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": { - }, - "customPluginName": "@oclif/plugin-plugins", + "aliases": [], + "args": {}, "description": "List installed plugins.", - "enableJsonFlag": true, "examples": [ "<%= config.bin %> <%= command.id %>" ], "flags": { - "core": { - "allowNo": false, - "description": "Show core plugins.", - "name": "core", - "type": "boolean" - }, "json": { - "allowNo": false, "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": [ - ], + "hiddenAliases": [], "id": "plugins", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, "plugins:inspect": { - "aliases": [ - ], + "aliases": [], "args": { "plugin": { "default": ".", @@ -5367,43 +5137,42 @@ "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": { - "help": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", "allowNo": false, + "type": "boolean" + }, + "help": { "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", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "plugins:inspect", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": false, - "usage": "plugins:inspect PLUGIN..." + "usage": "plugins:inspect PLUGIN...", + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, "plugins:install": { "aliases": [ @@ -5416,9 +5185,7 @@ "required": true } }, - "customPluginName": "@oclif/plugin-plugins", "description": "", - "enableJsonFlag": true, "examples": [ { "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", @@ -5434,67 +5201,67 @@ } ], "flags": { - "force": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", "allowNo": false, + "type": "boolean" + }, + "force": { "char": "f", "description": "Force npm to fetch remote resources even if a local copy exists on disk.", "name": "force", + "allowNo": false, "type": "boolean" }, "help": { - "allowNo": false, "char": "h", "description": "Show CLI help.", "name": "help", + "allowNo": false, "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", + "allowNo": false, "type": "boolean" }, "verbose": { - "allowNo": false, "char": "v", "description": "Show verbose npm output.", "exclusive": [ "silent" ], "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "plugins:install", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": false, - "summary": "Installs a plugin into <%= config.bin %>." + "summary": "Installs a plugin into <%= config.bin %>.", + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, "plugins:link": { - "aliases": [ - ], + "aliases": [], "args": { "path": { "default": ".", @@ -5503,73 +5270,69 @@ "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": { "help": { - "allowNo": false, "char": "h", "description": "Show CLI help.", "name": "help", + "allowNo": false, "type": "boolean" }, "install": { - "allowNo": true, "description": "Install dependencies after linking the plugin.", "name": "install", + "allowNo": true, "type": "boolean" }, "verbose": { - "allowNo": false, "char": "v", "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "plugins:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Links a plugin into the CLI for development." + "summary": "Links a plugin into the CLI for development.", + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, "plugins:reset": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", - "enableJsonFlag": false, + "aliases": [], + "args": {}, "flags": { "hard": { - "allowNo": false, "name": "hard", "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", + "allowNo": false, "type": "boolean" }, "reinstall": { - "allowNo": false, "name": "reinstall", "summary": "Reinstall all plugins after uninstalling.", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "plugins:reset", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Remove all user-installed and linked plugins." + "summary": "Remove all user-installed and linked plugins.", + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, "plugins:uninstall": { "aliases": [ @@ -5582,2576 +5345,2499 @@ "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": { - "allowNo": false, "char": "h", "description": "Show CLI help.", "name": "help", + "allowNo": false, "type": "boolean" }, "verbose": { - "allowNo": false, "char": "v", "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "plugins:uninstall", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false + "strict": false, + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, "plugins:update": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", + "aliases": [], + "args": {}, "description": "Update installed plugins.", - "enableJsonFlag": false, "flags": { "help": { - "allowNo": false, "char": "h", "description": "Show CLI help.", "name": "help", + "allowNo": false, "type": "boolean" }, "verbose": { - "allowNo": false, "char": "v", "name": "verbose", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "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.", + "strict": true, "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": { - }, + "customPluginName": "@oclif/plugin-plugins" + }, + "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": "search", + "hiddenAliases": [], + "id": "config:autocorrect:off", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "usage": "search [query]" + "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" }, - "store:auth": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/store", - "description": "Authenticates the app against the specified store for store commands and stores an online access token for later reuse.\n\nRe-run this command if the stored token is missing, expires, or no longer has the scopes you need.", - "descriptionWithMarkdown": "Authenticates the app against the specified store for store commands and stores an online access token for later reuse.\n\nRe-run this command if the stored token is missing, expires, or no longer has the scopes you need.", - "examples": [ - "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --scopes read_products,write_products", - "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --scopes read_products,write_products --json" - ], - "flags": { - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "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" - }, - "scopes": { - "description": "Comma-separated Admin API scopes to request for the app.", - "env": "SHOPIFY_FLAG_SCOPES", - "hasDynamicHelp": false, - "multiple": false, - "name": "scopes", - "required": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "The myshopify.com domain of the store to authenticate against.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "required": true, - "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - } - }, + "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": "store:auth", + "hiddenAliases": [], + "id": "config:autocorrect:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Authenticate an app against a store for store commands." + "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" }, - "store:create:preview": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/store", - "description": "Creates a Preview Store via the Core preview-stores orchestrator. The returned admin API token is persisted locally as a stored store-auth session, so the new store can be used immediately as a target for `shopify store execute --store ` without any further login.\n\nThe orchestrator endpoint, basic-auth username, and basic-auth secret default to the local development rig values used by the M1 prototype. Override them with `--core-url`, `--cli-username`, and `--cli-secret` (or the corresponding `SHOPIFY_FLAG_*` environment variables) when targeting a non-default environment.", - "descriptionWithMarkdown": "Creates a Preview Store via the Core preview-stores orchestrator. The returned admin API token is persisted locally as a stored store-auth session, so the new store can be used immediately as a target for `shopify store execute --store ` without any further login.\n\nThe orchestrator endpoint, basic-auth username, and basic-auth secret default to the local development rig values used by the M1 prototype. Override them with `--core-url`, `--cli-username`, and `--cli-secret` (or the corresponding `SHOPIFY_FLAG_*` environment variables) when targeting a non-default environment.", - "examples": [ - "<%= config.bin %> <%= command.id %> --shop-name my-preview", - "<%= config.bin %> <%= command.id %> --shop-name my-preview --email demo@previewstore.invalid", - "<%= config.bin %> <%= command.id %> --shop-name my-preview --json" - ], - "flags": { - "cli-secret": { - "description": "Basic-auth secret for the Core endpoint. Defaults to the development rig value.", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_CLI_SECRET", - "hasDynamicHelp": false, - "multiple": false, - "name": "cli-secret", - "required": false, - "type": "option" - }, - "cli-username": { - "description": "Basic-auth username for the Core endpoint. Defaults to the development rig value.", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_CLI_USERNAME", - "hasDynamicHelp": false, - "multiple": false, - "name": "cli-username", - "required": false, - "type": "option" - }, - "core-url": { - "description": "Base URL of the Core preview-stores orchestrator. Defaults to the local development rig.", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_CORE_URL", - "hasDynamicHelp": false, - "multiple": false, - "name": "core-url", - "required": false, - "type": "option" - }, - "country": { - "description": "ISO country code for the new store. Defaults to \"US\".", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_COUNTRY", - "hasDynamicHelp": false, - "multiple": false, - "name": "country", - "required": false, - "type": "option" - }, - "email": { - "description": "Email to associate with the placeholder identity. Defaults to a generated `@previewstore.invalid` address chosen by Core.", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_EMAIL", - "hasDynamicHelp": false, - "multiple": false, - "name": "email", - "required": false, - "type": "option" - }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "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" - }, - "shop-name": { - "char": "n", - "description": "Subdomain prefix for the new preview store. Auto-generated if omitted.", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_SHOP_NAME", - "hasDynamicHelp": false, - "multiple": false, - "name": "shop-name", - "required": 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": "store:create:preview", + "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": "Create a Preview Store backed by a placeholder identity." + "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" }, - "store:execute": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/store", - "description": "Executes an Admin API GraphQL query or mutation on the specified store using previously stored app authentication.\n\nRun `shopify store auth` first to create stored auth for the store.\n\nMutations are disabled by default. Re-run with `--allow-mutations` if you intend to modify store data.", - "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store using previously stored app authentication.\n\nRun `shopify store auth` first to create stored auth for the store.\n\nMutations are disabled by default. Re-run with `--allow-mutations` if you intend to modify store data.", - "examples": [ - "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query \"query { shop { name } }\"", - "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query-file ./operation.graphql --variables '{\"id\":\"gid://shopify/Product/1\"}'", - "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query \"mutation { shop { id } }\" --allow-mutations", - "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query \"query { shop { name } }\" --json" - ], + "commands": { + "aliases": [], + "args": {}, + "description": "List all <%= config.bin %> commands.", "flags": { - "allow-mutations": { - "allowNo": false, - "description": "Allow GraphQL mutations to run against the target store.", - "env": "SHOPIFY_FLAG_ALLOW_MUTATIONS", - "name": "allow-mutations", - "type": "boolean" - }, "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, + "description": "Format output as json.", + "helpGroup": "GLOBAL", "name": "json", - "type": "boolean" - }, - "no-color": { "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "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" - }, - "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" - }, - "store": { - "char": "s", - "description": "The myshopify.com domain of the store to execute against.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "required": true, - "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", + "columns": { + "char": "c", + "description": "Only show provided columns (comma-separated).", "exclusive": [ - "variables" + "tree" ], + "name": "columns", + "delimiter": ",", "hasDynamicHelp": false, - "multiple": false, - "name": "variable-file", + "multiple": true, + "options": [ + "id", + "plugin", + "summary", + "type" + ], "type": "option" }, - "variables": { - "char": "v", - "description": "The values for any GraphQL variables in your query or mutation, in JSON format.", - "env": "SHOPIFY_FLAG_VARIABLES", + "deprecated": { + "description": "Show deprecated commands.", + "name": "deprecated", + "allowNo": false, + "type": "boolean" + }, + "extended": { + "char": "x", + "description": "Show extra columns.", "exclusive": [ - "variable-file" + "tree" ], - "hasDynamicHelp": false, - "multiple": false, - "name": "variables", - "type": "option" + "name": "extended", + "allowNo": false, + "type": "boolean" }, - "verbose": { + "hidden": { + "description": "Show hidden commands.", + "name": "hidden", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "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": "store:execute", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Execute GraphQL queries and mutations on a store." - }, - "store:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/store", - "description": "Lists every store that has a locally stored auth session, including both standard PKCE-authenticated stores (via `shopify store auth`) and preview stores (via `shopify store create preview`).\n\nUse `--kind` to filter by session type, or `--json` to emit a machine-readable list for agent consumption.", - "descriptionWithMarkdown": "Lists every store that has a locally stored auth session, including both standard PKCE-authenticated stores (via `shopify store auth`) and preview stores (via `shopify store create preview`).\n\nUse `--kind` to filter by session type, or `--json` to emit a machine-readable list for agent consumption.", - "examples": [ - "<%= config.bin %> <%= command.id %>", - "<%= config.bin %> <%= command.id %> --kind preview", - "<%= config.bin %> <%= command.id %> --json" - ], - "flags": { - "json": { + "no-truncate": { + "description": "Do not truncate output.", + "exclusive": [ + "tree" + ], + "name": "no-truncate", "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" }, - "kind": { - "description": "Filter results to a single session kind.", - "env": "SHOPIFY_FLAG_STORE_LIST_KIND", + "sort": { + "description": "Property to sort by.", + "exclusive": [ + "tree" + ], + "name": "sort", + "default": "id", "hasDynamicHelp": false, "multiple": false, - "name": "kind", "options": [ - "standard", - "preview" + "id", + "plugin", + "summary", + "type" ], - "required": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "verbose": { + "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": "store:list", + "hiddenAliases": [], + "id": "commands", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "List stored store-auth sessions." + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-commands" }, - "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)", + "hydrogen:dev": { + "aliases": [], + "args": {}, + "description": "Runs Hydrogen storefront in an Oxygen worker for development.", "flags": { - "auto-correct": { - "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", + "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": "config", - "required": 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" }, - "fail-level": { - "default": "error", - "description": "Minimum severity for exit with error code", - "env": "SHOPIFY_FLAG_FAIL_LEVEL", + "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": "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", + "codegen": { + "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "name": "codegen", "required": false, + "allowNo": false, "type": "boolean" }, - "list": { - "allowNo": false, - "description": "List enabled checks", - "env": "SHOPIFY_FLAG_LIST", - "name": "list", + "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, + "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", + "allowNo": false, "type": "boolean" }, - "no-color": { + "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, - "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", + "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": "output", - "options": [ - "text", - "json" + "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" ], - "required": false, + "name": "env", + "hasDynamicHelp": false, + "multiple": false, "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" }, - "print": { + "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" + }, + "disable-version-check": { + "description": "Skip the version check when running `hydrogen dev`", + "name": "disable-version-check", + "required": false, "allowNo": false, - "description": "Output active config to STDOUT", - "env": "SHOPIFY_FLAG_PRINT", - "name": "print", + "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": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", "name": "verbose", + "required": false, + "allowNo": false, "type": "boolean" }, - "version": { - "allowNo": false, - "char": "v", - "description": "Print Theme Check version", - "env": "SHOPIFY_FLAG_VERSION", - "name": "version", + "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": "theme:check", - "multiEnvironmentsFlags": [ - "path" - ], + "hiddenAliases": [], + "id": "hydrogen:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Validate the theme." + "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: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", + "hydrogen:build": { + "aliases": [], + "args": {}, + "description": "Builds a Hydrogen storefront for production.", "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" - }, - "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, + "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, - "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", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, "multiple": false, - "name": "store-password", "type": "option" }, - "url": { - "default": "/", - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", + "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, "hasDynamicHelp": false, "multiple": false, - "name": "url", "type": "option" }, - "verbose": { + "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, - "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, + "hiddenAliases": [], + "id": "hydrogen:build", "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" - ] + "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:delete": { - "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": "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.", + "description": "Returns diagnostic information about a Hydrogen storefront.", "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", + "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:check", + "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" + }, + "hydrogen:codegen": { + "aliases": [], + "args": {}, + "description": "Generate types for the Storefront API queries found in your project.", + "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" }, - "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", + "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": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "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": true, - "name": "theme", + "multiple": false, "type": "option" }, - "verbose": { + "watch": { + "description": "Watch the project for changes to update types on file save.", + "name": "watch", + "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:delete", - "multiEnvironmentsFlags": [ - "store", - "password", - [ - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "hydrogen:codegen", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Delete remote themes from the connected store. This command can't be undone." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "customPluginName": "@shopify/cli-hydrogen" }, - "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).", + "hydrogen:deploy": { + "aliases": [], + "args": {}, + "description": "Builds and deploys a Hydrogen storefront to Oxygen.", "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", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "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", + "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", - "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", + "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": "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", + "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": "live-reload", - "options": [ - "hot-reload", - "full-page", - "off" - ], "type": "option" }, - "no-color": { + "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, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "nodelete": { + "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, - "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", + "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": "notify", "type": "option" }, - "only": { - "char": "o", - "description": "Hot reload only files that match the specified pattern.", - "env": "SHOPIFY_FLAG_ONLY", + "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": 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", + "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" }, - "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", + "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", - "noCacheDefault": true, "type": "option" }, - "poll": { - "allowNo": false, - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", + "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" }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", + "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": "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", + "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" }, - "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" + "metadata-version": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", + "hidden": true, + "name": "metadata-version", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "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:dev", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:deploy", "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." + "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: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```", + "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": "Force the duplicate operation to run without prompts or confirmations.", - "env": "SHOPIFY_FLAG_FORCE", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "type": "boolean" - }, - "json": { "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" }, - "name": { - "char": "n", - "description": "Name of the newly duplicated theme.", - "env": "SHOPIFY_FLAG_NAME", + "path": { + "description": "The path to the directory of the new Hydrogen storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { + "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": { + "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, - "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", + "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": "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", + "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": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "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, + "type": "boolean" + }, + "package-manager": { + "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", + "hidden": true, + "name": "package-manager", "hasDynamicHelp": false, "multiple": false, - "name": "theme", + "options": [ + "npm", + "yarn", + "pnpm", + "unknown" + ], "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", + "hiddenAliases": [], + "id": "hydrogen:init", "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'" - ] + "enableJsonFlag": false, + "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" }, - "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.", + "hydrogen:link": { + "aliases": [], + "args": {}, + "description": "Link a local project to one of your shop's Hydrogen storefronts.", "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. Automatically disables color output.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "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, + "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, - "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", + "storefront": { + "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", + "env": "SHOPIFY_HYDROGEN_STOREFRONT", + "name": "storefront", "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" - ], + "hiddenAliases": [], + "id": "hydrogen:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "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" }, - "theme:init": { - "aliases": [ - ], - "args": { - "name": { - "description": "Name of the new theme", - "name": "name", - "required": false + "hydrogen:list": { + "aliases": [], + "args": {}, + "description": "Returns a list of Hydrogen storefronts available on a given shop.", + "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" } }, - "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 ", + "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": { - "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", + "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": "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", + "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", - "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, + "hiddenAliases": [], + "id": "hydrogen:login", "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, + "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", + "customPluginName": "@shopify/cli-hydrogen" }, - "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).", + "hydrogen:logout": { + "aliases": [], + "args": {}, + "description": "Logout of your local session.", "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, + "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:logout", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Start a Language Server Protocol server." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Log out from the current shop.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Lists the themes in your store, along with their IDs and statuses.", + "hydrogen:preview": { + "aliases": [], + "args": {}, + "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", "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", + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "name": "port", "hasDynamicHelp": false, "multiple": false, - "name": "id", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "name": { - "description": "Only list themes that contain the given name.", - "env": "SHOPIFY_FLAG_NAME", + "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": "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", + "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": "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-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": "path", - "noCacheDefault": true, "type": "option" }, - "role": { - "description": "Only list themes with the given role.", - "env": "SHOPIFY_FLAG_ROLE", + "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": "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", + "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", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { + "codegen": { + "dependsOn": [ + "build" + ], + "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "name": "codegen", + "required": false, "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "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, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:list", - "multiEnvironmentsFlags": [ - "store", - "password" - ], + "hiddenAliases": [], + "id": "hydrogen:preview", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "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" }, - "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.", + "hydrogen:setup": { + "aliases": [], + "args": {}, + "description": "Scaffold routes and core functionality.", "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" - }, - "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", + "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": "password", "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 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", + "version": { + "char": "v", + "description": "A target hydrogen version to update to", + "name": "version", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "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:metafields:pull", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:upgrade", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Download metafields definitions from your shop into a local file." + "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: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:customer-account-push": { + "aliases": [], + "args": {}, + "description": "Push project configuration to admin", "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", + "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": "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", + "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": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "dev-origin": { + "description": "The development domain of your application.", + "name": "dev-origin", + "required": true, "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", + "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": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "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, - "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, + "hiddenAliases": [], + "id": "hydrogen:customer-account-push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Opens the preview of your remote theme." + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "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.", + "hydrogen:debug:cpu": { + "aliases": [], + "args": {}, + "description": "Builds and profiles the server startup time the app.", "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" + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "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" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:package", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:debug:cpu", "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": "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: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:env:list": { + "aliases": [], + "args": {}, + "description": "List the environments on your linked Hydrogen storefront.", "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" + } + }, + "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, "type": "option" }, - "json": { - "allowNo": false, - "description": "Output the preview URL and identifier as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "name": "json", - "type": "boolean" - }, - "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", + "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": "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-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": "password", "type": "option" }, "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" }, - "preview-id": { - "description": "An existing preview identifier to update instead of creating a new preview.", - "env": "SHOPIFY_FLAG_PREVIEW_ID", + "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" + } + }, + "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": "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", + "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" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_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", + "name": "path", "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, + "hiddenAliases": [], + "id": "hydrogen:env:push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Applies JSON overrides to a theme and returns a preview URL." + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:profile": { - "aliases": [ - ], + "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/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.", + "description": "Generates a standard Shopify route.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "adapter", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON. Automatically disables color output.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { + "typescript": { + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "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", + "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": "password", "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 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: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": "store", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "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, - "name": "store-password", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "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, - "name": "theme", "type": "option" - }, - "url": { - "default": "/", - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", + } + }, + "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": [], + "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" + ] + } + }, + "description": "Setup CSS strategies for 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": "url", "type": "option" }, - "verbose": { + "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" + }, + "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": "theme:profile", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:setup:css", "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": "Adds support for certain CSS strategies to your project.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:publish": { - "aliases": [ - ], + "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/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.", + "description": "Setup support for multiple markets 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" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", - "name": "force", - "type": "boolean" - }, + } + }, + "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 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:vite", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "store:auth": { + "aliases": [], + "args": {}, + "description": "Authenticates the app against the specified store for store commands and stores an online access token for later reuse.\n\nRe-run this command if the stored token is missing, expires, or no longer has the scopes you need.", + "examples": [ + "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --scopes read_products,write_products", + "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --scopes read_products,write_products --json" + ], + "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" + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "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": "The myshopify.com domain of the store to authenticate against.", "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "required": true, "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", + "scopes": { + "description": "Comma-separated Admin API scopes to request for the app.", + "env": "SHOPIFY_FLAG_SCOPES", + "name": "scopes", + "required": true, "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" - ], + "hiddenAliases": [], + "id": "store:auth", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Set a remote theme as the live theme." + "summary": "Authenticate an app against a store for store commands.", + "descriptionWithMarkdown": "Authenticates the app against the specified store for store commands and stores an online access token for later reuse.\n\nRe-run this command if the stored token is missing, expires, or no longer has the scopes you need.", + "customPluginName": "@shopify/store" }, - "theme:pull": { - "aliases": [ + "store:create:preview": { + "aliases": [], + "args": {}, + "description": "Creates a Preview Store via the Core preview-stores orchestrator. The returned admin API token is persisted locally as a stored store-auth session, so the new store can be used immediately as a target for `shopify store execute --store ` without any further login.\n\nThe orchestrator endpoint, basic-auth username, and basic-auth secret default to the local development rig values used by the M1 prototype. Override them with `--core-url`, `--cli-username`, and `--cli-secret` (or the corresponding `SHOPIFY_FLAG_*` environment variables) when targeting a non-default environment.", + "examples": [ + "<%= config.bin %> <%= command.id %> --shop-name my-preview", + "<%= config.bin %> <%= command.id %> --shop-name my-preview --email demo@previewstore.invalid", + "<%= config.bin %> <%= command.id %> --shop-name my-preview --json" ], - "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", + "allowNo": false, "type": "boolean" }, - "nodelete": { + "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. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "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", + "shop-name": { + "char": "n", + "description": "Subdomain prefix for the new preview store. Auto-generated if omitted.", + "env": "SHOPIFY_FLAG_PREVIEW_STORE_SHOP_NAME", + "name": "shop-name", + "required": false, "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", + "email": { + "description": "Email to associate with the placeholder identity. Defaults to a generated `@previewstore.invalid` address chosen by Core.", + "env": "SHOPIFY_FLAG_PREVIEW_STORE_EMAIL", + "name": "email", + "required": false, "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", + "country": { + "description": "ISO country code for the new store. Defaults to \"US\".", + "env": "SHOPIFY_FLAG_PREVIEW_STORE_COUNTRY", + "name": "country", + "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", + "core-url": { + "description": "Base URL of the Core preview-stores orchestrator. Defaults to the local development rig.", + "env": "SHOPIFY_FLAG_PREVIEW_STORE_CORE_URL", + "name": "core-url", + "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", + "cli-username": { + "description": "Basic-auth username for the Core endpoint. Defaults to the development rig value.", + "env": "SHOPIFY_FLAG_PREVIEW_STORE_CLI_USERNAME", + "name": "cli-username", + "required": false, "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" + "cli-secret": { + "description": "Basic-auth secret for the Core endpoint. Defaults to the development rig value.", + "env": "SHOPIFY_FLAG_PREVIEW_STORE_CLI_SECRET", + "name": "cli-secret", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:pull", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "store:create:preview", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Download your remote theme files locally." + "summary": "Create a Preview Store backed by a placeholder identity.", + "descriptionWithMarkdown": "Creates a Preview Store via the Core preview-stores orchestrator. The returned admin API token is persisted locally as a stored store-auth session, so the new store can be used immediately as a target for `shopify store execute --store ` without any further login.\n\nThe orchestrator endpoint, basic-auth username, and basic-auth secret default to the local development rig values used by the M1 prototype. Override them with `--core-url`, `--cli-username`, and `--cli-secret` (or the corresponding `SHOPIFY_FLAG_*` environment variables) when targeting a non-default environment.", + "customPluginName": "@shopify/store" }, - "theme:push": { - "aliases": [ + "store:execute": { + "aliases": [], + "args": {}, + "description": "Executes an Admin API GraphQL query or mutation on the specified store using previously stored app authentication.\n\nRun `shopify store auth` first to create stored auth for the store.\n\nMutations are disabled by default. Re-run with `--allow-mutations` if you intend to modify store data.", + "examples": [ + "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query \"query { shop { name } }\"", + "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query-file ./operation.graphql --variables '{\"id\":\"gid://shopify/Product/1\"}'", + "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query \"mutation { shop { id } }\" --allow-mutations", + "<%= config.bin %> <%= command.id %> --store shop.myshopify.com --query \"query { shop { name } }\" --json" ], - "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": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "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": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "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. Automatically disables color output.", "env": "SHOPIFY_FLAG_JSON", "hidden": false, "name": "json", + "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", + "query": { + "char": "q", + "description": "The GraphQL query or mutation, as a string.", + "env": "SHOPIFY_FLAG_QUERY", + "name": "query", + "required": false, "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", + "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": 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", + "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, - "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", + "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, - "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).", + "description": "The myshopify.com domain of the store to execute against.", "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "required": true, + "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, - "name": "store", "type": "option" }, - "strict": { + "allow-mutations": { + "description": "Allow GraphQL mutations to run against the target store.", + "env": "SHOPIFY_FLAG_ALLOW_MUTATIONS", + "name": "allow-mutations", "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": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "store:execute", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Execute GraphQL queries and mutations on a store.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store using previously stored app authentication.\n\nRun `shopify store auth` first to create stored auth for the store.\n\nMutations are disabled by default. Re-run with `--allow-mutations` if you intend to modify store data.", + "customPluginName": "@shopify/store" + }, + "store:list": { + "aliases": [], + "args": {}, + "description": "Lists every store that has a locally stored auth session, including both standard PKCE-authenticated stores (via `shopify store auth`) and preview stores (via `shopify store create preview`).\n\nUse `--kind` to filter by session type, or `--json` to emit a machine-readable list for agent consumption.", + "examples": [ + "<%= config.bin %> <%= command.id %>", + "<%= config.bin %> <%= command.id %> --kind preview", + "<%= config.bin %> <%= command.id %> --json" + ], + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "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", + "allowNo": false, + "type": "boolean" + }, + "json": { + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, "type": "boolean" + }, + "kind": { + "description": "Filter results to a single session kind.", + "env": "SHOPIFY_FLAG_STORE_LIST_KIND", + "name": "kind", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "standard", + "preview" + ], + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:push", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "store:list", "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" - ] + "summary": "List stored store-auth sessions.", + "descriptionWithMarkdown": "Lists every store that has a locally stored auth session, including both standard PKCE-authenticated stores (via `shopify store auth`) and preview stores (via `shopify store create preview`).\n\nUse `--kind` to filter by session type, or `--json` to emit a machine-readable list for agent consumption.", + "customPluginName": "@shopify/store" }, - "theme:rename": { - "aliases": [ + "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": "Upgrades Shopify CLI using your package manager.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "upgrade", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Upgrades Shopify CLI.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Upgrades Shopify CLI using your package manager." + }, + "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 + } }, - "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 ", + "description": "Display help for Shopify CLI", "flags": { - "development": { + "nested-commands": { + "char": "n", + "description": "Include all nested commands in the output.", + "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", + "name": "nested-commands", "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, + "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": true, - "name": "environment", + "multiple": false, "type": "option" - }, - "live": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "auth:login", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "auth:whoami": { + "aliases": [], + "args": {}, + "description": "Show the currently-active Shopify CLI session (diagnostic).", + "flags": { + "json": { + "description": "Emit the session info as JSON.", + "name": "json", "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": { + "raw": { + "description": "Include the unredacted session row and the full Sessions blob from disk. Implies --json. Contains live access/refresh tokens — do not paste into shared channels.", + "name": "raw", "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": { + } + }, + "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:rename", - "multiEnvironmentsFlags": [ - "store", - "password", - "name", - [ - "live", - "development", - "theme" - ] - ], + "id": "kitchen-sink", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Renames an existing theme." + "enableJsonFlag": false }, - "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.", + "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", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "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", + "strict": true, + "enableJsonFlag": false + }, + "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": { - "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" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "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/fonso/worktrees/cli-storte-preview-poc/packages/cli", "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", + "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, "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).", + "description": "Store URL (overrides environment).", "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" + "password": { + "description": "Password from Theme Access app (overrides environment).", + "env": "SHOPIFY_FLAG_PASSWORD", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:share", - "multiEnvironmentsFlags": [ - "store", - "password", - "path" - ], + "hidden": true, + "hiddenAliases": [], + "id": "doctor-release:theme", "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": "Upgrades Shopify CLI using your package manager.", - "descriptionWithMarkdown": "Upgrades Shopify CLI using your package manager.", - "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": "ignore-errors", + "allowNo": false, + "type": "boolean" + } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "upgrade", + "hidden": true, + "hiddenAliases": [], + "id": "notifications:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Upgrades Shopify CLI." + "enableJsonFlag": false }, - "version": { - "aliases": [ - ], - "args": { - }, - "description": "Shopify CLI version currently installed.", + "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", + "strict": true, + "enableJsonFlag": false + }, + "config:autoupgrade:off": { + "aliases": [], + "args": {}, + "description": "Disable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is disabled, Shopify CLI won't automatically update. Run `shopify upgrade` to update manually.\n\n To enable auto-upgrade, run `shopify config autoupgrade on`.\n", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "config:autoupgrade:off", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Disable automatic upgrades for Shopify CLI.", "enableJsonFlag": false, - "flags": { - }, + "descriptionWithMarkdown": "Disable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is disabled, Shopify CLI won't automatically update. Run `shopify upgrade` to update manually.\n\n To enable auto-upgrade, run `shopify config autoupgrade on`.\n" + }, + "config:autoupgrade:on": { + "aliases": [], + "args": {}, + "description": "Enable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version once per day. Major version upgrades are skipped and must be done manually.\n\n To disable auto-upgrade, run `shopify config autoupgrade off`.\n", + "flags": {}, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "version", + "hiddenAliases": [], + "id": "config:autoupgrade:on", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Enable automatic upgrades for Shopify CLI.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Enable automatic upgrades for Shopify CLI.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version once per day. Major version upgrades are skipped and must be done manually.\n\n To disable auto-upgrade, run `shopify config autoupgrade off`.\n" + }, + "config:autoupgrade:status": { + "aliases": [], + "args": {}, + "description": "Check whether auto-upgrade is enabled, disabled, or not yet configured.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version after each command.\n\n Run `shopify config autoupgrade on` or `shopify config autoupgrade off` to configure it.\n", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "config:autoupgrade:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Check whether auto-upgrade is enabled, disabled, or not yet configured.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Check whether auto-upgrade is enabled, disabled, or not yet configured.\n\n When auto-upgrade is enabled, Shopify CLI automatically updates to the latest version after each command.\n\n Run `shopify config autoupgrade on` or `shopify config autoupgrade off` to configure it.\n" } }, "version": "4.0.0" 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..4a95671fd41 --- /dev/null +++ b/packages/cli/src/cli/commands/auth/whoami.ts @@ -0,0 +1,66 @@ +import Command from '@shopify/cli-kit/node/base-command' +import {Flags} from '@oclif/core' +import {outputInfo, outputResult} from '@shopify/cli-kit/node/output' +import {getCurrentSessionInfo} from '@shopify/cli-kit/node/session' +import {renderInfo} from '@shopify/cli-kit/node/ui' + +/** + * Diagnostic command for inspecting the currently-active CLI session. + * + * Intentionally exposes more detail than a typical `whoami` would (scopes, + * cached application audiences, token previews) because the primary motivating + * use case is debugging server-side session imports (preview-store placeholder + * bootstrap, app-automation tokens) where you need to confirm which fields + * actually landed on disk without leaking the tokens themselves. + * + * Token values are masked: only the first 8 characters and the raw length are + * shown. That's enough to disambiguate "is this the token I just imported?" + * without writing a secret to a shareable terminal. + * + * Marked as a temporary/PoC affordance \u2014 once the preview-store flow is + * stabilised this can either graduate to a polished command or be removed. + */ +export default class AuthWhoami extends Command { + static description = 'Show the currently-active Shopify CLI session (diagnostic).' + + static flags = { + json: Flags.boolean({description: 'Emit the session info as JSON.'}), + raw: Flags.boolean({ + description: + 'Include the unredacted session row and the full Sessions blob from disk. Implies --json. Contains live access/refresh tokens — do not paste into shared channels.', + }), + } + + async run(): Promise { + const {flags} = await this.parse(AuthWhoami) + const info = await getCurrentSessionInfo({raw: flags.raw}) + + // --raw always emits JSON because the raw payload isn't worth pretty-printing + // as text and the JSON form is what callers want to pipe into jq/grep anyway. + if (flags.json || flags.raw) { + outputResult(JSON.stringify(info, null, 2)) + return + } + + if (!info.loggedIn) { + outputInfo(`Not logged in.\nIdentity FQDN: ${info.identityFqdn}`) + return + } + + const lines: string[] = [ + `User ID: ${info.userId ?? '(none)'}${info.looksLikePlaceholder ? ' (looks like a placeholder)' : ''}`, + `Identity FQDN: ${info.identityFqdn}`, + `Alias: ${info.alias ?? '(none \u2014 typical for placeholders)'}`, + `Identity token: ${info.identityToken?.preview ?? '(missing)'} (len=${info.identityToken?.length ?? 0}, exp=${info.identityToken?.expiresAt ?? '?'})`, + `Refresh token: ${info.refreshToken?.present ? `present (len=${info.refreshToken.length})` : 'missing'}`, + `Scopes: ${info.scopeCount ?? 0} (${(info.scopes ?? []).slice(0, 3).join(', ')}${(info.scopes?.length ?? 0) > 3 ? ', \u2026' : ''})`, + '', + `Application tokens cached (${info.applications?.length ?? 0}):`, + ] + for (const app of info.applications ?? []) { + lines.push(` - ${app.appId}${app.storeFqdn ? ` [store ${app.storeFqdn}]` : ''}: ${app.preview} (len=${app.length}, exp=${app.expiresAt})`) + } + + renderInfo({headline: 'Current Shopify CLI session', body: lines.join('\n')}) + } +} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index ff506419c63..1d437685b46 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -3,6 +3,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' @@ -150,6 +151,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,