Files
ohmyzsh/plugins/shopify/_shopify
T

2046 lines
85 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#compdef shopify
# Completion for the Shopify CLI. https://shopify.dev/docs/api/shopify-cli
#
# Targets Shopify CLI 4.x. The CLI has no `completion`/`autocomplete` command,
# so this is generated from `shopify commands --json` and kept here. Nothing
# runs the CLI at completion time unless theme completion is enabled below.
# Environment names from the project's TOML config. Offline, always enabled.
_shopify_environments() {
setopt localoptions extendedglob
local -a envs
local file line
# (#b) backreferences set $match, which would otherwise be left global.
local MATCH MBEGIN MEND
local -a match mbegin mend
for file in shopify.theme.toml shopify.app.toml; do
[[ -r "$file" ]] || continue
for line in ${(f)"$(< $file)"}; do
[[ $line == (#b)[[:space:]]#\[environments\.([^]]##)\]* ]] && envs+=("$match[1]")
done
done
(( $#envs )) || return 1
_describe -t environments 'environment' envs
}
# Theme IDs, described by name and role. Off by default: needs auth and makes a
# network call on TAB. Enable with:
# zstyle ':omz:plugins:shopify' dynamic-theme-completion yes
_shopify_themes() {
zstyle -t ':omz:plugins:shopify' dynamic-theme-completion || return 1
local key="${${PWD:A}//\//-}"
local cache_file="$ZSH_CACHE_DIR/shopify-themes${key: -100}"
local -a themes fresh
local json split entry id name role
# $match and friends are set by =~ and would otherwise be left global.
local MATCH MBEGIN MEND
local -a match mbegin mend
local nl=$'\n'
# Reuse the cached list for five minutes.
fresh=(${cache_file}(Nms-300))
if (( $#fresh )); then
themes=("${(@f)$(< "$cache_file")}")
else
json="$(shopify theme list --json 2>/dev/null)" || return 1
split="${json//\{/$nl}"
for entry in ${(f)split}; do
id="" name="" role=""
[[ $entry =~ '"id":[[:space:]]*([0-9]+)' ]] && id=$match[1]
[[ $entry =~ '"name":[[:space:]]*"([^"]*)"' ]] && name=$match[1]
[[ $entry =~ '"role":[[:space:]]*"([^"]*)"' ]] && role=$match[1]
[[ -n $id ]] || continue
themes+=("${id}:${name}${role:+ (${role})}")
done
(( $#themes )) || return 1
print -rl -- $themes > "$cache_file"
fi
_describe -t shopify-themes 'theme' themes
}
_shopify__app__build() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--skip-dependencies-installation[Skips the installation of dependencies]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__bulk__cancel() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--id=[The bulk operation ID to cancel (numeric ID or full GID)]:id:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[The store domain]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__bulk__execute() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--output-file=[The file path where results should be written if --watch is specified]:output-file:' \
'--path=[The path to your app directory]:path:_files -/' \
'(-q --query)'{-q,--query}'=[The GraphQL query or mutation to run as a bulk operation]:query:' \
'--query-file=[Path to a file containing the GraphQL query or mutation]:query-file:' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[The store domain]:store:' \
'(--variable-file -v --variables)--variable-file=[Path to a file containing GraphQL variables in JSONL format (one JSON...]:variable-file:' \
*''{-v,--variables}'=[The values for any GraphQL variables in your mutation, in JSON format]:variables:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The API version to use for the bulk operation]:version:' \
'--watch[Wait for bulk operation results before exiting]'
}
_shopify__app__bulk__status() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--id=[The bulk operation ID (numeric ID or full GID)]:id:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[The store domain]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__bulk() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'cancel:Cancel a bulk operation'
'execute:Execute bulk operations'
'status:Check the status of bulk operations'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app bulk command' commands && ret=0
;;
args)
case $words[1] in
cancel) _shopify__app__bulk__cancel && ret=0 ;;
execute) _shopify__app__bulk__execute && ret=0 ;;
status) _shopify__app__bulk__status && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__config__link() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(--file-name -c --config)--file-name=[The name of the app configuration file to create or overwrite]:file-name:' \
'--force[Overwrite an existing configuration file without prompting]' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__config__pull() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__config__use() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'--client-id=[The Client ID of your app]:client-id:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]' \
'*:file:_files'
}
_shopify__app__config__validate() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__config() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'link:Fetch your app configuration from the Developer Dashboard'
'pull:Refresh an already-linked app configuration without prompts'
'use:Activate an app configuration'
'validate:Validate your app configuration and extensions'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app config command' commands && ret=0
;;
args)
case $words[1] in
link) _shopify__app__config__link && ret=0 ;;
pull) _shopify__app__config__pull && ret=0 ;;
use) _shopify__app__config__use && ret=0 ;;
validate) _shopify__app__config__validate && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__deploy() {
_arguments -s -S \
'--allow-deletes[Allows removing extensions and configuration without requiring user...]' \
'--allow-updates[Allows adding and updating extensions and configuration without requiring...]' \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--message=[Optional message that will be associated with this version]:message:' \
'--no-build[Use with caution\: Skips building any elements of the app that require...]' \
'--no-color[Disable color output]' \
'(--no-release --allow-updates --allow-deletes)--no-release[Creates a version but doesn'\''t release it - it'\''s not made available to...]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--source-control-url=[URL associated with the new app version]:source-control-url:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[Optional version tag that will be associated with this app version]:version:'
}
_shopify__app__dev__clean() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__dev() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'clean:Cleans up the dev preview from the selected store'
)
_arguments -s -C \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'--checkout-cart-url=[Resource URL for checkout UI extension]:checkout-cart-url:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--install-mkcert[Install and use mkcert to generate localhost certificates when...]' \
'--localhost-port=[Port to use for localhost]:localhost-port:' \
'--no-color[Disable color output]' \
'--no-update[Uses the app URL from the toml file instead an autogenerated URL for dev]' \
'--notify=[The file path or URL]:notify:_files' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--skip-dependencies-installation[Skips the installation of dependencies]' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--store-password=[The password for storefronts with password protection]:store-password:' \
'--subscription-product-url=[Resource URL for subscription UI extension]:subscription-product-url:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the theme app extension host theme]:theme:' \
'--theme-app-extension-port=[Local port of the theme app extension development server]:theme-app-extension-port:' \
'--tunnel-url=[Use a custom tunnel, it must be running before executing dev]:tunnel-url:' \
'(--use-localhost --tunnel-url)--use-localhost[Service entry point will listen to localhost]' \
'--verbose[Increase the verbosity of the output]' \
'1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app dev command' commands && ret=0
;;
args)
case $words[1] in
clean) _shopify__app__dev__clean && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__env__pull() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--env-file=[Specify an environment file to update if the update flag is set]:env-file:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__env__show() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__env() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'pull:Pull app and extensions environment variables'
'show:Display app and extensions environment variables'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app env command' commands && ret=0
;;
args)
case $words[1] in
pull) _shopify__app__env__pull && ret=0 ;;
show) _shopify__app__env__show && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__execute() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--output-file=[The file name where results should be written, instead of STDOUT]:output-file:' \
'--path=[The path to your app directory]:path:_files -/' \
'(-q --query)'{-q,--query}'=[The GraphQL query or mutation, as a string]:query:' \
'--query-file=[Path to a file containing the GraphQL query or mutation]:query-file:' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store to execute against]:store:' \
'(--variable-file -v --variables)--variable-file=[Path to a file containing GraphQL variables in JSON format]:variable-file:' \
'(-v --variables --variable-file)'{-v,--variables}'=[The values for any GraphQL variables in your query or mutation, in JSON...]:variables:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The API version to use for the query or mutation]:version:'
}
_shopify__app__function__build() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your function directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__function__info() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--path=[The path to your function directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__function__replay() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'(-l --log)'{-l,--log}'=[Specifies a log identifier to replay instead of selecting from a list]:log:' \
'--no-color[Disable color output]' \
'--path=[The path to your function directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]' \
'(-w --watch)'{-w,--watch}'[Re-run the function when the source code changes]'
}
_shopify__app__function__run() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-e --export)'{-e,--export}'=[Name of the WebAssembly export to invoke]:export:' \
'(-i --input)'{-i,--input}'=[The input JSON to pass to the function]:input:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--path=[The path to your function directory]:path:_files -/' \
'--profile[Generate a WebAssembly performance profile for the function run]' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__function__schema() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your function directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--stdout[Output the schema to stdout instead of writing to a file]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__function__typegen() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your function directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__function() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'build:Compile a function to wasm'
'info:Print basic information about your function'
'replay:Replays a function run from an app log'
'run:Run a function locally for testing'
'schema:Fetch the latest GraphQL schema for a function'
'typegen:Generate GraphQL types for a function'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app function command' commands && ret=0
;;
args)
case $words[1] in
build) _shopify__app__function__build && ret=0 ;;
info) _shopify__app__function__info && ret=0 ;;
replay) _shopify__app__function__replay && ret=0 ;;
run) _shopify__app__function__run && ret=0 ;;
schema) _shopify__app__function__schema && ret=0 ;;
typegen) _shopify__app__function__typegen && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__generate__extension() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--flavor=[Choose a starting template for your extension, where applicable]:flavor:(vanilla-js react typescript typescript-react wasm rust)' \
'(-n --name)'{-n,--name}'=[name of your Extension]:name:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-t --template)'{-t,--template}'=[Extension template]:template:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__generate() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'extension:Generate a new app Extension'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app generate command' commands && ret=0
;;
args)
case $words[1] in
extension) _shopify__app__generate__extension && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__graphiql() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'--port=[Local port for the GraphiQL server]:port:' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store to open GraphiQL against]:store:' \
'(-v --variables)'{-v,--variables}'=[The values for any GraphQL variables in your query or mutation, in JSON...]:variables:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The API version to use in GraphiQL]:version:'
}
_shopify__app__import_custom_data_definitions() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--include-existing[Include existing declared definitions in the output]' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__import_extensions() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__info() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]' \
'--web-env[Outputs environment variables necessary for running and deploying web/]'
}
_shopify__app__init() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'--client-id=[The Client ID of your app]:client-id:' \
'--flavor=[Which flavor of the given template to use]:flavor:' \
'(-n --name)'{-n,--name}'=[The name for the new app]:name:' \
'--no-color[Disable color output]' \
'(--organization-id --client-id)--organization-id=[The organization ID]:organization-id:' \
'(-d --package-manager)'{-d,--package-manager}'=[]:package-manager:(npm yarn pnpm bun)' \
'(-p --path)'{-p,--path}'=[]:path:_files -/' \
'--template=[The app template]:template:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__logs__sources() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__logs() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'sources:Print out a list of sources that may be used with the logs command'
)
_arguments -s -C \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
*'--source=[Filters output to the specified log source]:source:' \
'--status=[Filters output to the specified status (success or failure)]:status:(success failure)' \
*''{-s,--store}'=[Store URL]:store:' \
'--verbose[Increase the verbosity of the output]' \
'1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app logs command' commands && ret=0
;;
args)
case $words[1] in
sources) _shopify__app__logs__sources && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__release() {
_arguments -s -S \
'--allow-deletes[Allows removing extensions and configuration without requiring user...]' \
'--allow-updates[Allows adding and updating extensions and configuration without requiring...]' \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The name of the app version to release]:version:'
}
_shopify__app__versions__list() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__app__versions() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'list:List deployed versions of your app'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app versions command' commands && ret=0
;;
args)
case $words[1] in
list) _shopify__app__versions__list && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app__webhook__trigger() {
_arguments -s -S \
'--address=[The URL where the webhook payload should be sent]:address:' \
'--api-version=[The API Version of the webhook topic]:api-version:' \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(--client-id -c --config)--client-id=[The Client ID of your app]:client-id:' \
'--client-secret=[Your app'\''s client secret]:client-secret:' \
'(-c --config)'{-c,--config}'=[The name of the app configuration]:config:' \
'--delivery-method=[Method chosen to deliver the topic payload]:delivery-method:(http google-pub-sub event-bridge)' \
'--help[This help]' \
'--path=[The path to your app directory]:path:_files -/' \
'(--reset -c --config)--reset[Reset all your settings]' \
'--topic=[The requested webhook topic]:topic:'
}
_shopify__app__webhook() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'trigger:Trigger delivery of a sample webhook topic payload to a designated address'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app webhook command' commands && ret=0
;;
args)
case $words[1] in
trigger) _shopify__app__webhook__trigger && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__app() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'build:Build the app, including extensions'
'bulk:Run bulk operations'
'config:Manage app configuration files'
'deploy:Deploy your Shopify app'
'dev:Run the app'
'env:Manage app environment variables'
'execute:Execute GraphQL queries and mutations'
'function:Work with Shopify Functions'
'generate:Scaffold app extensions'
'graphiql:Open a local GraphiQL UI for your app and store'
'import-custom-data-definitions:Import metafield and metaobject definitions'
'import-extensions:Import dashboard-managed extensions into your app'
'info:Print basic information about your app and extensions'
'init:Create a new app project'
'logs:Stream detailed logs for your Shopify app'
'release:Release an app version'
'versions:Work with deployed app versions'
'webhook:Trigger sample webhooks'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'app command' commands && ret=0
;;
args)
case $words[1] in
build) _shopify__app__build && ret=0 ;;
bulk) _shopify__app__bulk && ret=0 ;;
config) _shopify__app__config && ret=0 ;;
deploy) _shopify__app__deploy && ret=0 ;;
dev) _shopify__app__dev && ret=0 ;;
env) _shopify__app__env && ret=0 ;;
execute) _shopify__app__execute && ret=0 ;;
function) _shopify__app__function && ret=0 ;;
generate) _shopify__app__generate && ret=0 ;;
graphiql) _shopify__app__graphiql && ret=0 ;;
import-custom-data-definitions) _shopify__app__import_custom_data_definitions && ret=0 ;;
import-extensions) _shopify__app__import_extensions && ret=0 ;;
info) _shopify__app__info && ret=0 ;;
init) _shopify__app__init && ret=0 ;;
logs) _shopify__app__logs && ret=0 ;;
release) _shopify__app__release && ret=0 ;;
versions) _shopify__app__versions && ret=0 ;;
webhook) _shopify__app__webhook && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__auth__login() {
_arguments -s -S \
'--alias=[Alias of an existing session you want to use]:alias:'
}
_shopify__auth__logout() {
_arguments -s -S '*:file:_files'
}
_shopify__auth() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'login:Logs you in to your Shopify account'
'logout:Logs you out of the Shopify account or Partner account and store'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'auth command' commands && ret=0
;;
args)
case $words[1] in
login) _shopify__auth__login && ret=0 ;;
logout) _shopify__auth__logout && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__commands() {
_arguments -s -S \
*''{-c,--columns}'=[Only show provided columns (comma-separated)]:columns:(id plugin summary type)' \
'--deprecated[Show deprecated commands]' \
'(-x --extended --tree)'{-x,--extended}'[Show extra columns]' \
'--hidden[Show hidden commands]' \
'--json[Format output as json]' \
'(--no-truncate --tree)--no-truncate[Do not truncate output]' \
'(--sort --tree)--sort=[Property to sort by]:sort:(id plugin summary type)' \
'--tree[Show tree of commands]'
}
_shopify__config__autocorrect__off() {
_arguments -s -S '*:file:_files'
}
_shopify__config__autocorrect__on() {
_arguments -s -S '*:file:_files'
}
_shopify__config__autocorrect__status() {
_arguments -s -S '*:file:_files'
}
_shopify__config__autocorrect() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'off:Disable autocorrect'
'on:Enable autocorrect'
'status:Check whether autocorrect is enabled or disabled'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'config autocorrect command' commands && ret=0
;;
args)
case $words[1] in
off) _shopify__config__autocorrect__off && ret=0 ;;
on) _shopify__config__autocorrect__on && ret=0 ;;
status) _shopify__config__autocorrect__status && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__config__autoupgrade__off() {
_arguments -s -S '*:file:_files'
}
_shopify__config__autoupgrade__on() {
_arguments -s -S '*:file:_files'
}
_shopify__config__autoupgrade__status() {
_arguments -s -S '*:file:_files'
}
_shopify__config__autoupgrade() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'off:Disable automatic upgrades for Shopify CLI'
'on:Enable automatic upgrades for Shopify CLI'
'status:Check whether auto-upgrade is enabled, disabled, or not yet configured'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'config autoupgrade command' commands && ret=0
;;
args)
case $words[1] in
off) _shopify__config__autoupgrade__off && ret=0 ;;
on) _shopify__config__autoupgrade__on && ret=0 ;;
status) _shopify__config__autoupgrade__status && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__config() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'autocorrect:Enable or disable command autocorrect'
'autoupgrade:Enable or disable automatic upgrades'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'config command' commands && ret=0
;;
args)
case $words[1] in
autocorrect) _shopify__config__autocorrect && ret=0 ;;
autoupgrade) _shopify__config__autoupgrade && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__doc__fetch() {
_arguments -s -S \
'--no-color[Disable color output]' \
'--output=[Write the document to this file path instead of printing it to stdout]:output:' \
'--url=[The shopify.dev URL to fetch]:url:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__doc__search() {
_arguments -s -S \
'--api-name=[Limit results to a specific API (for example\: admin, storefront, hydrogen,...]:api-name:' \
'--api-version=[Limit results to a specific API version (for example\: 2025-10, latest,...]:api-version:' \
'--no-color[Disable color output]' \
'--query=[The search query]:query:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__doc() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'fetch:Download a complete document from shopify.dev'
'search:Query the shopify.dev vector store and print the most relevant...'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'doc command' commands && ret=0
;;
args)
case $words[1] in
fetch) _shopify__doc__fetch && ret=0 ;;
search) _shopify__doc__search && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__help() {
_arguments -s -S \
'(-n --nested-commands)'{-n,--nested-commands}'[Include all nested commands in the output]' \
'*:file:_files'
}
_shopify__hydrogen__build() {
_arguments -s -S \
'--bundle-stats[Show a bundle size summary after building]' \
'--codegen[Automatically generates GraphQL types for your project’s Storefront API...]' \
'--codegen-config-path=[Specifies a path to a codegen configuration file]:codegen-config-path:' \
'--disable-route-warning[Disables any warnings about missing standard routes]' \
'--entry=[Entry file for the worker]:entry:_files' \
'--force-client-sourcemap[Client sourcemapping is avoided by default because it makes backend code...]' \
'--lockfile-check[Checks that there is exactly one valid lockfile in the project]' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--sourcemap[Controls whether server sourcemaps are generated]' \
'--watch[Watches for changes and rebuilds the project writing output to disk]'
}
_shopify__hydrogen__check() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'*:file:_files'
}
_shopify__hydrogen__codegen() {
_arguments -s -S \
'--codegen-config-path=[Specify a path to a codegen configuration file]:codegen-config-path:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--watch[Watch the project for changes to update types on file save]'
}
_shopify__hydrogen__customer_account_push() {
_arguments -s -S \
'--dev-origin=[The development domain of your application]:dev-origin:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--relative-logout-uri=[The relative url of allowed url that will be redirected to post-logout for...]:relative-logout-uri:' \
'--relative-redirect-uri=[The relative url of allowed callback url for Customer Account API OAuth flow]:relative-redirect-uri:' \
'--storefront-id=[The id of the storefront the configuration should be pushed to]:storefront-id:'
}
_shopify__hydrogen__debug__cpu() {
_arguments -s -S \
'--entry=[Entry file for the worker]:entry:_files' \
'--output=[Specify a path to generate the profile file]:output:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__debug() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'cpu:Builds and profiles the server startup time the app'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'hydrogen debug command' commands && ret=0
;;
args)
case $words[1] in
cpu) _shopify__hydrogen__debug__cpu && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__hydrogen__deploy() {
_arguments -s -S \
'--assets-dir=[Directory containing the client assets to deploy, relative to the project...]:assets-dir:' \
'--auth-bypass-token[Generate an authentication bypass token, which can be used to perform...]' \
'--auth-bypass-token-duration=[Specify the duration (in hours) up to 12 hours for the authentication...]:auth-bypass-token-duration:' \
'--build-command=[Specify a build command to run before deploying]:build-command:' \
'--entry=[Entry file for the worker]:entry:_files' \
'(--env --env-branch)--env=[Specifies the environment to perform the operation using its handle]:env:' \
'--env-branch=[Specifies the environment to perform the operation using its Git branch name]:env-branch:' \
'--env-file=[Path to an environment file to override existing environment variables for...]:env-file:' \
'(-f --force)'{-f,--force}'[Forces a deployment to proceed if there are uncommitted changes in its Git...]' \
'--force-client-sourcemap[Client sourcemapping is avoided by default because it makes backend code...]' \
'--json-output[Create a JSON file containing the deployment details in CI environments]' \
'--lockfile-check[Checks that there is exactly one valid lockfile in the project]' \
'--metadata-description=[Description of the changes in the deployment]:metadata-description:' \
'--metadata-user=[User that initiated the deployment]:metadata-user:' \
'--no-verify[Skip the routability verification step after deployment]' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--preview[Deploys to the Preview environment]' \
'(-s --shop)'{-s,--shop}'=[Shop URL]:shop:' \
'(-t --token)'{-t,--token}'=[Oxygen deployment token]:token:' \
'--worker-dir=[Directory containing the Oxygen worker entry point (`index.js` or...]:worker-dir:'
}
_shopify__hydrogen__dev() {
_arguments -s -S \
'--codegen[Automatically generates GraphQL types for your project’s Storefront API...]' \
'--codegen-config-path=[Specifies a path to a codegen configuration file]:codegen-config-path:' \
'--customer-account-push[Use tunneling for local development and push the tunneling domain to admin]' \
'--debug[Enables inspector connections to the server with a debugger such as Visual...]' \
'--disable-deps-optimizer[Disable adding dependencies to Vite'\''s `ssr.optimizeDeps.include`...]' \
'--disable-version-check[Skip the version check when running `hydrogen dev`]' \
'--disable-virtual-routes[Disable rendering fallback routes when a route file doesn'\''t exist]' \
'--entry=[Entry file for the worker]:entry:_files' \
'(--env --env-branch)--env=[Specifies the environment to perform the operation using its handle]:env:' \
'--env-branch=[Specifies the environment to perform the operation using its Git branch name]:env-branch:' \
'--env-file=[Path to an environment file to override existing environment variables]:env-file:' \
'--host[Expose the server to the local network]' \
'--inspector-port=[The port where the inspector is available]:inspector-port:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--port=[The port to run the server on]:port:' \
'--verbose[Outputs more information about the command'\''s execution]'
}
_shopify__hydrogen__env__list() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__env__pull() {
_arguments -s -S \
'(--env --env-branch)--env=[Specifies the environment to perform the operation using its handle]:env:' \
'--env-branch=[Specifies the environment to perform the operation using its Git branch name]:env-branch:' \
'--env-file=[Path to an environment file to override existing environment variables]:env-file:' \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__env__push() {
_arguments -s -S \
'(--dry-run -f --force)--dry-run[Preview environment variable changes without pushing them]' \
'--env=[Specifies the environment to perform the operation using its handle]:env:' \
'--env-file=[Path to an environment file to override existing environment variables]:env-file:' \
'(-f --force)'{-f,--force}'[Push environment variable changes without confirmation]' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__env() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'list:List the environments on your linked Hydrogen storefront'
'pull:Populate your .env with variables from your Hydrogen storefront'
'push:Push environment variables from the local .env file to your linked Hydrogen...'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'hydrogen env command' commands && ret=0
;;
args)
case $words[1] in
list) _shopify__hydrogen__env__list && ret=0 ;;
pull) _shopify__hydrogen__env__pull && ret=0 ;;
push) _shopify__hydrogen__env__push && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__hydrogen__generate__route() {
_arguments -s -S \
'--adapter=[React Router adapter used in the route]:adapter:' \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'--locale-param=[The param name in Remix routes for the i18n locale, if any]:locale-param:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--typescript[Generate TypeScript files]' \
'*:file:_files'
}
_shopify__hydrogen__generate__routes() {
_arguments -s -S \
'--adapter=[React Router adapter used in the route]:adapter:' \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'--locale-param=[The param name in Remix routes for the i18n locale, if any]:locale-param:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--typescript[Generate TypeScript files]'
}
_shopify__hydrogen__generate() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'route:Generates a standard Shopify route'
'routes:Generates all supported standard shopify routes'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'hydrogen generate command' commands && ret=0
;;
args)
case $words[1] in
route) _shopify__hydrogen__generate__route && ret=0 ;;
routes) _shopify__hydrogen__generate__routes && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__hydrogen__init() {
_arguments -s -S \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'--git[Init Git and create initial commits]' \
'--install-deps[Auto installs dependencies using the active package manager]' \
'--language=[Sets the template language to use]:language:' \
'--markets=[Sets the URL structure to support multiple markets]:markets:' \
'--mock-shop[Use mock.shop as the data source for the storefront]' \
'--path=[The path to the directory of the new Hydrogen storefront]:path:_files -/' \
'--quickstart[Scaffolds a new Hydrogen project with a set of sensible defaults]' \
'--shortcut[Creates a global h2 shortcut for Shopify CLI using shell aliases]' \
'--styling=[Sets the styling strategy to use]:styling:' \
'--template=[Scaffolds project based on an existing template or example from the...]:template:'
}
_shopify__hydrogen__link() {
_arguments -s -S \
'(--create-storefront --storefront)--create-storefront[Create a new Hydrogen storefront]' \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'(--name --storefront)--name=[The name to use when creating a new Hydrogen storefront]:name:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'(-s --shop)'{-s,--shop}'=[Shop URL]:shop:' \
'(--storefront --create-storefront --name)--storefront=[The name of a Hydrogen Storefront (e.g]:storefront:'
}
_shopify__hydrogen__list() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__login() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'(-s --shop)'{-s,--shop}'=[Shop URL]:shop:'
}
_shopify__hydrogen__logout() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__preview() {
_arguments -s -S \
'--build[Builds the app before starting the preview server]' \
'--codegen[Automatically generates GraphQL types for your project’s Storefront API...]' \
'--codegen-config-path=[Specifies a path to a codegen configuration file]:codegen-config-path:' \
'--debug[Enables inspector connections to the server with a debugger such as Visual...]' \
'--entry=[Entry file for the worker]:entry:_files' \
'(--env --env-branch)--env=[Specifies the environment to perform the operation using its handle]:env:' \
'--env-branch=[Specifies the environment to perform the operation using its Git branch name]:env-branch:' \
'--env-file=[Path to an environment file to override existing environment variables]:env-file:' \
'--inspector-port=[The port where the inspector is available]:inspector-port:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--port=[The port to run the server on]:port:' \
'--verbose[Outputs more information about the command'\''s execution]' \
'--watch[Watches for changes and rebuilds the project]'
}
_shopify__hydrogen__setup__css() {
_arguments -s -S \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'--install-deps[Auto installs dependencies using the active package manager]' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'*:file:_files'
}
_shopify__hydrogen__setup__markets() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'*:file:_files'
}
_shopify__hydrogen__setup__vite() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__setup() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'css:Setup CSS strategies for your project'
'markets:Setup support for multiple markets in your project'
'vite:EXPERIMENTAL\: Upgrades the project to use Vite'
)
_arguments -s -C \
'(-f --force)'{-f,--force}'[Overwrites the destination directory and files if they already exist]' \
'--install-deps[Auto installs dependencies using the active package manager]' \
'--markets=[Sets the URL structure to support multiple markets]:markets:' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'--shortcut[Creates a global h2 shortcut for Shopify CLI using shell aliases]' \
'1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'hydrogen setup command' commands && ret=0
;;
args)
case $words[1] in
css) _shopify__hydrogen__setup__css && ret=0 ;;
markets) _shopify__hydrogen__setup__markets && ret=0 ;;
vite) _shopify__hydrogen__setup__vite && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__hydrogen__shortcut() {
_arguments -s -S '*:file:_files'
}
_shopify__hydrogen__unlink() {
_arguments -s -S \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/'
}
_shopify__hydrogen__upgrade() {
_arguments -s -S \
'(-f --force)'{-f,--force}'[Ignore warnings and force the upgrade to the target version]' \
'--path=[The path to the directory of the Hydrogen storefront]:path:_files -/' \
'(-v --version)'{-v,--version}'=[A target hydrogen version to update to]:version:'
}
_shopify__hydrogen() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'build:Builds a Hydrogen storefront for production'
'check:Returns diagnostic information about a Hydrogen storefront'
'codegen:Generate types for the Storefront API queries found in your project'
'customer-account-push:Push project configuration to admin'
'debug:Profile the storefront'
'deploy:Builds and deploys a Hydrogen storefront to Oxygen'
'dev:Runs Hydrogen storefront in an Oxygen worker for development'
'env:Manage storefront environment variables'
'generate:Generate standard Shopify routes'
'init:Creates a new Hydrogen storefront'
'link:Link a local project to one of your shop'\''s Hydrogen storefronts'
'list:Returns a list of Hydrogen storefronts available on a given shop'
'login:Login to your Shopify account'
'logout:Logout of your local session'
'preview:Runs a Hydrogen storefront in an Oxygen worker for production'
'setup:Scaffold routes and core functionality'
'shortcut:Creates a global `h2` shortcut for the Hydrogen CLI'
'unlink:Unlink a local project from a Hydrogen storefront'
'upgrade:Upgrade Remix and Hydrogen npm dependencies'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'hydrogen command' commands && ret=0
;;
args)
case $words[1] in
build) _shopify__hydrogen__build && ret=0 ;;
check) _shopify__hydrogen__check && ret=0 ;;
codegen) _shopify__hydrogen__codegen && ret=0 ;;
customer-account-push) _shopify__hydrogen__customer_account_push && ret=0 ;;
debug) _shopify__hydrogen__debug && ret=0 ;;
deploy) _shopify__hydrogen__deploy && ret=0 ;;
dev) _shopify__hydrogen__dev && ret=0 ;;
env) _shopify__hydrogen__env && ret=0 ;;
generate) _shopify__hydrogen__generate && ret=0 ;;
init) _shopify__hydrogen__init && ret=0 ;;
link) _shopify__hydrogen__link && ret=0 ;;
list) _shopify__hydrogen__list && ret=0 ;;
login) _shopify__hydrogen__login && ret=0 ;;
logout) _shopify__hydrogen__logout && ret=0 ;;
preview) _shopify__hydrogen__preview && ret=0 ;;
setup) _shopify__hydrogen__setup && ret=0 ;;
shortcut) _shopify__hydrogen__shortcut && ret=0 ;;
unlink) _shopify__hydrogen__unlink && ret=0 ;;
upgrade) _shopify__hydrogen__upgrade && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__organization__list() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__organization() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'list:List Shopify organizations you have access to'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'organization command' commands && ret=0
;;
args)
case $words[1] in
list) _shopify__organization__list && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__search() {
_arguments -s -S \
'--no-color[Disable color output]' \
'--verbose[Increase the verbosity of the output]' \
'*:file:_files'
}
_shopify__store__auth__list() {
_arguments -s -S \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store__auth() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'list:List stores authenticated directly with store auth'
)
_arguments -s -C \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--scopes=[Comma-separated Admin API scopes to request for the app]:scopes:' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'--verbose[Increase the verbosity of the output]' \
'1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'store auth command' commands && ret=0
;;
args)
case $words[1] in
list) _shopify__store__auth__list && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__store__bulk__cancel() {
_arguments -s -S \
'--id=[The bulk operation ID to cancel (numeric ID or full GID)]:id:' \
'--no-color[Disable color output]' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store__bulk__execute() {
_arguments -s -S \
'--allow-mutations[Allow GraphQL mutations to run against the target store]' \
'--no-color[Disable color output]' \
'--output-file=[The file path where results should be written if --watch is specified]:output-file:' \
'(-q --query)'{-q,--query}'=[The GraphQL query or mutation to run as a bulk operation]:query:' \
'--query-file=[Path to a file containing the GraphQL query or mutation]:query-file:' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'(--variable-file -v --variables)--variable-file=[Path to a file containing GraphQL variables in JSONL format (one JSON...]:variable-file:' \
*''{-v,--variables}'=[The values for any GraphQL variables in your mutation, in JSON format]:variables:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The API version to use for the bulk operation]:version:' \
'--watch[Wait for bulk operation results before exiting]'
}
_shopify__store__bulk__status() {
_arguments -s -S \
'--id=[The bulk operation ID (numeric ID or full GID)]:id:' \
'--no-color[Disable color output]' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store__bulk() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'cancel:Cancel a bulk operation on a store'
'execute:Execute bulk operations on a store'
'status:Check the status of bulk operations on a store'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'store bulk command' commands && ret=0
;;
args)
case $words[1] in
cancel) _shopify__store__bulk__cancel && ret=0 ;;
execute) _shopify__store__bulk__execute && ret=0 ;;
status) _shopify__store__bulk__status && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__store__create__preview() {
_arguments -s -S \
'--country=[Two-letter country code for the store, such as US, CA, or GB]:country:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--name=[The name of the store]:name:' \
'--no-color[Disable color output]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store__create() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'preview:Create a preview Shopify store'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'store create command' commands && ret=0
;;
args)
case $words[1] in
preview) _shopify__store__create__preview && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__store__execute() {
_arguments -s -S \
'--allow-mutations[Allow GraphQL mutations to run against the target store]' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--output-file=[The file name where results should be written, instead of STDOUT]:output-file:' \
'(-q --query)'{-q,--query}'=[The GraphQL query or mutation, as a string]:query:' \
'--query-file=[Path to a file containing the GraphQL query or mutation]:query-file:' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'(--variable-file -v --variables)--variable-file=[Path to a file containing GraphQL variables in JSON format]:variable-file:' \
'(-v --variables --variable-file)'{-v,--variables}'=[The values for any GraphQL variables in your query or mutation, in JSON...]:variables:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The API version to use for the query or mutation]:version:'
}
_shopify__store__graphiql() {
_arguments -s -S \
'--allow-mutations[Allow GraphQL mutations to run against the target store]' \
'--no-color[Disable color output]' \
'--port=[Local port for the GraphiQL server]:port:' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'(-v --variables)'{-v,--variables}'=[The values for any GraphQL variables in your query or mutation, in JSON...]:variables:' \
'--verbose[Increase the verbosity of the output]' \
'--version=[The API version to use in GraphiQL]:version:'
}
_shopify__store__info() {
_arguments -s -S \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store__list() {
_arguments -s -S \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--organization-id=[The numeric organization ID]:organization-id:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store__open() {
_arguments -s -S \
'--no-color[Disable color output]' \
'(-s --store)'{-s,--store}'=[The myshopify.com domain of the store]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__store() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'auth:Authenticate an app against a store for store commands'
'bulk:Run bulk store operations'
'create:Create a store'
'execute:Execute GraphQL queries and mutations on a store'
'graphiql:Open a local GraphiQL UI for a store'
'info:Surface metadata about a Shopify store'
'list:List stores in a Shopify organization'
'open:Open your Shopify store in the default web browser'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'store command' commands && ret=0
;;
args)
case $words[1] in
auth) _shopify__store__auth && ret=0 ;;
bulk) _shopify__store__bulk && ret=0 ;;
create) _shopify__store__create && ret=0 ;;
execute) _shopify__store__execute && ret=0 ;;
graphiql) _shopify__store__graphiql && ret=0 ;;
info) _shopify__store__info && ret=0 ;;
list) _shopify__store__list && ret=0 ;;
open) _shopify__store__open && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__theme__check() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-a --auto-correct)'{-a,--auto-correct}'[Automatically fix offenses]' \
'(-C --config)'{-C,--config}'=[Use the config provided, overriding .theme-check.yml if present]:config:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--fail-level=[Minimum severity for exit with error code]:fail-level:(crash error suggestion style warning info)' \
'--init[Generate a .theme-check.yml file]' \
'--list[List enabled checks]' \
'--no-color[Disable color output]' \
'(-o --output)'{-o,--output}'=[The output format to use]:output:(text json)' \
'--path=[The path where you want to run the command]:path:_files -/' \
'--print[Output active config to STDOUT]' \
'--verbose[Increase the verbosity of the output]' \
'(-v --version)'{-v,--version}'[Print Theme Check version]'
}
_shopify__theme__console() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--store-password=[The password for storefronts with password protection]:store-password:' \
'--url=[The url to be used as context]:url:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__delete() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-d --development)'{-d,--development}'[Delete your development theme]' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-f --force)'{-f,--force}'[Skip confirmation]' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-a --show-all)'{-a,--show-all}'[Include other development themes in the theme list]' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
*''{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__dev() {
_arguments -s -S \
'(-a --allow-live)'{-a,--allow-live}'[Allow development on a live theme]' \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--error-overlay=[Controls the visibility of the error overlay when an theme asset upload...]:error-overlay:(silent default)' \
'--host=[Set which network interface the web server listens on]:host:_hosts' \
*''{-x,--ignore}'=[Skip hot reloading any files that match the specified pattern]:ignore:_files' \
'--listing=[The listing preset to use for multi-preset themes]:listing:' \
'--live-reload=[The live reload mode switches the server behavior when a file is modified\:]:live-reload:(hot-reload full-page off)' \
'--no-color[Disable color output]' \
'(-n --nodelete)'{-n,--nodelete}'[Prevents files from being deleted in the remote theme when a file has been...]' \
'--notify=[The file path or URL]:notify:_files' \
*''{-o,--only}'=[Hot reload only files that match the specified pattern]:only:_files' \
'--open[Automatically launch the theme preview in your default web browser]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'--port=[Local port to serve theme preview from]:port:' \
'--reconciliation-strategy=[How to resolve JSON conflicts when --theme-editor-sync is enabled]:reconciliation-strategy:(keep-local keep-remote abort)' \
'--standard-events-inspector[Inject the standard events inspector into storefront HTML]' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--store-password=[The password for storefronts with password protection]:store-password:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--theme-editor-sync[Synchronize Theme Editor updates in the local theme files]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__duplicate() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-f --force)'{-f,--force}'[Force the duplicate operation to run without prompts or confirmations]' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'(-n --name)'{-n,--name}'=[Name of the newly duplicated theme]:name:' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__info() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-d --development)'{-d,--development}'[Retrieve info from your development theme]' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__init() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-u --clone-url)'{-u,--clone-url}'=[The Git URL to clone from]:clone-url:' \
'(-l --latest)'{-l,--latest}'[Downloads the latest release of the `clone-url`]' \
'--no-color[Disable color output]' \
'--path=[The path where you want to run the command]:path:_files -/' \
'--verbose[Increase the verbosity of the output]' \
'*:file:_files'
}
_shopify__theme__language_server() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'--no-color[Disable color output]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__list() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--id=[Only list theme with the given ID]:id:' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--name=[Only list themes that contain the given name]:name:' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'--role=[Only list themes with the given role]:role:(live unpublished development)' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__metafields__pull() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__metafields() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'pull:Download metafields definitions from your shop into a local file'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'theme metafields command' commands && ret=0
;;
args)
case $words[1] in
pull) _shopify__theme__metafields__pull && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__theme__open() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-d --development)'{-d,--development}'[Open your development theme]' \
'(-E --editor)'{-E,--editor}'[Open the theme editor for the specified theme in the browser]' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-l --live)'{-l,--live}'[Open your live (published) theme]' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__package() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'--no-color[Disable color output]' \
'--path=[The path where you want to run the command]:path:_files -/' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__preview() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--json[Output the preview URL and identifier as JSON]' \
'--no-color[Disable color output]' \
'--open[Automatically launch the theme preview in your default web browser]' \
'--overrides=[Path to a JSON overrides file]:overrides:' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'--preview-id=[An existing preview identifier to update instead of creating a new preview]:preview-id:' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__profile() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--store-password=[The password for storefronts with password protection]:store-password:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--url=[The url to be used as context]:url:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__publish() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-f --force)'{-f,--force}'[Skip confirmation]' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__pull() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-d --development)'{-d,--development}'[Pull theme files from your remote development theme]' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
*''{-x,--ignore}'=[Skip downloading the specified files (Multiple flags allowed)]:ignore:_files' \
'(-l --live)'{-l,--live}'[Pull theme files from your remote live theme]' \
'--no-color[Disable color output]' \
'(-n --nodelete)'{-n,--nodelete}'[Prevent deleting local files that don'\''t exist remotely]' \
*''{-o,--only}'=[Download only the specified files (Multiple flags allowed)]:only:_files' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__push() {
_arguments -s -S \
'(-a --allow-live)'{-a,--allow-live}'[Allow push to a live theme]' \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-d --development)'{-d,--development}'[Push theme files from your remote development theme]' \
'(-c --development-context -t --theme)'{-c,--development-context}'=[Unique identifier for a development theme context (e.g., PR number, branch...]:development-context:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
*''{-x,--ignore}'=[Skip uploading the specified files (Multiple flags allowed)]:ignore:_files' \
'(-j --json)'{-j,--json}'[Output the result as JSON]' \
'--listing=[The listing preset to use for multi-preset themes]:listing:' \
'(-l --live)'{-l,--live}'[Push theme files from your remote live theme]' \
'--no-color[Disable color output]' \
'(-n --nodelete)'{-n,--nodelete}'[Prevent deleting remote files that don'\''t exist locally]' \
*''{-o,--only}'=[Upload only the specified files (Multiple flags allowed)]:only:_files' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-p --publish)'{-p,--publish}'[Publish as the live theme after uploading]' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--strict[Require theme check to pass without errors before pushing]' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'(-u --unpublished)'{-u,--unpublished}'[Create a new unpublished theme and push to it]' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__rename() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
'(-d --development)'{-d,--development}'[Rename your development theme]' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'(-l --live)'{-l,--live}'[Rename your remote live theme]' \
'(-n --name)'{-n,--name}'=[The new name for the theme]:name:' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'(-t --theme)'{-t,--theme}'=[Theme ID or name of the remote theme]:theme:_shopify_themes' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme__share() {
_arguments -s -S \
'--auth-alias=[Alias of the Shopify account to use for authentication]:auth-alias:' \
*''{-e,--environment}'=[The environment to apply to the current command]:environment:_shopify_environments' \
'--listing=[The listing preset to use for multi-preset themes]:listing:' \
'--no-color[Disable color output]' \
'--password=[Password generated from the Theme Access app or an Admin API token]:password:' \
'--path=[The path where you want to run the command]:path:_files -/' \
'(-s --store)'{-s,--store}'=[Store URL]:store:' \
'--verbose[Increase the verbosity of the output]'
}
_shopify__theme() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'check:Validate the theme'
'console:Shopify Liquid REPL (read-eval-print loop) tool'
'delete:Delete remote themes from the connected store'
'dev:Uploads the current theme as a development theme to the connected store,...'
'duplicate:Duplicates a theme from your theme library'
'info:Displays information about your theme environment, including your current...'
'init:Clones a Git repository to use as a starting point for building a new theme'
'language-server:Start a Language Server Protocol server'
'list:Lists the themes in your store, along with their IDs and statuses'
'metafields:Theme metafield operations'
'open:Opens the preview of your remote theme'
'package:Package your theme into a .zip file, ready to upload to the Online Store'
'preview:Applies JSON overrides to a theme and returns a preview URL'
'profile:Profile the Liquid rendering of a theme page'
'publish:Set a remote theme as the live theme'
'pull:Download your remote theme files locally'
'push:Uploads your local theme files to the connected store, overwriting the...'
'rename:Renames an existing theme'
'share:Creates a shareable, unpublished, and new theme on your theme library with...'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'theme command' commands && ret=0
;;
args)
case $words[1] in
check) _shopify__theme__check && ret=0 ;;
console) _shopify__theme__console && ret=0 ;;
delete) _shopify__theme__delete && ret=0 ;;
dev) _shopify__theme__dev && ret=0 ;;
duplicate) _shopify__theme__duplicate && ret=0 ;;
info) _shopify__theme__info && ret=0 ;;
init) _shopify__theme__init && ret=0 ;;
language-server) _shopify__theme__language_server && ret=0 ;;
list) _shopify__theme__list && ret=0 ;;
metafields) _shopify__theme__metafields && ret=0 ;;
open) _shopify__theme__open && ret=0 ;;
package) _shopify__theme__package && ret=0 ;;
preview) _shopify__theme__preview && ret=0 ;;
profile) _shopify__theme__profile && ret=0 ;;
publish) _shopify__theme__publish && ret=0 ;;
pull) _shopify__theme__pull && ret=0 ;;
push) _shopify__theme__push && ret=0 ;;
rename) _shopify__theme__rename && ret=0 ;;
share) _shopify__theme__share && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify__upgrade() {
_arguments -s -S '*:file:_files'
}
_shopify__version() {
_arguments -s -S '*:file:_files'
}
_shopify() {
local curcontext="$curcontext" state line ret=1
local -a commands
commands=(
'app:Build Shopify apps'
'auth:Authentication operations'
'commands:List all shopify commands'
'config:CLI configuration options'
'doc:Search the Shopify documentation'
'help:Display help for Shopify CLI'
'hydrogen:Build Hydrogen storefronts'
'organization:Work with your organizations'
'search:Search shopify.dev for the most relevant content matching a query'
'store:Work with a store'
'theme:Build Liquid themes'
'upgrade:Upgrades Shopify CLI'
'version:Shopify CLI version currently installed'
)
_arguments -C '1: :->cmd' '*:: :->args' && ret=0
case $state in
cmd)
_describe -t commands 'shopify command' commands && ret=0
;;
args)
case $words[1] in
app) _shopify__app && ret=0 ;;
auth) _shopify__auth && ret=0 ;;
commands) _shopify__commands && ret=0 ;;
config) _shopify__config && ret=0 ;;
doc) _shopify__doc && ret=0 ;;
help) _shopify__help && ret=0 ;;
hydrogen) _shopify__hydrogen && ret=0 ;;
organization) _shopify__organization && ret=0 ;;
search) _shopify__search && ret=0 ;;
store) _shopify__store && ret=0 ;;
theme) _shopify__theme && ret=0 ;;
upgrade) _shopify__upgrade && ret=0 ;;
version) _shopify__version && ret=0 ;;
*) _files && ret=0 ;;
esac
;;
esac
return ret
}
_shopify "$@"