Module: ShopifyCli

Extended by:
CLI::Kit::Autocall
Defined in:
lib/shopify_cli.rb,
lib/shopify-cli/db.rb,
lib/shopify-cli/api.rb,
lib/shopify-cli/git.rb,
lib/shopify-cli/core.rb,
lib/shopify-cli/form.rb,
lib/shopify-cli/task.rb,
lib/shopify-cli/oauth.rb,
lib/shopify-cli/tasks.rb,
lib/shopify-cli/heroku.rb,
lib/shopify-cli/tunnel.rb,
lib/shopify-cli/command.rb,
lib/shopify-cli/context.rb,
lib/shopify-cli/feature.rb,
lib/shopify-cli/helpers.rb,
lib/shopify-cli/js_deps.rb,
lib/shopify-cli/options.rb,
lib/shopify-cli/project.rb,
lib/shopify-cli/version.rb,
lib/shopify-cli/commands.rb,
lib/shopify-cli/packager.rb,
lib/shopify-cli/admin_api.rb,
lib/shopify-cli/js_system.rb,
lib/shopify-cli/resources.rb,
lib/shopify-cli/sub_command.rb,
lib/shopify-cli/partners_api.rb,
lib/shopify-cli/project_type.rb,
lib/shopify-cli/commands/help.rb,
lib/shopify-cli/core/executor.rb,
lib/shopify-cli/core/finalize.rb,
lib/shopify-cli/core/monorail.rb,
lib/shopify-cli/oauth/servlet.rb,
lib/shopify-cli/commands/config.rb,
lib/shopify-cli/commands/create.rb,
lib/shopify-cli/commands/logout.rb,
lib/shopify-cli/commands/system.rb,
lib/shopify-cli/admin_api/schema.rb,
lib/shopify-cli/commands/connect.rb,
lib/shopify-cli/commands/version.rb,
lib/shopify-cli/core/entry_point.rb,
lib/shopify-cli/tasks/ensure_env.rb,
lib/shopify-cli/messages/messages.rb,
lib/shopify-cli/core/help_resolver.rb,
lib/shopify-cli/helpers/haikunator.rb,
lib/shopify-cli/resources/env_file.rb,
lib/shopify-cli/process_supervision.rb,
lib/shopify-cli/tasks/ensure_dev_store.rb,
lib/shopify-cli/tasks/create_api_client.rb,
lib/shopify-cli/tasks/ensure_loopback_url.rb,
lib/shopify-cli/tasks/select_org_and_shop.rb,
lib/shopify-cli/partners_api/organizations.rb,
lib/shopify-cli/tasks/update_dashboard_urls.rb,
lib/shopify-cli/admin_api/populate_resource_command.rb

Overview

The main file to load for shopify-app-cli Contains all high level constants, exit management, exception management, autoloads for commands, tasks, helpers, etc

It is recommended to read through CLI Kit (github.com/shopify/cli-kit) and a CLI Kit example (github.com/Shopify/cli-kit-example) to fully understand how shopify-app-cli functions

Defined Under Namespace

Modules: Commands, Core, Helpers, Messages, Resources, Tasks Classes: API, AdminAPI, Command, Context, DB, Feature, Form, Git, Heroku, JsDeps, JsSystem, OAuth, Options, Packager, PartnersAPI, ProcessSupervision, Project, ProjectType, SubCommand, Task, Tunnel

Constant Summary collapse

TOOL_NAME =
'shopify'
TOOL_FULL_NAME =
'Shopify CLI'
ROOT =
File.expand_path('../..', __FILE__)
PROJECT_TYPES_DIR =
File.join(ROOT, 'lib', 'project_types')
TEMP_DIR =
File.join(ROOT, '.tmp')
EMOJI =

programmer emoji if default install location, else wrench emoji

ROOT == '/opt/shopify' ? "\u{1f469}\u{200d}\u{1f4bb}" : "\u{1f527}"
FAILMOJI =

shrug or boom emoji

ROOT == '/opt/shopify' ? "\u{1f937}" : "\u{1f4a5}"
EXIT_FAILURE_BUT_NOT_BUG =

Exit management in shopify-app-cli follows the management set out by CLI Kit. github.com/Shopify/cli-kit/blob/master/lib/cli/kit.rb That is to say, we differentiate between exit success (0), exit failure (1), and exit bug (not 1)

These should never be called outside of the entrypoint and its delegations.

CLI::Kit::EXIT_FAILURE_BUT_NOT_BUG
EXIT_BUG =
CLI::Kit::EXIT_BUG
EXIT_SUCCESS =
CLI::Kit::EXIT_SUCCESS
GenericAbort =

shopify-app-cli uses CLI Kit’s exception management These are documented here: github.com/Shopify/cli-kit/blob/master/lib/cli/kit.rb

You should never subclass these exceptions, but instead rescue another exception and re-raise. AbortSilent and BugSilent should never have messages. They are mostly used when we output explanations and need to exit

CLI::Kit::GenericAbort
Abort =
CLI::Kit::Abort
Bug =
CLI::Kit::Bug
BugSilent =
CLI::Kit::BugSilent
AbortSilent =
CLI::Kit::AbortSilent
VERSION =
'1.3.1'

Class Method Summary collapse

Class Method Details

.cache_dirObject



127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/shopify_cli.rb', line 127

def self.cache_dir
  cache_dir = if ENV.key?('RUNNING_SHOPIFY_CLI_TESTS')
    TEMP_DIR
  elsif ENV['LOCALAPPDATA'].nil?
    File.join(File.expand_path(ENV.fetch('XDG_CACHE_HOME', '~/.cache')), TOOL_NAME)
  else
    File.join(File.expand_path(ENV['LOCALAPPDATA']), TOOL_NAME)
  end

  # Make sure the cache dir always exists
  @cache_dir_exists ||= FileUtils.mkdir_p(cache_dir)

  cache_dir
end

.debug_log_fileObject



156
157
158
# File 'lib/shopify_cli.rb', line 156

def self.debug_log_file
  File.join(tool_config_path, 'logs', 'debug.log')
end

.log_fileObject



152
153
154
# File 'lib/shopify_cli.rb', line 152

def self.log_file
  File.join(tool_config_path, 'logs', 'log.log')
end

.tool_config_pathObject



142
143
144
145
146
147
148
149
150
# File 'lib/shopify_cli.rb', line 142

def self.tool_config_path
  if ENV.key?('RUNNING_SHOPIFY_CLI_TESTS')
    TEMP_DIR
  elsif ENV['APPDATA'].nil?
    File.join(File.expand_path(ENV.fetch('XDG_CONFIG_HOME', '~/.config')), TOOL_NAME)
  else
    File.join(File.expand_path(ENV['APPDATA']), TOOL_NAME)
  end
end