shopify-cli 2.6.4 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.devcontainer.json +5 -0
- data/.github/DESIGN.md +1 -1
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.gitignore +1 -0
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +9 -0
- data/CHANGELOG.md +35 -3
- data/CONTRIBUTING.md +1 -21
- data/{Dockerfile → Codespace.dockerfile} +11 -3
- data/Gemfile +1 -0
- data/Gemfile.lock +6 -4
- data/README.md +20 -99
- data/Rakefile +27 -0
- data/Tests.dockerfile +35 -0
- data/assets/logo.png +0 -0
- data/dev.yml +0 -3
- data/docs/README.md +13 -0
- data/docs/contributors/testing.md +27 -0
- data/docs/users/installation.md +46 -0
- data/{THEMEKIT_MIGRATION.md → docs/users/migrate-from-themekit.md} +1 -1
- data/ext/javy/javy.rb +186 -0
- data/ext/javy/version +1 -0
- data/lib/project_types/extension/cli.rb +7 -3
- data/lib/project_types/extension/commands/build.rb +1 -0
- data/lib/project_types/extension/commands/create.rb +6 -6
- data/lib/project_types/extension/commands/extension_command.rb +1 -1
- data/lib/project_types/extension/features/argo.rb +1 -8
- data/lib/project_types/extension/features/argo_serve.rb +9 -23
- data/lib/project_types/extension/forms/create.rb +1 -1
- data/lib/project_types/extension/forms/questions/ask_template.rb +3 -6
- data/lib/project_types/extension/messages/messages.rb +1 -0
- data/lib/project_types/extension/models/development_server_requirements.rb +2 -3
- data/lib/project_types/extension/models/server_config/app.rb +13 -0
- data/lib/project_types/extension/models/server_config/development.rb +5 -4
- data/lib/project_types/extension/models/server_config/development_renderer.rb +1 -1
- data/lib/project_types/extension/models/server_config/development_resource.rb +13 -0
- data/lib/project_types/extension/models/server_config/extension.rb +4 -0
- data/lib/project_types/extension/models/server_config/root.rb +4 -1
- data/lib/project_types/extension/tasks/convert_server_config.rb +65 -0
- data/lib/project_types/extension/tasks/ensure_resource_url.rb +39 -0
- data/lib/project_types/extension/tasks/find_package_from_json.rb +37 -0
- data/lib/project_types/extension/tasks/merge_server_config.rb +32 -0
- data/lib/project_types/extension/tasks/run_extension_command.rb +11 -10
- data/lib/project_types/node/cli.rb +0 -16
- data/lib/project_types/node/forms/create.rb +5 -5
- data/lib/project_types/node/messages/messages.rb +2 -144
- data/lib/project_types/php/cli.rb +0 -11
- data/lib/project_types/php/forms/create.rb +5 -6
- data/lib/project_types/php/messages/messages.rb +2 -161
- data/lib/project_types/rails/cli.rb +0 -16
- data/lib/project_types/rails/commands/create.rb +46 -17
- data/lib/project_types/rails/forms/create.rb +5 -7
- data/lib/project_types/rails/messages/messages.rb +6 -151
- data/lib/project_types/script/cli.rb +2 -1
- data/lib/project_types/script/commands/create.rb +2 -5
- data/lib/project_types/script/commands/javy.rb +31 -0
- data/lib/project_types/script/commands/push.rb +1 -1
- data/lib/project_types/script/config/extension_points.yml +3 -0
- data/lib/project_types/script/errors.rb +0 -18
- data/lib/project_types/script/layers/application/create_script.rb +2 -2
- data/lib/project_types/script/layers/domain/script_json.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +0 -4
- data/lib/project_types/script/layers/infrastructure/errors.rb +8 -3
- data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +22 -3
- data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +25 -0
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +3 -4
- data/lib/project_types/script/layers/infrastructure/script_service.rb +1 -1
- data/lib/project_types/script/messages/messages.rb +16 -22
- data/lib/project_types/script/ui/error_handler.rb +1 -27
- data/lib/project_types/theme/cli.rb +1 -1
- data/lib/project_types/theme/commands/check.rb +1 -1
- data/lib/project_types/theme/commands/delete.rb +1 -1
- data/lib/project_types/theme/commands/init.rb +1 -1
- data/lib/project_types/theme/commands/language_server.rb +1 -1
- data/lib/project_types/theme/commands/package.rb +1 -1
- data/lib/project_types/theme/commands/publish.rb +1 -1
- data/lib/project_types/theme/commands/pull.rb +1 -1
- data/lib/project_types/theme/commands/push.rb +1 -1
- data/lib/project_types/theme/commands/serve.rb +9 -2
- data/lib/project_types/theme/messages/messages.rb +30 -1
- data/lib/shopify_cli/admin_api/populate_resource_command.rb +1 -1
- data/lib/shopify_cli/api.rb +7 -2
- data/lib/shopify_cli/app_type_detector.rb +24 -20
- data/lib/shopify_cli/command/app_sub_command.rb +10 -0
- data/lib/shopify_cli/command/project_command.rb +18 -0
- data/lib/shopify_cli/command/sub_command.rb +19 -0
- data/lib/shopify_cli/command.rb +7 -2
- data/lib/shopify_cli/commands/app/connect.rb +22 -0
- data/lib/shopify_cli/commands/app/create/node.rb +38 -0
- data/lib/shopify_cli/commands/app/create/php.rb +36 -0
- data/lib/shopify_cli/commands/app/create/rails.rb +40 -0
- data/lib/shopify_cli/commands/app/create.rb +28 -0
- data/lib/shopify_cli/commands/app/deploy.rb +49 -0
- data/lib/shopify_cli/commands/app/open.rb +19 -0
- data/lib/shopify_cli/commands/app/serve.rb +49 -0
- data/lib/shopify_cli/commands/app/tunnel.rb +43 -0
- data/lib/shopify_cli/commands/app.rb +29 -0
- data/lib/shopify_cli/commands/config.rb +2 -2
- data/lib/shopify_cli/commands.rb +1 -0
- data/lib/shopify_cli/constants.rb +4 -0
- data/lib/shopify_cli/exception_reporter.rb +8 -6
- data/lib/shopify_cli/git.rb +12 -1
- data/lib/shopify_cli/github/issue_url_generator.rb +19 -0
- data/lib/shopify_cli/github.rb +5 -0
- data/lib/shopify_cli/messages/messages.rb +253 -9
- data/lib/shopify_cli/migrator.rb +9 -11
- data/lib/shopify_cli/project.rb +5 -1
- data/lib/shopify_cli/project_commands.rb +1 -1
- data/lib/shopify_cli/services/app/connect_service.rb +25 -0
- data/lib/shopify_cli/services/app/create/node_service.rb +155 -0
- data/lib/shopify_cli/services/app/create/php_service.rb +152 -0
- data/lib/shopify_cli/services/app/create/rails_service.rb +215 -0
- data/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +101 -0
- data/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +135 -0
- data/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +120 -0
- data/lib/shopify_cli/services/app/open_service.rb +19 -0
- data/lib/shopify_cli/services/app/serve/node_service.rb +42 -0
- data/lib/shopify_cli/services/app/serve/php_service.rb +46 -0
- data/lib/shopify_cli/services/app/serve/rails_service.rb +48 -0
- data/lib/shopify_cli/services/app/tunnel/auth_service.rb +21 -0
- data/lib/shopify_cli/services/app/tunnel/start_service.rb +20 -0
- data/lib/shopify_cli/services/app/tunnel/stop_service.rb +20 -0
- data/lib/shopify_cli/services.rb +31 -0
- data/lib/shopify_cli/theme/dev_server/local_assets.rb +1 -1
- data/lib/shopify_cli/theme/dev_server.rb +35 -17
- data/lib/shopify_cli/tunnel.rb +25 -20
- data/lib/shopify_cli/version.rb +1 -1
- data/lib/shopify_cli.rb +1 -2
- data/shopify-cli.gemspec +2 -6
- data/shopify-dev +18 -0
- data/utilities/constants.rb +7 -0
- data/utilities/docker/container.rb +30 -2
- data/utilities/docker.rb +3 -2
- data/utilities/utilities.rb +1 -0
- data/vendor/deps/cli-kit/lib/cli/kit/system.rb +1 -1
- metadata +56 -53
- data/docs/_config.yml +0 -2
- data/docs/app/node/commands/index.md +0 -4
- data/docs/app/node/index.md +0 -4
- data/docs/app/rails/commands/index.md +0 -4
- data/docs/app/rails/index.md +0 -4
- data/docs/core/index.md +0 -4
- data/docs/getting-started/index.md +0 -4
- data/docs/getting-started/install/index.md +0 -4
- data/docs/getting-started/migrate/index.md +0 -4
- data/docs/getting-started/uninstall/index.md +0 -4
- data/docs/getting-started/upgrade/index.md +0 -4
- data/docs/help/start-app/index.md +0 -4
- data/docs/index.md +0 -4
- data/ext/shopify-cli/extconf.rb +0 -60
- data/install.sh +0 -7
- data/lib/project_types/extension/tasks/converters/server_config_converter.rb +0 -31
- data/lib/project_types/extension/tasks/load_server_config.rb +0 -23
- data/lib/project_types/node/commands/connect.rb +0 -21
- data/lib/project_types/node/commands/create.rb +0 -125
- data/lib/project_types/node/commands/deploy/heroku.rb +0 -96
- data/lib/project_types/node/commands/deploy.rb +0 -32
- data/lib/project_types/node/commands/generate.rb +0 -22
- data/lib/project_types/node/commands/open.rb +0 -18
- data/lib/project_types/node/commands/serve.rb +0 -45
- data/lib/project_types/node/commands/tunnel.rb +0 -41
- data/lib/project_types/php/commands/connect.rb +0 -19
- data/lib/project_types/php/commands/create.rb +0 -143
- data/lib/project_types/php/commands/deploy/heroku.rb +0 -129
- data/lib/project_types/php/commands/deploy.rb +0 -32
- data/lib/project_types/php/commands/open.rb +0 -16
- data/lib/project_types/php/commands/serve.rb +0 -48
- data/lib/project_types/php/commands/tunnel.rb +0 -37
- data/lib/project_types/rails/commands/connect.rb +0 -21
- data/lib/project_types/rails/commands/deploy/heroku.rb +0 -115
- data/lib/project_types/rails/commands/deploy.rb +0 -32
- data/lib/project_types/rails/commands/generate/webhook.rb +0 -42
- data/lib/project_types/rails/commands/generate.rb +0 -60
- data/lib/project_types/rails/commands/open.rb +0 -18
- data/lib/project_types/rails/commands/serve.rb +0 -51
- data/lib/project_types/rails/commands/tunnel.rb +0 -41
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -0
- data/lib/shopify_cli/sub_command.rb +0 -17
- data/shopify.fish +0 -12
- data/shopify.sh +0 -11
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module ShopifyCLI
|
|
2
|
+
module Commands
|
|
3
|
+
class App
|
|
4
|
+
class Serve < ShopifyCLI::Command::AppSubCommand
|
|
5
|
+
include ShopifyCLI::CommandOptions::CommandServeOptions
|
|
6
|
+
|
|
7
|
+
prerequisite_task :ensure_env, :ensure_dev_store
|
|
8
|
+
|
|
9
|
+
options do |parser, flags|
|
|
10
|
+
parser.on("--host=HOST") do |h|
|
|
11
|
+
flags[:host] = h.gsub('"', "")
|
|
12
|
+
end
|
|
13
|
+
parser.on("--port=PORT") { |port| flags[:port] = port }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def call(*)
|
|
17
|
+
case detect_app
|
|
18
|
+
when :rails
|
|
19
|
+
Services::App::Serve::RailsService.call(
|
|
20
|
+
host: host,
|
|
21
|
+
port: port,
|
|
22
|
+
context: @ctx
|
|
23
|
+
)
|
|
24
|
+
when :node
|
|
25
|
+
Services::App::Serve::NodeService.call(
|
|
26
|
+
host: host,
|
|
27
|
+
port: port,
|
|
28
|
+
context: @ctx
|
|
29
|
+
)
|
|
30
|
+
when :php
|
|
31
|
+
Services::App::Serve::PHPService.call(
|
|
32
|
+
host: host,
|
|
33
|
+
port: port,
|
|
34
|
+
context: @ctx
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.help
|
|
40
|
+
ShopifyCLI::Context.message("core.app.serve.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.extended_help
|
|
44
|
+
ShopifyCLI::Context.message("app.core.serve.extended_help")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require "project_types/node/cli"
|
|
2
|
+
|
|
3
|
+
module ShopifyCLI
|
|
4
|
+
module Commands
|
|
5
|
+
class App
|
|
6
|
+
class Tunnel < ShopifyCLI::Command::AppSubCommand
|
|
7
|
+
def call(args, _name)
|
|
8
|
+
subcommand = args.shift
|
|
9
|
+
case subcommand
|
|
10
|
+
when "auth"
|
|
11
|
+
token = args.shift
|
|
12
|
+
if token.nil?
|
|
13
|
+
raise ShopifyCLI::Abort, @ctx.message("core.app.tunnel.error.token_argument_missing")
|
|
14
|
+
else
|
|
15
|
+
Services::App::Tunnel::AuthService.call(
|
|
16
|
+
token: token,
|
|
17
|
+
context: @ctx
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
when "start"
|
|
21
|
+
Services::App::Tunnel::StartService.call(
|
|
22
|
+
context: @ctx
|
|
23
|
+
)
|
|
24
|
+
when "stop"
|
|
25
|
+
Services::App::Tunnel::StopService.call(
|
|
26
|
+
context: @ctx
|
|
27
|
+
)
|
|
28
|
+
else
|
|
29
|
+
@ctx.puts(self.class.help)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.help
|
|
34
|
+
ShopifyCLI::Context.message("core.app.tunnel.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.extended_help
|
|
38
|
+
ShopifyCLI::Context.message("core.app.tunnel.extended_help", ShopifyCLI::TOOL_NAME)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "shopify_cli"
|
|
2
|
+
|
|
3
|
+
module ShopifyCLI
|
|
4
|
+
module Commands
|
|
5
|
+
class App < ShopifyCLI::Command
|
|
6
|
+
subcommand :Connect, "connect", "shopify_cli/commands/app/connect"
|
|
7
|
+
subcommand :Create, "create", "shopify_cli/commands/app/create"
|
|
8
|
+
subcommand :Deploy, "deploy", "shopify_cli/commands/app/deploy"
|
|
9
|
+
subcommand :Open, "open", "shopify_cli/commands/app/open"
|
|
10
|
+
subcommand :Serve, "serve", "shopify_cli/commands/app/serve"
|
|
11
|
+
subcommand :Tunnel, "tunnel", "shopify_cli/commands/app/tunnel"
|
|
12
|
+
|
|
13
|
+
def call(*)
|
|
14
|
+
@ctx.puts(self.class.help)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class << self
|
|
18
|
+
def help
|
|
19
|
+
subcommands = subcommand_registry.command_names.join(" | ")
|
|
20
|
+
ShopifyCLI::Context.message("core.app.help", ShopifyCLI::TOOL_NAME, subcommands)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def call_help(*)
|
|
24
|
+
@ctx.puts(help)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -16,7 +16,7 @@ module ShopifyCLI
|
|
|
16
16
|
ShopifyCLI::Context.message("core.config.help", ShopifyCLI::TOOL_NAME)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
class Feature < ShopifyCLI::SubCommand
|
|
19
|
+
class Feature < ShopifyCLI::Command::SubCommand
|
|
20
20
|
def self.help
|
|
21
21
|
ShopifyCLI::Context.message("core.config.feature.help", ShopifyCLI::TOOL_NAME)
|
|
22
22
|
end
|
|
@@ -45,7 +45,7 @@ module ShopifyCLI
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
class Analytics < ShopifyCLI::SubCommand
|
|
48
|
+
class Analytics < ShopifyCLI::Command::SubCommand
|
|
49
49
|
def self.help
|
|
50
50
|
ShopifyCLI::Context.message("core.config.analytics.help", ShopifyCLI::TOOL_NAME)
|
|
51
51
|
end
|
data/lib/shopify_cli/commands.rb
CHANGED
|
@@ -29,6 +29,7 @@ module ShopifyCLI
|
|
|
29
29
|
register :System, "system", "shopify_cli/commands/system", true
|
|
30
30
|
register :Version, "version", "shopify_cli/commands/version", true
|
|
31
31
|
register :Whoami, "whoami", "shopify_cli/commands/whoami", true
|
|
32
|
+
register :App, "app", "shopify_cli/commands/app", true
|
|
32
33
|
|
|
33
34
|
autoload :Connect, "shopify_cli/commands/connect"
|
|
34
35
|
end
|
|
@@ -2,10 +2,10 @@ module ShopifyCLI
|
|
|
2
2
|
module ExceptionReporter
|
|
3
3
|
def self.report(error, _logs = nil, _api_key = nil, custom_metadata = {})
|
|
4
4
|
context = ShopifyCLI::Context.new
|
|
5
|
-
|
|
6
5
|
unless ShopifyCLI::Environment.development?
|
|
7
6
|
context.puts(context.message("core.error_reporting.unhandled_error.message"))
|
|
8
|
-
context.puts(context.message("core.error_reporting.unhandled_error.issue_message"
|
|
7
|
+
context.puts(context.message("core.error_reporting.unhandled_error.issue_message",
|
|
8
|
+
ShopifyCLI::GitHub::IssueURLGenerator.error_url(error)))
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
# Stack trace hint
|
|
@@ -17,8 +17,8 @@ module ShopifyCLI
|
|
|
17
17
|
context.puts("\n")
|
|
18
18
|
|
|
19
19
|
return unless reportable_error?(error)
|
|
20
|
-
return unless report?(context: context)
|
|
21
20
|
|
|
21
|
+
return unless report?(context: context)
|
|
22
22
|
ENV["BUGSNAG_DISABLE_AUTOCONFIGURE"] = "1"
|
|
23
23
|
require "bugsnag"
|
|
24
24
|
|
|
@@ -31,9 +31,12 @@ module ShopifyCLI
|
|
|
31
31
|
config.auto_capture_sessions = false
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
metadata = {}
|
|
34
|
+
metadata = { rubyPlatform: RUBY_PLATFORM }
|
|
35
35
|
metadata.merge!(custom_metadata)
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
Bugsnag.notify(error) do |event|
|
|
38
|
+
event.add_metadata(:device, metadata)
|
|
39
|
+
end
|
|
37
40
|
end
|
|
38
41
|
|
|
39
42
|
def self.report?(context:)
|
|
@@ -45,7 +48,6 @@ module ShopifyCLI
|
|
|
45
48
|
unless ReportingConfigurationController.reporting_prompted?
|
|
46
49
|
ReportingConfigurationController.check_or_prompt_report_automatically(source: :uncaught_error)
|
|
47
50
|
end
|
|
48
|
-
|
|
49
51
|
report_error
|
|
50
52
|
end
|
|
51
53
|
|
data/lib/shopify_cli/git.rb
CHANGED
|
@@ -4,6 +4,12 @@ module ShopifyCLI
|
|
|
4
4
|
# git.
|
|
5
5
|
class Git
|
|
6
6
|
class << self
|
|
7
|
+
# Check if Git is available in the environment
|
|
8
|
+
def available?(ctx)
|
|
9
|
+
_output, status = ctx.capture2e("git", "status")
|
|
10
|
+
status.success?
|
|
11
|
+
end
|
|
12
|
+
|
|
7
13
|
##
|
|
8
14
|
# will return the current sha of the cli repo
|
|
9
15
|
#
|
|
@@ -20,8 +26,13 @@ module ShopifyCLI
|
|
|
20
26
|
#
|
|
21
27
|
# ShopifyCLI::Git.sha
|
|
22
28
|
#
|
|
29
|
+
# Some environments don't have git in PATH and this prevents
|
|
30
|
+
# the execution from raising an error
|
|
31
|
+
# https://app.bugsnag.com/shopify/shopify-cli/errors/615dd36365ce57000889d4c5
|
|
23
32
|
def sha(dir: Dir.pwd, ctx: Context.new)
|
|
24
|
-
|
|
33
|
+
if available?(ctx)
|
|
34
|
+
rev_parse("HEAD", dir: dir, ctx: ctx)
|
|
35
|
+
end
|
|
25
36
|
end
|
|
26
37
|
|
|
27
38
|
##
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module ShopifyCLI
|
|
2
|
+
module GitHub
|
|
3
|
+
module IssueURLGenerator
|
|
4
|
+
def self.error_url(error)
|
|
5
|
+
title = "#{error.class}: #{error.message}"
|
|
6
|
+
labels = "type:bug"
|
|
7
|
+
content = File.read(File.join(ShopifyCLI::ROOT, ".github/ISSUE_TEMPLATE.md"))
|
|
8
|
+
|
|
9
|
+
# take at most 5 lines from backtrace
|
|
10
|
+
stacktrace = error.backtrace.length < 5 ? error.backtrace : error.backtrace[0..4]
|
|
11
|
+
body = stacktrace.join("\n").to_s
|
|
12
|
+
output = content.gsub(/<!--Stacktrace(.|\n)*-->/, body)
|
|
13
|
+
query = URI.encode_www_form({ title: title, body: output, labels: labels })
|
|
14
|
+
url = "#{ShopifyCLI::Constants::Links::NEW_ISSUE}?#{query}"
|
|
15
|
+
url
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -8,28 +8,272 @@ module ShopifyCLI
|
|
|
8
8
|
info: {
|
|
9
9
|
created: "{{v}} {{green:%s}} was created in the organization's Partner Dashboard {{underline:%s}}",
|
|
10
10
|
serve: "{{*}} Change directories to your new project folder {{green:%s}} and run "\
|
|
11
|
-
"{{command:%s
|
|
11
|
+
"{{command:%s app serve}} to start a local server",
|
|
12
12
|
install: "{{*}} Then, visit {{underline:%s/test}} to install {{green:%s}} on your Dev Store",
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
core: {
|
|
17
17
|
app: {
|
|
18
|
+
help: <<~HELP,
|
|
19
|
+
Suite of commands for developing apps. See {{command:%1$s app <command> --help}} for usage of each command.
|
|
20
|
+
Usage: {{command:%1$s app [ %2$s ]}}
|
|
21
|
+
HELP
|
|
22
|
+
error: {
|
|
23
|
+
type_not_found: <<~MESSAGE,
|
|
24
|
+
Couldn't detect the app type in directory %s. We currently support Rails, PHP, and NodeJS apps.
|
|
25
|
+
MESSAGE
|
|
26
|
+
missing_shopify_cli_yml: <<~MESSAGE,
|
|
27
|
+
Couldn't find a #{Constants::Files::SHOPIFY_CLI_YML} file in the directory %s to determine the app type.
|
|
28
|
+
MESSAGE
|
|
29
|
+
invalid_project_type: <<~MESSAGE,
|
|
30
|
+
The project type %s doesn't represent an app.
|
|
31
|
+
MESSAGE
|
|
32
|
+
},
|
|
33
|
+
create: {
|
|
34
|
+
type_required_error: "",
|
|
35
|
+
invalid_type: "The type %s is not supported. The only supported types are"\
|
|
36
|
+
" {{command:[ rails | node | php ]}}",
|
|
37
|
+
help: <<~HELP,
|
|
38
|
+
{{command:%s app create}}: Creates a ruby on rails app.
|
|
39
|
+
Usage: {{command:%s app create [ rails | node | php ]}}
|
|
40
|
+
HELP
|
|
41
|
+
rails: {
|
|
42
|
+
help: <<~HELP,
|
|
43
|
+
{{command:%s app create rails}}: Creates a ruby on rails app.
|
|
44
|
+
Usage: {{command:%s app create rails}}
|
|
45
|
+
Options:
|
|
46
|
+
{{command:--name=NAME}} App name. Any string.
|
|
47
|
+
{{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
|
|
48
|
+
{{command:--store-domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
|
|
49
|
+
{{command:--db=DB}} Database type. Must be one of: mysql, postgresql, sqlite3, oracle, frontbase, ibm_db, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc.
|
|
50
|
+
{{command:--rails-opts=RAILSOPTS}} Additional options. Must be string containing one or more valid Rails options, separated by spaces.
|
|
51
|
+
HELP
|
|
52
|
+
|
|
53
|
+
error: {
|
|
54
|
+
invalid_ruby_version: "This project requires a Ruby version ~> 2.5 or Ruby 3.0.",
|
|
55
|
+
dir_exists: "Project directory %s already exists. Please use a different name.",
|
|
56
|
+
install_failure: "Error installing %s gem",
|
|
57
|
+
node_required: "node is required to create a rails project. Download at https://nodejs.org/en/download.",
|
|
58
|
+
node_version_failure: "Failed to get the current node version. Please make sure it is installed as " \
|
|
59
|
+
"per the instructions at https://nodejs.org/en.",
|
|
60
|
+
yarn_required: "yarn is required to create a rails project. Download at " \
|
|
61
|
+
"https://classic.yarnpkg.com/en/docs/install.",
|
|
62
|
+
yarn_version_failure: "Failed to get the current yarn version. Please make sure it is " \
|
|
63
|
+
"installed as per the instructions at https://classic.yarnpkg.com/en/docs/install.",
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
info: {
|
|
67
|
+
open_new_shell: "{{*}} {{yellow:After installing %s, please open a new Command Prompt or PowerShell " \
|
|
68
|
+
"window to continue.}}",
|
|
69
|
+
},
|
|
70
|
+
installing_bundler: "Installing bundler…",
|
|
71
|
+
generating_app: "Generating new rails app project in %s…",
|
|
72
|
+
adding_shopify_gem: "{{v}} Adding shopify_app gem…",
|
|
73
|
+
node_version: "node %s",
|
|
74
|
+
yarn_version: "yarn %s",
|
|
75
|
+
running_bundle_install: "Running bundle install…",
|
|
76
|
+
running_generator: "Running shopify_app generator…",
|
|
77
|
+
running_migrations: "Running migrations…",
|
|
78
|
+
running_webpacker_install: "Running webpacker:install…",
|
|
79
|
+
},
|
|
80
|
+
node: {
|
|
81
|
+
help: <<~HELP,
|
|
82
|
+
{{command:%s app create node}}: Creates an embedded nodejs app.
|
|
83
|
+
Usage: {{command:%s app create node}}
|
|
84
|
+
Options:
|
|
85
|
+
{{command:--name=NAME}} App name. Any string.
|
|
86
|
+
{{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
|
|
87
|
+
{{command:--store-domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
|
|
88
|
+
HELP
|
|
89
|
+
error: {
|
|
90
|
+
node_required: "node is required to create an app project. Download at https://nodejs.org/en/download.",
|
|
91
|
+
node_version_failure: "Failed to get the current node version. Please make sure it is installed as " \
|
|
92
|
+
"per the instructions at https://nodejs.org/en.",
|
|
93
|
+
npm_required: "npm is required to create an app project. Download at https://www.npmjs.com/get-npm.",
|
|
94
|
+
npm_version_failure: "Failed to get the current npm version. Please make sure it is installed as per " \
|
|
95
|
+
"the instructions at https://www.npmjs.com/get-npm.",
|
|
96
|
+
},
|
|
97
|
+
node_version: "node %s",
|
|
98
|
+
npm_version: "npm %s",
|
|
99
|
+
},
|
|
100
|
+
php: {
|
|
101
|
+
help: <<~HELP,
|
|
102
|
+
{{command:%s app create php}}: Creates an embedded PHP app.
|
|
103
|
+
Usage: {{command:%s app create php}}
|
|
104
|
+
Options:
|
|
105
|
+
{{command:--name=NAME}} App name. Any string.
|
|
106
|
+
{{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
|
|
107
|
+
{{command:--store-domain=MYSHOPIFYDOMAIN}} Development store URL. Must be an existing development store.
|
|
108
|
+
{{command:--type=APPTYPE}} Whether this app is public or custom.
|
|
109
|
+
{{command:--verbose}} Output verbose information when installing dependencies.
|
|
110
|
+
HELP
|
|
111
|
+
|
|
112
|
+
error: {
|
|
113
|
+
php_required: <<~VERSION,
|
|
114
|
+
PHP is required to create an app project. For installation instructions, visit:
|
|
115
|
+
{{underline:https://www.php.net/manual/en/install.php}}
|
|
116
|
+
VERSION
|
|
117
|
+
php_version_failure: <<~VERSION,
|
|
118
|
+
Failed to get the current PHP version. Please make sure it is installed as per the instructions at:
|
|
119
|
+
{{underline:https://www.php.net/manual/en/install.php.}}
|
|
120
|
+
VERSION
|
|
121
|
+
php_version_too_low: "Your PHP version is too low. Please use version %s or higher.",
|
|
122
|
+
composer_required: <<~COMPOSER,
|
|
123
|
+
Composer is required to create an app project. Download at:
|
|
124
|
+
{{underline:https://getcomposer.org/download/}}
|
|
125
|
+
COMPOSER
|
|
126
|
+
npm_required: "npm is required to create an app project. Download at https://www.npmjs.com/get-npm.",
|
|
127
|
+
npm_version_failure: "Failed to get the current npm version. Please make sure it is installed as per " \
|
|
128
|
+
"the instructions at https://www.npmjs.com/get-npm.",
|
|
129
|
+
app_setup: "Failed to set up the app",
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
php_version: "PHP %s",
|
|
133
|
+
npm_version: "npm %s",
|
|
134
|
+
app_setting_up: "Setting up app…",
|
|
135
|
+
app_set_up: "App is now set up",
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
deploy: {
|
|
139
|
+
help: <<~HELP,
|
|
140
|
+
Deploy the current app to a hosting service. Heroku ({{underline:https://www.heroku.com}}) is currently the only option, but more will be added in the future.
|
|
141
|
+
Usage: {{command:%s app deploy [ heroku ]}}
|
|
142
|
+
HELP
|
|
143
|
+
extended_help: <<~HELP,
|
|
144
|
+
{{bold:Subcommands:}}
|
|
145
|
+
{{cyan:heroku}}: Deploys the current app to Heroku.
|
|
146
|
+
Usage: {{command:%s app deploy heroku}}
|
|
147
|
+
HELP
|
|
148
|
+
error: {
|
|
149
|
+
missing_platform: <<~MESSAGE,
|
|
150
|
+
The platform argument is missing.
|
|
151
|
+
Usage: {{command:%s app deploy [ heroku ]}}
|
|
152
|
+
MESSAGE
|
|
153
|
+
invalid_platform: <<~MESSAGE,
|
|
154
|
+
The platform argument passed {{command:%s}} is not supported.
|
|
155
|
+
Usage: {{command:%s app deploy [ heroku ]}}
|
|
156
|
+
MESSAGE
|
|
157
|
+
},
|
|
158
|
+
heroku: {
|
|
159
|
+
downloading: "Downloading Heroku CLI…",
|
|
160
|
+
downloaded: "Downloaded Heroku CLI",
|
|
161
|
+
installing: "Installing Heroku CLI…",
|
|
162
|
+
installing_windows: "Running Heroku CLI install wizard…",
|
|
163
|
+
installed: "Installed Heroku CLI",
|
|
164
|
+
authenticated_with_account: "{{v}} Authenticated with Heroku as {{green:%s}}",
|
|
165
|
+
authenticating: "Authenticating with Heroku…",
|
|
166
|
+
authenticated: "{{v}} Authenticated with Heroku",
|
|
167
|
+
deploying: "Deploying to Heroku…",
|
|
168
|
+
deployed: "{{v}} Deployed to Heroku",
|
|
169
|
+
php: {
|
|
170
|
+
post_deploy: <<~DEPLOYED,
|
|
171
|
+
{{v}} Deployed to Heroku, you can access your app at {{green:%s}}
|
|
172
|
+
|
|
173
|
+
If you're deploying this app for the first time, make sure to set up your database and your app's environment at {{bold:App dashboard -> Settings -> Config Vars}}.
|
|
174
|
+
|
|
175
|
+
When setting your config vars, don't forget to set up your database and the appropriate Laravel values for it, particularly {{bold:DB_CONNECTION and DB_DATABASE}}.
|
|
176
|
+
DEPLOYED
|
|
177
|
+
error: {
|
|
178
|
+
generate_app_key: "Failed to generate Laravel APP_KEY",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
rails: {
|
|
182
|
+
db_check: {
|
|
183
|
+
validating: "Validating application…",
|
|
184
|
+
checking: "Checking database type…",
|
|
185
|
+
validated: "Database type \"%s\" validated for platform \"Heroku\"",
|
|
186
|
+
problem: "A problem was encountered while checking your database type.",
|
|
187
|
+
sqlite: <<~SQLITE,
|
|
188
|
+
Heroku does not support deployment using the SQLite database system.
|
|
189
|
+
Change the database type using {{command:rails db:system:change --to=[new_db_type]}}. For more info:
|
|
190
|
+
{{underline:https://gorails.com/episodes/rails-6-db-system-change-command}}
|
|
191
|
+
SQLITE
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
git: {
|
|
195
|
+
checking: "Checking git repo…",
|
|
196
|
+
initialized: "Git repo initialized",
|
|
197
|
+
what_branch: "What branch would you like to deploy?",
|
|
198
|
+
branch_selected: "{{v}} Git branch {{green:%s}} selected for deploy",
|
|
199
|
+
},
|
|
200
|
+
app: {
|
|
201
|
+
no_apps_found: "No existing Heroku app found. What would you like to do?",
|
|
202
|
+
name: "What is your Heroku app’s name?",
|
|
203
|
+
select: "Specify an existing Heroku app",
|
|
204
|
+
selecting: "Selecting Heroku app %s…",
|
|
205
|
+
selected: "{{v}} Heroku app {{green:%s}} selected",
|
|
206
|
+
create: "Create a new Heroku app",
|
|
207
|
+
creating: "Creating new Heroku app…",
|
|
208
|
+
created: "{{v}} New Heroku app created",
|
|
209
|
+
setting_configs: "Setting Shopify app configs…",
|
|
210
|
+
configs_set: "{{v}} Shopify app configs set",
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
connect: {
|
|
215
|
+
help: <<~HELP,
|
|
216
|
+
{{command:%s app connect}}: Connects an existing app to Shopify CLI. Creates a config file.
|
|
217
|
+
Usage: {{command:%s app connect}}
|
|
218
|
+
HELP
|
|
219
|
+
connected: "Project now connected to {{green:%s}}",
|
|
220
|
+
production_warning: <<~MESSAGE,
|
|
221
|
+
{{yellow:! Warning: if you have connected to an {{bold:app in production}}, running {{command:serve}} may update the app URL and cause an outage.
|
|
222
|
+
MESSAGE
|
|
223
|
+
},
|
|
224
|
+
tunnel: {
|
|
225
|
+
help: <<~HELP,
|
|
226
|
+
Start or stop an http tunnel to your local development app using ngrok.
|
|
227
|
+
Usage: {{command:%s app tunnel [ auth | start | stop ]}}
|
|
228
|
+
HELP
|
|
229
|
+
extended_help: <<~HELP,
|
|
230
|
+
{{bold:Subcommands:}}
|
|
231
|
+
|
|
232
|
+
{{cyan:auth}}: Writes an ngrok auth token to ~/.ngrok2/ngrok.yml to connect with an ngrok account. Visit https://dashboard.ngrok.com/signup to sign up.
|
|
233
|
+
Usage: {{command:%1$s app tunnel auth <token>}}
|
|
234
|
+
|
|
235
|
+
{{cyan:start}}: Starts an ngrok tunnel, will print the URL for an existing tunnel if already running.
|
|
236
|
+
Usage: {{command:%1$s app tunnel start}}
|
|
237
|
+
|
|
238
|
+
{{cyan:stop}}: Stops the ngrok tunnel.
|
|
239
|
+
Usage: {{command:%1$s app tunnel stop}}
|
|
240
|
+
|
|
241
|
+
HELP
|
|
242
|
+
error: {
|
|
243
|
+
token_argument_missing: "{{x}} {{red:auth requires a token argument}}\n\n",
|
|
244
|
+
},
|
|
245
|
+
},
|
|
18
246
|
serve: {
|
|
247
|
+
help: <<~HELP,
|
|
248
|
+
Start a local development server for your project, as well as a public ngrok tunnel to your localhost.
|
|
249
|
+
Usage: {{command:%s app serve}}
|
|
250
|
+
HELP
|
|
251
|
+
extended_help: <<~HELP,
|
|
252
|
+
{{bold:Options:}}
|
|
253
|
+
{{cyan:--host=HOST}}: Bypass running tunnel and use custom host. HOST must be HTTPS url.
|
|
254
|
+
{{cyan:--port=PORT}}: Use custom port.
|
|
255
|
+
HELP
|
|
256
|
+
open_info: <<~MESSAGE,
|
|
257
|
+
{{*}} To install and start using your app, open this URL in your browser:
|
|
258
|
+
{{green:%s}}
|
|
259
|
+
MESSAGE
|
|
260
|
+
running_server: "Running server…",
|
|
19
261
|
error: {
|
|
20
|
-
invalid_port: "%s is not a valid port.",
|
|
21
262
|
host_must_be_https: "HOST must be a HTTPS url.",
|
|
263
|
+
invalid_port: "%s is not a valid port.",
|
|
22
264
|
},
|
|
23
265
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
266
|
+
open: {
|
|
267
|
+
help: <<~HELP,
|
|
268
|
+
Open your local development app in the default browser.
|
|
269
|
+
Usage: {{command:%s app open}}
|
|
270
|
+
HELP
|
|
271
|
+
},
|
|
28
272
|
},
|
|
29
273
|
error_reporting: {
|
|
30
274
|
unhandled_error: {
|
|
31
275
|
message: "{{x}} {{red:An unexpected error occured.}}",
|
|
32
|
-
issue_message: "{{red:\tTo \e]8
|
|
276
|
+
issue_message: "{{red:\tTo \e]8;;%s\e\\submit an issue\e]8;;\e\\"\
|
|
33
277
|
" include the stack trace.}}",
|
|
34
278
|
stacktrace_message: "{{red:\tTo print the stack trace, add the environment variable %s.}}",
|
|
35
279
|
},
|
|
@@ -328,7 +572,7 @@ module ShopifyCLI
|
|
|
328
572
|
error: {
|
|
329
573
|
not_in_project: <<~MESSAGE,
|
|
330
574
|
{{x}} You are not in a Shopify app project
|
|
331
|
-
{{yellow:{{*}}}}{{reset: Run}}{{cyan: shopify
|
|
575
|
+
{{yellow:{{*}}}}{{reset: Run}}{{cyan: shopify app create}}{{reset: to create your app}}
|
|
332
576
|
MESSAGE
|
|
333
577
|
},
|
|
334
578
|
},
|
|
@@ -520,7 +764,7 @@ module ShopifyCLI
|
|
|
520
764
|
Anonymized reports will be sent to Shopify.
|
|
521
765
|
MESSAGE
|
|
522
766
|
turned_off_message: <<~MESSAGE,
|
|
523
|
-
Turn on automatic reporting later
|
|
767
|
+
Turn on automatic reporting later with {{command:%s reporting on}}.
|
|
524
768
|
MESSAGE
|
|
525
769
|
},
|
|
526
770
|
whoami: {
|
data/lib/shopify_cli/migrator.rb
CHANGED
|
@@ -9,23 +9,21 @@ module ShopifyCLI
|
|
|
9
9
|
migrations_directory: File.expand_path("migrator/migrations", __dir__)
|
|
10
10
|
)
|
|
11
11
|
baseline_date = last_migration_date
|
|
12
|
-
unless baseline_date.nil?
|
|
13
|
-
migrations
|
|
14
|
-
.select
|
|
15
|
-
m.date > baseline_date.to_i
|
|
16
|
-
|
|
17
|
-
.each
|
|
12
|
+
unless baseline_date.nil?
|
|
13
|
+
migrations(migrations_directory: migrations_directory)
|
|
14
|
+
.select do |m|
|
|
15
|
+
m.date > baseline_date.to_i
|
|
16
|
+
end
|
|
17
|
+
.each(&:run)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
store_last_migration_date
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
private
|
|
24
|
-
|
|
25
23
|
def self.store_last_migration_date
|
|
26
24
|
ShopifyCLI::DB.set(ShopifyCLI::Constants::StoreKeys::LAST_MIGRATION_DATE => Time.now.to_i)
|
|
27
25
|
end
|
|
28
|
-
|
|
26
|
+
|
|
29
27
|
def self.last_migration_date
|
|
30
28
|
ShopifyCLI::DB.get(ShopifyCLI::Constants::StoreKeys::LAST_MIGRATION_DATE)
|
|
31
29
|
end
|
|
@@ -35,7 +33,7 @@ module ShopifyCLI
|
|
|
35
33
|
file_name = File.basename(file_path).gsub(".rb", "")
|
|
36
34
|
file_name_components = file_name.split("_")
|
|
37
35
|
date_timestamp = file_name_components[0].to_i
|
|
38
|
-
migration_name = file_name_components
|
|
36
|
+
migration_name = file_name_components.drop(1).join("_")
|
|
39
37
|
|
|
40
38
|
Migrator::Migration.new(
|
|
41
39
|
name: migration_name,
|
|
@@ -45,4 +43,4 @@ module ShopifyCLI
|
|
|
45
43
|
end
|
|
46
44
|
end
|
|
47
45
|
end
|
|
48
|
-
end
|
|
46
|
+
end
|
data/lib/shopify_cli/project.rb
CHANGED
|
@@ -81,7 +81,11 @@ module ShopifyCLI
|
|
|
81
81
|
#
|
|
82
82
|
# #### Example
|
|
83
83
|
#
|
|
84
|
-
#
|
|
84
|
+
# ShopifyCLI::Project.write(
|
|
85
|
+
# @ctx,
|
|
86
|
+
# project_type: "node",
|
|
87
|
+
# organization_id: form_data.organization_id,
|
|
88
|
+
# )
|
|
85
89
|
#
|
|
86
90
|
def write(ctx, project_type:, organization_id:, **identifiers)
|
|
87
91
|
require "yaml" # takes 20ms, so deferred as late as possible.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module ShopifyCLI
|
|
2
|
+
module Services
|
|
3
|
+
module App
|
|
4
|
+
class ConnectService < BaseService
|
|
5
|
+
attr_reader :app_type, :project, :context
|
|
6
|
+
|
|
7
|
+
def initialize(app_type:, project:, context:)
|
|
8
|
+
@app_type = app_type
|
|
9
|
+
@project = project
|
|
10
|
+
@context = context
|
|
11
|
+
super()
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call
|
|
15
|
+
unless project&.env.nil?
|
|
16
|
+
context.puts(context.message("core.app.connect.production_warning"))
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
app = ShopifyCLI::Connect.new(context).default_connect(app_type.to_s)
|
|
20
|
+
context.done(context.message("core.app.connect.connected", app))
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|