shopify-cli 2.4.0 → 2.5.0
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/.github/workflows/shopify.yml +0 -2
- data/.rubocop.yml +14 -14
- data/.rubocop_todo.yml +3 -3
- data/CHANGELOG.md +5 -0
- data/Dockerfile +1 -1
- data/Gemfile.lock +1 -1
- data/RELEASING.md +1 -1
- data/Rakefile +18 -18
- data/bin/shopify +3 -3
- data/lib/project_types/extension/cli.rb +3 -3
- data/lib/project_types/extension/commands/build.rb +2 -2
- data/lib/project_types/extension/commands/check.rb +2 -2
- data/lib/project_types/extension/commands/connect.rb +1 -1
- data/lib/project_types/extension/commands/create.rb +41 -23
- data/lib/project_types/extension/commands/extension_command.rb +1 -1
- data/lib/project_types/extension/commands/info.rb +1 -1
- data/lib/project_types/extension/commands/push.rb +1 -1
- data/lib/project_types/extension/commands/register.rb +2 -2
- data/lib/project_types/extension/commands/serve.rb +5 -5
- data/lib/project_types/extension/commands/tunnel.rb +6 -6
- data/lib/project_types/extension/extension_project.rb +4 -4
- data/lib/project_types/extension/features/argo.rb +2 -2
- data/lib/project_types/extension/features/argo_config.rb +5 -5
- data/lib/project_types/extension/features/argo_serve.rb +20 -6
- data/lib/project_types/extension/features/argo_setup.rb +1 -1
- data/lib/project_types/extension/features/argo_setup_step.rb +1 -1
- data/lib/project_types/extension/features/argo_setup_steps.rb +2 -2
- data/lib/project_types/extension/forms/connect.rb +2 -2
- data/lib/project_types/extension/forms/create.rb +2 -2
- data/lib/project_types/extension/forms/questions/ask_app.rb +2 -2
- data/lib/project_types/extension/forms/questions/ask_name.rb +1 -1
- data/lib/project_types/extension/forms/questions/ask_registration.rb +2 -2
- data/lib/project_types/extension/forms/questions/ask_template.rb +2 -2
- data/lib/project_types/extension/forms/questions/ask_type.rb +2 -2
- data/lib/project_types/extension/messages/message_loading.rb +2 -2
- data/lib/project_types/extension/models/development_server.rb +45 -6
- data/lib/project_types/extension/models/development_server_requirements.rb +22 -3
- data/lib/project_types/extension/models/lazy_specification_handler.rb +1 -1
- data/lib/project_types/extension/models/specification.rb +1 -1
- data/lib/project_types/extension/models/specification_handlers/default.rb +10 -2
- data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +1 -1
- data/lib/project_types/extension/models/specifications.rb +4 -4
- data/lib/project_types/extension/tasks/choose_next_available_port.rb +1 -1
- data/lib/project_types/extension/tasks/configure_features.rb +1 -1
- data/lib/project_types/extension/tasks/configure_options.rb +1 -1
- data/lib/project_types/extension/tasks/converters/product_converter.rb +1 -1
- data/lib/project_types/extension/tasks/create_extension.rb +2 -2
- data/lib/project_types/extension/tasks/fetch_specifications.rb +2 -2
- data/lib/project_types/extension/tasks/find_npm_packages.rb +3 -3
- data/lib/project_types/extension/tasks/get_app.rb +2 -2
- data/lib/project_types/extension/tasks/get_apps.rb +2 -2
- data/lib/project_types/extension/tasks/get_extensions.rb +2 -2
- data/lib/project_types/extension/tasks/get_product.rb +2 -2
- data/lib/project_types/extension/tasks/run_extension_command.rb +10 -3
- data/lib/project_types/extension/tasks/update_draft.rb +2 -2
- data/lib/project_types/node/cli.rb +3 -3
- data/lib/project_types/node/commands/connect.rb +4 -4
- data/lib/project_types/node/commands/create.rb +10 -10
- data/lib/project_types/node/commands/deploy/heroku.rb +4 -4
- data/lib/project_types/node/commands/deploy.rb +3 -3
- data/lib/project_types/node/commands/generate.rb +2 -2
- data/lib/project_types/node/commands/open.rb +3 -3
- data/lib/project_types/node/commands/serve.rb +7 -7
- data/lib/project_types/node/commands/tunnel.rb +6 -6
- data/lib/project_types/node/forms/create.rb +3 -3
- data/lib/project_types/php/cli.rb +27 -0
- data/lib/project_types/php/commands/connect.rb +19 -0
- data/lib/project_types/php/commands/create.rb +143 -0
- data/lib/project_types/php/commands/deploy/heroku.rb +129 -0
- data/lib/project_types/php/commands/deploy.rb +32 -0
- data/lib/project_types/php/commands/open.rb +16 -0
- data/lib/project_types/php/commands/serve.rb +51 -0
- data/lib/project_types/php/commands/tunnel.rb +37 -0
- data/lib/project_types/php/forms/create.rb +45 -0
- data/lib/project_types/php/messages/messages.rb +191 -0
- data/lib/project_types/rails/cli.rb +3 -3
- data/lib/project_types/rails/commands/connect.rb +4 -4
- data/lib/project_types/rails/commands/create.rb +12 -12
- data/lib/project_types/rails/commands/deploy/heroku.rb +4 -4
- data/lib/project_types/rails/commands/deploy.rb +3 -3
- data/lib/project_types/rails/commands/generate/webhook.rb +3 -3
- data/lib/project_types/rails/commands/generate.rb +3 -3
- data/lib/project_types/rails/commands/open.rb +3 -3
- data/lib/project_types/rails/commands/serve.rb +8 -8
- data/lib/project_types/rails/commands/tunnel.rb +6 -6
- data/lib/project_types/rails/forms/create.rb +3 -3
- data/lib/project_types/rails/gem.rb +1 -1
- data/lib/project_types/rails/ruby.rb +1 -1
- data/lib/project_types/script/cli.rb +11 -4
- data/lib/project_types/script/commands/create.rb +2 -2
- data/lib/project_types/script/commands/push.rb +2 -2
- data/lib/project_types/script/forms/create.rb +1 -1
- data/lib/project_types/script/layers/application/extension_points.rb +2 -2
- data/lib/project_types/script/layers/application/push_script.rb +4 -1
- data/lib/project_types/script/layers/domain/script_project.rb +2 -2
- data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +55 -0
- data/lib/project_types/script/layers/infrastructure/api_clients/script_service_api_client.rb +35 -0
- data/lib/project_types/script/layers/infrastructure/command_runner.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/languages/rust_project_creator.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +5 -5
- data/lib/project_types/script/layers/infrastructure/script_service.rb +4 -8
- data/lib/project_types/script/layers/infrastructure/service_locator.rb +20 -0
- data/lib/project_types/script/tasks/ensure_env.rb +6 -6
- data/lib/project_types/script/ui/error_handler.rb +75 -75
- data/lib/project_types/script/ui/printing_spinner.rb +1 -1
- data/lib/project_types/theme/cli.rb +3 -3
- data/lib/project_types/theme/commands/check.rb +3 -3
- data/lib/project_types/theme/commands/delete.rb +7 -7
- data/lib/project_types/theme/commands/init.rb +3 -3
- data/lib/project_types/theme/commands/language_server.rb +2 -2
- data/lib/project_types/theme/commands/package.rb +2 -2
- data/lib/project_types/theme/commands/publish.rb +5 -5
- data/lib/project_types/theme/commands/pull.rb +9 -9
- data/lib/project_types/theme/commands/push.rb +12 -12
- data/lib/project_types/theme/commands/serve.rb +4 -4
- data/lib/project_types/theme/forms/confirm_store.rb +1 -1
- data/lib/project_types/theme/forms/select.rb +2 -2
- data/lib/{shopify-cli → shopify_cli}/admin_api/populate_resource_command.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/admin_api/schema.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/admin_api.rb +27 -27
- data/lib/{shopify-cli → shopify_cli}/api.rb +8 -8
- data/lib/{shopify-cli → shopify_cli}/command.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/commands/config.rb +14 -14
- data/lib/{shopify-cli → shopify_cli}/commands/help.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/commands/login.rb +7 -7
- data/lib/shopify_cli/commands/logout.rb +39 -0
- data/lib/{shopify-cli → shopify_cli}/commands/populate/customer.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/commands/populate/draft_order.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/commands/populate/product.rb +4 -4
- data/lib/shopify_cli/commands/populate.rb +23 -0
- data/lib/shopify_cli/commands/store.rb +15 -0
- data/lib/{shopify-cli → shopify_cli}/commands/switch.rb +5 -5
- data/lib/{shopify-cli → shopify_cli}/commands/system.rb +10 -10
- data/lib/shopify_cli/commands/version.rb +15 -0
- data/lib/{shopify-cli → shopify_cli}/commands/whoami.rb +7 -7
- data/lib/shopify_cli/commands.rb +34 -0
- data/lib/{shopify-cli → shopify_cli}/connect.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/constants.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/context.rb +6 -6
- data/lib/{shopify-cli → shopify_cli}/core/entry_point.rb +7 -7
- data/lib/{shopify-cli → shopify_cli}/core/executor.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/core/finalize.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/core/help_resolver.rb +2 -2
- data/lib/{shopify-cli → shopify_cli}/core/monorail.rb +8 -8
- data/lib/shopify_cli/core.rb +8 -0
- data/lib/{shopify-cli → shopify_cli}/db.rb +8 -8
- data/lib/{shopify-cli → shopify_cli}/environment.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/feature.rb +8 -8
- data/lib/{shopify-cli → shopify_cli}/form.rb +2 -2
- data/lib/{shopify-cli → shopify_cli}/git.rb +6 -6
- data/lib/{shopify-cli → shopify_cli}/helpers/haikunator.rb +1 -1
- data/lib/shopify_cli/helpers.rb +5 -0
- data/lib/{shopify-cli → shopify_cli}/heroku.rb +38 -13
- data/lib/{shopify-cli → shopify_cli}/http_request.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/identity_auth/servlet.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/identity_auth.rb +8 -8
- data/lib/{shopify-cli → shopify_cli}/js_deps.rb +7 -7
- data/lib/{shopify-cli → shopify_cli}/js_system.rb +10 -10
- data/lib/{shopify-cli → shopify_cli}/lazy_delegator.rb +2 -2
- data/lib/{shopify-cli → shopify_cli}/messages/messages.rb +17 -1
- data/lib/{shopify-cli → shopify_cli}/method_object.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/options.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/packager.rb +8 -8
- data/lib/{shopify-cli → shopify_cli}/partners_api/organizations.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/partners_api.rb +13 -13
- data/lib/shopify_cli/php_deps.rb +102 -0
- data/lib/{shopify-cli → shopify_cli}/process_supervision.rb +10 -8
- data/lib/{shopify-cli → shopify_cli}/project.rb +15 -15
- data/lib/{shopify-cli → shopify_cli}/project_commands.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/project_type.rb +5 -5
- data/lib/{shopify-cli → shopify_cli}/resolve_constant.rb +5 -5
- data/lib/{shopify-cli → shopify_cli}/resources/env_file.rb +1 -1
- data/lib/shopify_cli/resources.rb +5 -0
- data/lib/{shopify-cli → shopify_cli}/result.rb +11 -11
- data/lib/{shopify-cli → shopify_cli}/shopifolk.rb +6 -6
- data/lib/{shopify-cli → shopify_cli}/sub_command.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/task.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/tasks/confirm_store.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/tasks/create_api_client.rb +4 -4
- data/lib/shopify_cli/tasks/ensure_authenticated.rb +13 -0
- data/lib/{shopify-cli → shopify_cli}/tasks/ensure_dev_store.rb +5 -5
- data/lib/{shopify-cli → shopify_cli}/tasks/ensure_env.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/tasks/ensure_loopback_url.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/tasks/ensure_project_type.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/tasks/select_org_and_shop.rb +8 -8
- data/lib/{shopify-cli → shopify_cli}/tasks/update_dashboard_urls.rb +6 -6
- data/lib/{shopify-cli → shopify_cli}/tasks.rb +10 -10
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/certificate_manager.rb +5 -5
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/header_hash.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/hot-reload.js +0 -0
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/hot_reload.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/local_assets.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/proxy.rb +2 -2
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/sse.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/watcher.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server/web_server.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/dev_server.rb +3 -3
- data/lib/{shopify-cli → shopify_cli}/theme/development_theme.rb +9 -9
- data/lib/{shopify-cli → shopify_cli}/theme/file.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/ignore_filter.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/mime_type.rb +1 -1
- data/lib/{shopify-cli → shopify_cli}/theme/syncer.rb +6 -6
- data/lib/{shopify-cli → shopify_cli}/theme/theme.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/transform_data_structure.rb +4 -4
- data/lib/{shopify-cli → shopify_cli}/tunnel.rb +14 -14
- data/lib/shopify_cli/version.rb +3 -0
- data/lib/shopify_cli.rb +50 -49
- data/shopify-cli.gemspec +2 -2
- metadata +104 -91
- data/lib/project_types/script/layers/infrastructure/api_clients.rb +0 -89
- data/lib/shopify-cli/commands/logout.rb +0 -39
- data/lib/shopify-cli/commands/populate.rb +0 -23
- data/lib/shopify-cli/commands/store.rb +0 -15
- data/lib/shopify-cli/commands/version.rb +0 -15
- data/lib/shopify-cli/commands.rb +0 -34
- data/lib/shopify-cli/core.rb +0 -8
- data/lib/shopify-cli/helpers.rb +0 -5
- data/lib/shopify-cli/resources.rb +0 -5
- data/lib/shopify-cli/tasks/ensure_authenticated.rb +0 -13
- data/lib/shopify-cli/version.rb +0 -3
|
@@ -3,7 +3,7 @@ require "net/http"
|
|
|
3
3
|
require "stringio"
|
|
4
4
|
require "time"
|
|
5
5
|
|
|
6
|
-
module
|
|
6
|
+
module ShopifyCLI
|
|
7
7
|
module Theme
|
|
8
8
|
module DevServer
|
|
9
9
|
HOP_BY_HOP_HEADERS = [
|
|
@@ -79,7 +79,7 @@ module ShopifyCli
|
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
def bearer_token
|
|
82
|
-
|
|
82
|
+
ShopifyCLI::DB.get(:storefront_renderer_production_exchange_token) ||
|
|
83
83
|
raise(KeyError, "storefront_renderer_production_exchange_token missing")
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -14,7 +14,7 @@ require_relative "dev_server/certificate_manager"
|
|
|
14
14
|
|
|
15
15
|
require "pathname"
|
|
16
16
|
|
|
17
|
-
module
|
|
17
|
+
module ShopifyCLI
|
|
18
18
|
module Theme
|
|
19
19
|
module DevServer
|
|
20
20
|
class << self
|
|
@@ -80,8 +80,8 @@ module ShopifyCli
|
|
|
80
80
|
)
|
|
81
81
|
watcher.stop
|
|
82
82
|
|
|
83
|
-
rescue
|
|
84
|
-
|
|
83
|
+
rescue ShopifyCLI::API::APIRequestForbiddenError,
|
|
84
|
+
ShopifyCLI::API::APIRequestUnauthorizedError
|
|
85
85
|
@ctx.abort("You are not authorized to edit themes on #{theme.shop}.\n" \
|
|
86
86
|
"Make sure you are a user of that store, and allowed to edit themes.")
|
|
87
87
|
end
|
|
@@ -4,17 +4,17 @@ require_relative "theme"
|
|
|
4
4
|
require "socket"
|
|
5
5
|
require "securerandom"
|
|
6
6
|
|
|
7
|
-
module
|
|
7
|
+
module ShopifyCLI
|
|
8
8
|
module Theme
|
|
9
9
|
API_NAME_LIMIT = 50
|
|
10
10
|
|
|
11
11
|
class DevelopmentTheme < Theme
|
|
12
12
|
def id
|
|
13
|
-
|
|
13
|
+
ShopifyCLI::DB.get(:development_theme_id)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def name
|
|
17
|
-
existing_name =
|
|
17
|
+
existing_name = ShopifyCLI::DB.get(:development_theme_name)
|
|
18
18
|
# Up to version 2.3.0 (included) generated names stored locally
|
|
19
19
|
# could have more than 50 characters and the API rejected them.
|
|
20
20
|
# This code ensures we update the name for those users to ensure
|
|
@@ -36,27 +36,27 @@ module ShopifyCli
|
|
|
36
36
|
else
|
|
37
37
|
create
|
|
38
38
|
@ctx.debug("Created temporary development theme: #{@id}")
|
|
39
|
-
|
|
39
|
+
ShopifyCLI::DB.set(development_theme_id: @id)
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def exists?
|
|
44
44
|
return false unless id
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
ShopifyCLI::AdminAPI.rest_request(
|
|
47
47
|
@ctx,
|
|
48
48
|
shop: shop,
|
|
49
49
|
path: "themes/#{id}.json",
|
|
50
50
|
api_version: "unstable",
|
|
51
51
|
)
|
|
52
|
-
rescue
|
|
52
|
+
rescue ShopifyCLI::API::APIRequestNotFoundError
|
|
53
53
|
false
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def delete
|
|
57
57
|
super if exists?
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
ShopifyCLI::DB.del(:development_theme_id) if ShopifyCLI::DB.exists?(:development_theme_id)
|
|
59
|
+
ShopifyCLI::DB.del(:development_theme_name) if ShopifyCLI::DB.exists?(:development_theme_name)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def self.delete(ctx)
|
|
@@ -74,7 +74,7 @@ module ShopifyCli
|
|
|
74
74
|
identifier = "#{hash}-#{hostname[0, hostname_character_limit]}"
|
|
75
75
|
theme_name = "Development (#{identifier})"
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
ShopifyCLI::DB.set(development_theme_name: theme_name)
|
|
78
78
|
|
|
79
79
|
theme_name
|
|
80
80
|
end
|
|
@@ -3,7 +3,7 @@ require "thread"
|
|
|
3
3
|
require "json"
|
|
4
4
|
require "base64"
|
|
5
5
|
|
|
6
|
-
module
|
|
6
|
+
module ShopifyCLI
|
|
7
7
|
module Theme
|
|
8
8
|
class Syncer
|
|
9
9
|
class Operation < Struct.new(:method, :file)
|
|
@@ -80,7 +80,7 @@ module ShopifyCli
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def fetch_checksums!
|
|
83
|
-
_status, response =
|
|
83
|
+
_status, response = ShopifyCLI::AdminAPI.rest_request(
|
|
84
84
|
@ctx,
|
|
85
85
|
shop: @theme.shop,
|
|
86
86
|
path: "themes/#{@theme.id}/assets.json",
|
|
@@ -211,7 +211,7 @@ module ShopifyCli
|
|
|
211
211
|
used, total = limit.split("/").map(&:to_i)
|
|
212
212
|
backoff_if_near_limit!(used, total)
|
|
213
213
|
end
|
|
214
|
-
rescue
|
|
214
|
+
rescue ShopifyCLI::API::APIRequestError => e
|
|
215
215
|
report_error(
|
|
216
216
|
"{{red:ERROR}} {{blue:#{operation}}}:\n " +
|
|
217
217
|
parse_api_errors(e).join("\n ")
|
|
@@ -228,7 +228,7 @@ module ShopifyCli
|
|
|
228
228
|
asset[:attachment] = Base64.encode64(file.read)
|
|
229
229
|
end
|
|
230
230
|
|
|
231
|
-
_status, body, response =
|
|
231
|
+
_status, body, response = ShopifyCLI::AdminAPI.rest_request(
|
|
232
232
|
@ctx,
|
|
233
233
|
shop: @theme.shop,
|
|
234
234
|
path: "themes/#{@theme.id}/assets.json",
|
|
@@ -243,7 +243,7 @@ module ShopifyCli
|
|
|
243
243
|
end
|
|
244
244
|
|
|
245
245
|
def get(file)
|
|
246
|
-
_status, body, response =
|
|
246
|
+
_status, body, response = ShopifyCLI::AdminAPI.rest_request(
|
|
247
247
|
@ctx,
|
|
248
248
|
shop: @theme.shop,
|
|
249
249
|
path: "themes/#{@theme.id}/assets.json",
|
|
@@ -265,7 +265,7 @@ module ShopifyCli
|
|
|
265
265
|
end
|
|
266
266
|
|
|
267
267
|
def delete(file)
|
|
268
|
-
_status, _body, response =
|
|
268
|
+
_status, _body, response = ShopifyCLI::AdminAPI.rest_request(
|
|
269
269
|
@ctx,
|
|
270
270
|
shop: @theme.shop,
|
|
271
271
|
path: "themes/#{@theme.id}/assets.json",
|
|
@@ -4,7 +4,7 @@ require_relative "file"
|
|
|
4
4
|
require "pathname"
|
|
5
5
|
require "time"
|
|
6
6
|
|
|
7
|
-
module
|
|
7
|
+
module ShopifyCLI
|
|
8
8
|
module Theme
|
|
9
9
|
class InvalidThemeRole < StandardError; end
|
|
10
10
|
|
|
@@ -101,7 +101,7 @@ module ShopifyCli
|
|
|
101
101
|
def create
|
|
102
102
|
raise InvalidThemeRole, "Can't create live theme. Use publish." if live?
|
|
103
103
|
|
|
104
|
-
_status, body =
|
|
104
|
+
_status, body = ShopifyCLI::AdminAPI.rest_request(
|
|
105
105
|
@ctx,
|
|
106
106
|
shop: shop,
|
|
107
107
|
path: "themes.json",
|
|
@@ -144,11 +144,11 @@ module ShopifyCli
|
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
def current_development?
|
|
147
|
-
development? && id ==
|
|
147
|
+
development? && id == ShopifyCLI::DB.get(:development_theme_id)
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
def foreign_development?
|
|
151
|
-
development? && id !=
|
|
151
|
+
development? && id != ShopifyCLI::DB.get(:development_theme_id)
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
def to_h
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
module
|
|
2
|
+
module ShopifyCLI
|
|
3
3
|
##
|
|
4
4
|
# `TransformDataStructure` helps to standardize data structure access. It
|
|
5
5
|
# traverses nested data structures and can convert
|
|
@@ -22,13 +22,13 @@ module ShopifyCli
|
|
|
22
22
|
# Since `TransformDataStructure` is a method object, it can easily be chained:
|
|
23
23
|
#
|
|
24
24
|
# require 'open-uri'
|
|
25
|
-
#
|
|
25
|
+
# ShopifyCLI::Result
|
|
26
26
|
# .call { open("https://jsonplaceholder.typicode.com/todos/1") }
|
|
27
27
|
# .map(&TransformDataStructure.new(symbolize_keys: true, underscore_keys: true))
|
|
28
28
|
# .value # => { id: 1, user_id: 1, ... }
|
|
29
29
|
#
|
|
30
30
|
class TransformDataStructure
|
|
31
|
-
include
|
|
31
|
+
include ShopifyCLI::MethodObject
|
|
32
32
|
|
|
33
33
|
class << self
|
|
34
34
|
private
|
|
@@ -53,7 +53,7 @@ module ShopifyCli
|
|
|
53
53
|
result[transform_key(key)] = call(value).value
|
|
54
54
|
end
|
|
55
55
|
else
|
|
56
|
-
|
|
56
|
+
ShopifyCLI::Result.success(object)
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -4,7 +4,7 @@ require "shopify_cli"
|
|
|
4
4
|
require "forwardable"
|
|
5
5
|
require "uri"
|
|
6
6
|
|
|
7
|
-
module
|
|
7
|
+
module ShopifyCLI
|
|
8
8
|
##
|
|
9
9
|
# Wraps around ngrok functionality to allow you to spawn a ngrok proccess in the
|
|
10
10
|
# background and stop the process when you need to. It also allows control over
|
|
@@ -39,8 +39,8 @@ module ShopifyCli
|
|
|
39
39
|
# * `ctx` - running context from your command
|
|
40
40
|
#
|
|
41
41
|
def stop(ctx)
|
|
42
|
-
if
|
|
43
|
-
if
|
|
42
|
+
if ShopifyCLI::ProcessSupervision.running?(:ngrok)
|
|
43
|
+
if ShopifyCLI::ProcessSupervision.stop(:ngrok)
|
|
44
44
|
ctx.puts(ctx.message("core.tunnel.stopped"))
|
|
45
45
|
else
|
|
46
46
|
ctx.abort(ctx.message("core.tunnel.error.stop"))
|
|
@@ -75,7 +75,7 @@ module ShopifyCli
|
|
|
75
75
|
end
|
|
76
76
|
ctx.puts(ctx.message("core.tunnel.start", url))
|
|
77
77
|
ctx.puts(ctx.message("core.tunnel.will_timeout", seconds_to_hm(seconds_remaining)))
|
|
78
|
-
ctx.puts(ctx.message("core.tunnel.signup_suggestion",
|
|
78
|
+
ctx.puts(ctx.message("core.tunnel.signup_suggestion", ShopifyCLI::TOOL_NAME))
|
|
79
79
|
end
|
|
80
80
|
url
|
|
81
81
|
end
|
|
@@ -91,7 +91,7 @@ module ShopifyCli
|
|
|
91
91
|
#
|
|
92
92
|
def auth(ctx, token)
|
|
93
93
|
install(ctx)
|
|
94
|
-
ctx.system(File.join(
|
|
94
|
+
ctx.system(File.join(ShopifyCLI.cache_dir, "ngrok"), "authtoken", token)
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
##
|
|
@@ -145,28 +145,28 @@ module ShopifyCli
|
|
|
145
145
|
|
|
146
146
|
def install(ctx)
|
|
147
147
|
ngrok = "ngrok#{ctx.executable_file_extension}"
|
|
148
|
-
return if File.exist?(File.join(
|
|
148
|
+
return if File.exist?(File.join(ShopifyCLI.cache_dir, ngrok))
|
|
149
149
|
check_prereq_command(ctx, "curl")
|
|
150
150
|
check_prereq_command(ctx, ctx.linux? ? "unzip" : "tar")
|
|
151
151
|
spinner = CLI::UI::SpinGroup.new
|
|
152
152
|
spinner.add(ctx.message("core.tunnel.installing")) do
|
|
153
|
-
zip_dest = File.join(
|
|
153
|
+
zip_dest = File.join(ShopifyCLI.cache_dir, "ngrok.zip")
|
|
154
154
|
unless File.exist?(zip_dest)
|
|
155
|
-
ctx.system("curl", "-o", zip_dest, DOWNLOAD_URLS[ctx.os], chdir:
|
|
155
|
+
ctx.system("curl", "-o", zip_dest, DOWNLOAD_URLS[ctx.os], chdir: ShopifyCLI.cache_dir)
|
|
156
156
|
end
|
|
157
157
|
args = if ctx.linux?
|
|
158
158
|
%W(unzip -u #{zip_dest})
|
|
159
159
|
else
|
|
160
160
|
%W(tar -xf #{zip_dest})
|
|
161
161
|
end
|
|
162
|
-
ctx.system(*args, chdir:
|
|
162
|
+
ctx.system(*args, chdir: ShopifyCLI.cache_dir)
|
|
163
163
|
ctx.rm(zip_dest)
|
|
164
164
|
end
|
|
165
165
|
spinner.wait
|
|
166
166
|
|
|
167
167
|
# final check to see if ngrok is accessible
|
|
168
|
-
unless File.exist?(File.join(
|
|
169
|
-
ctx.abort(ctx.message("core.tunnel.error.ngrok", ngrok,
|
|
168
|
+
unless File.exist?(File.join(ShopifyCLI.cache_dir, ngrok))
|
|
169
|
+
ctx.abort(ctx.message("core.tunnel.error.ngrok", ngrok, ShopifyCLI.cache_dir))
|
|
170
170
|
end
|
|
171
171
|
end
|
|
172
172
|
|
|
@@ -178,7 +178,7 @@ module ShopifyCli
|
|
|
178
178
|
end
|
|
179
179
|
|
|
180
180
|
def ngrok_command(port)
|
|
181
|
-
"\"#{File.join(
|
|
181
|
+
"\"#{File.join(ShopifyCLI.cache_dir, "ngrok")}\" http -inspect=false -log=stdout -log-level=debug #{port}"
|
|
182
182
|
end
|
|
183
183
|
|
|
184
184
|
def seconds_to_hm(seconds)
|
|
@@ -186,14 +186,14 @@ module ShopifyCli
|
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
def start_ngrok(ctx, port)
|
|
189
|
-
process =
|
|
189
|
+
process = ShopifyCLI::ProcessSupervision.start(:ngrok, ngrok_command(port))
|
|
190
190
|
log = fetch_url(ctx, process.log_path)
|
|
191
191
|
seconds_remaining = (process.time.to_i + log.timeout) - Time.now.to_i
|
|
192
192
|
[log.url, log.account, seconds_remaining]
|
|
193
193
|
end
|
|
194
194
|
|
|
195
195
|
def restart_ngrok(ctx, port)
|
|
196
|
-
unless
|
|
196
|
+
unless ShopifyCLI::ProcessSupervision.stop(:ngrok)
|
|
197
197
|
ctx.abort(ctx.message("core.tunnel.error.stop"))
|
|
198
198
|
end
|
|
199
199
|
start_ngrok(ctx, port)
|
data/lib/shopify_cli.rb
CHANGED
|
@@ -24,7 +24,7 @@ end
|
|
|
24
24
|
require "cli/ui"
|
|
25
25
|
require "cli/kit"
|
|
26
26
|
require "smart_properties"
|
|
27
|
-
require_relative "
|
|
27
|
+
require_relative "shopify_cli/version"
|
|
28
28
|
|
|
29
29
|
# Enable stdout routing. At this point all calls to STDOUT (and STDERR) will go through this class.
|
|
30
30
|
# See https://github.com/Shopify/cli-ui/blob/main/lib/cli/ui/stdout_router.rb for more info
|
|
@@ -36,7 +36,7 @@ CLI::UI::StdoutRouter.enable
|
|
|
36
36
|
#
|
|
37
37
|
# It is recommended to read through CLI Kit (https://github.com/shopify/cli-kit) and a CLI Kit example
|
|
38
38
|
# (https://github.com/Shopify/cli-kit-example) to fully understand how shopify-cli functions
|
|
39
|
-
module
|
|
39
|
+
module ShopifyCLI
|
|
40
40
|
extend CLI::Kit::Autocall
|
|
41
41
|
|
|
42
42
|
TOOL_NAME = "shopify"
|
|
@@ -75,63 +75,64 @@ module ShopifyCli
|
|
|
75
75
|
# application and CLI kit framework.
|
|
76
76
|
# To understand how this works, read https://github.com/Shopify/cli-kit/blob/main/lib/cli/kit.rb
|
|
77
77
|
|
|
78
|
-
#
|
|
78
|
+
# ShopifyCLI::Config
|
|
79
79
|
autocall(:Config) { CLI::Kit::Config.new(tool_name: TOOL_NAME) }
|
|
80
|
-
#
|
|
81
|
-
autocall(:Logger) { CLI::Kit::Logger.new(debug_log_file:
|
|
82
|
-
#
|
|
80
|
+
# ShopifyCLI::Logger
|
|
81
|
+
autocall(:Logger) { CLI::Kit::Logger.new(debug_log_file: ShopifyCLI.debug_log_file) }
|
|
82
|
+
# ShopifyCLI::Resolver
|
|
83
83
|
autocall(:Resolver) do
|
|
84
|
-
|
|
84
|
+
ShopifyCLI::Core::HelpResolver.new(
|
|
85
85
|
tool_name: TOOL_NAME,
|
|
86
|
-
command_registry:
|
|
86
|
+
command_registry: ShopifyCLI::Commands::Registry
|
|
87
87
|
)
|
|
88
88
|
end
|
|
89
|
-
#
|
|
89
|
+
# ShopifyCLI::ErrorHandler
|
|
90
90
|
autocall(:ErrorHandler) do
|
|
91
91
|
CLI::Kit::ErrorHandler.new(
|
|
92
|
-
log_file:
|
|
92
|
+
log_file: ShopifyCLI.log_file,
|
|
93
93
|
exception_reporter: nil,
|
|
94
94
|
)
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
autoload :Constants, "
|
|
98
|
-
autoload :Environment, "
|
|
99
|
-
autoload :AdminAPI, "
|
|
100
|
-
autoload :API, "
|
|
101
|
-
autoload :Command, "
|
|
102
|
-
autoload :Commands, "
|
|
103
|
-
autoload :Connect, "
|
|
104
|
-
autoload :Context, "
|
|
105
|
-
autoload :Core, "
|
|
106
|
-
autoload :DB, "
|
|
107
|
-
autoload :Feature, "
|
|
108
|
-
autoload :Form, "
|
|
109
|
-
autoload :Git, "
|
|
110
|
-
autoload :Helpers, "
|
|
111
|
-
autoload :Heroku, "
|
|
112
|
-
autoload :IdentityAuth, "
|
|
113
|
-
autoload :JsDeps, "
|
|
114
|
-
autoload :JsSystem, "
|
|
115
|
-
autoload :
|
|
116
|
-
autoload :
|
|
117
|
-
autoload :
|
|
118
|
-
autoload :
|
|
119
|
-
autoload :
|
|
120
|
-
autoload :
|
|
121
|
-
autoload :
|
|
122
|
-
autoload :
|
|
123
|
-
autoload :
|
|
124
|
-
autoload :
|
|
125
|
-
autoload :
|
|
126
|
-
autoload :
|
|
127
|
-
autoload :
|
|
128
|
-
autoload :
|
|
129
|
-
autoload :
|
|
130
|
-
autoload :
|
|
131
|
-
autoload :
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
97
|
+
autoload :Constants, "shopify_cli/constants"
|
|
98
|
+
autoload :Environment, "shopify_cli/environment"
|
|
99
|
+
autoload :AdminAPI, "shopify_cli/admin_api"
|
|
100
|
+
autoload :API, "shopify_cli/api"
|
|
101
|
+
autoload :Command, "shopify_cli/command"
|
|
102
|
+
autoload :Commands, "shopify_cli/commands"
|
|
103
|
+
autoload :Connect, "shopify_cli/connect"
|
|
104
|
+
autoload :Context, "shopify_cli/context"
|
|
105
|
+
autoload :Core, "shopify_cli/core"
|
|
106
|
+
autoload :DB, "shopify_cli/db"
|
|
107
|
+
autoload :Feature, "shopify_cli/feature"
|
|
108
|
+
autoload :Form, "shopify_cli/form"
|
|
109
|
+
autoload :Git, "shopify_cli/git"
|
|
110
|
+
autoload :Helpers, "shopify_cli/helpers"
|
|
111
|
+
autoload :Heroku, "shopify_cli/heroku"
|
|
112
|
+
autoload :IdentityAuth, "shopify_cli/identity_auth"
|
|
113
|
+
autoload :JsDeps, "shopify_cli/js_deps"
|
|
114
|
+
autoload :JsSystem, "shopify_cli/js_system"
|
|
115
|
+
autoload :PHPDeps, "shopify_cli/php_deps"
|
|
116
|
+
autoload :LazyDelegator, "shopify_cli/lazy_delegator"
|
|
117
|
+
autoload :MethodObject, "shopify_cli/method_object"
|
|
118
|
+
autoload :Options, "shopify_cli/options"
|
|
119
|
+
autoload :PartnersAPI, "shopify_cli/partners_api"
|
|
120
|
+
autoload :ProcessSupervision, "shopify_cli/process_supervision"
|
|
121
|
+
autoload :Project, "shopify_cli/project"
|
|
122
|
+
autoload :ProjectCommands, "shopify_cli/project_commands"
|
|
123
|
+
autoload :ProjectType, "shopify_cli/project_type"
|
|
124
|
+
autoload :ResolveConstant, "shopify_cli/resolve_constant"
|
|
125
|
+
autoload :Resources, "shopify_cli/resources"
|
|
126
|
+
autoload :Result, "shopify_cli/result"
|
|
127
|
+
autoload :Shopifolk, "shopify_cli/shopifolk"
|
|
128
|
+
autoload :SubCommand, "shopify_cli/sub_command"
|
|
129
|
+
autoload :Task, "shopify_cli/task"
|
|
130
|
+
autoload :Tasks, "shopify_cli/tasks"
|
|
131
|
+
autoload :TransformDataStructure, "shopify_cli/transform_data_structure"
|
|
132
|
+
autoload :Tunnel, "shopify_cli/tunnel"
|
|
133
|
+
|
|
134
|
+
require "shopify_cli/messages/messages"
|
|
135
|
+
Context.load_messages(ShopifyCLI::Messages::MESSAGES)
|
|
135
136
|
|
|
136
137
|
def self.cache_dir
|
|
137
138
|
cache_dir = if Environment.running_tests?
|
|
@@ -168,6 +169,6 @@ module ShopifyCli
|
|
|
168
169
|
|
|
169
170
|
def self.sha
|
|
170
171
|
return @sha if defined?(@sha)
|
|
171
|
-
@sha = Git.sha(dir:
|
|
172
|
+
@sha = Git.sha(dir: ShopifyCLI::ROOT)
|
|
172
173
|
end
|
|
173
174
|
end
|
data/shopify-cli.gemspec
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require_relative "lib/
|
|
1
|
+
require_relative "lib/shopify_cli/version"
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |spec|
|
|
4
4
|
spec.name = "shopify-cli"
|
|
5
|
-
spec.version =
|
|
5
|
+
spec.version = ShopifyCLI::VERSION
|
|
6
6
|
spec.authors = ["Shopify"]
|
|
7
7
|
spec.email = ["dev-tools-education@shopify.com"]
|
|
8
8
|
spec.license = "MIT"
|