@shopify/cli-kit 3.45.1 → 3.46.0-pre.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.
- package/assets/cli-ruby/Gemfile +0 -1
- package/assets/cli-ruby/Rakefile +0 -76
- package/assets/cli-ruby/lib/project_types/extension/cli.rb +5 -86
- package/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -3
- package/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +1 -2
- package/assets/cli-ruby/lib/shopify_cli/command.rb +0 -7
- package/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -15
- package/assets/cli-ruby/lib/shopify_cli/core.rb +0 -1
- package/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -1
- package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +9 -1
- package/assets/cli-ruby/lib/shopify_cli.rb +1 -10
- package/assets/cli-ruby/test/test_helpers.rb +0 -2
- package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -1
- package/dist/private/node/ui/components/ConcurrentOutput.test.js +2 -2
- package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -1
- package/dist/private/node/ui/components/List.d.ts +2 -0
- package/dist/private/node/ui/components/List.js +5 -4
- package/dist/private/node/ui/components/List.js.map +1 -1
- package/dist/private/node/ui/components/Prompts/InfoTable.d.ts +10 -2
- package/dist/private/node/ui/components/Prompts/InfoTable.js +12 -8
- package/dist/private/node/ui/components/Prompts/InfoTable.js.map +1 -1
- package/dist/public/common/string.js +62 -0
- package/dist/public/common/string.js.map +1 -1
- package/dist/public/common/version.d.ts +1 -1
- package/dist/public/common/version.js +1 -1
- package/dist/public/common/version.js.map +1 -1
- package/dist/public/node/cli.d.ts +1 -0
- package/dist/public/node/cli.js +15 -1
- package/dist/public/node/cli.js.map +1 -1
- package/dist/public/node/fs.d.ts +7 -2
- package/dist/public/node/fs.js +4 -3
- package/dist/public/node/fs.js.map +1 -1
- package/dist/public/node/output.d.ts +3 -1
- package/dist/public/node/output.js +10 -2
- package/dist/public/node/output.js.map +1 -1
- package/dist/public/node/ui.d.ts +3 -2
- package/dist/public/node/ui.js +1 -1
- package/dist/public/node/ui.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
- package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
- package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
- package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
- package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
- package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
- package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
- package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
- package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
- package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
- package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
- package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
- package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
- package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
- package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
- package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
- package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
- package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
- package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
- package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
- package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
- package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
- package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
- package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
- package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
- package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
- package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
- package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
- package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
- package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
- package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
- package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
- package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
- package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
- package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
- package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
- package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
- package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
- package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
- package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
- package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
- package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
- package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
- package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
- package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
- package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
- package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
- package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
- package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
- package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
- package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
- package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
- package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
- package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
- package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
- package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
- package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
- package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
- package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
- package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
- package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
- package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
- package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
- package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
- package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
- package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
- package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
- package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
- package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
- package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
- package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
- package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
- package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
- package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
- package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
- package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
- package/assets/cli-ruby/lib/shopify_cli/tunnel.rb +0 -255
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
require "shopify_cli"
|
|
2
|
-
require "optparse"
|
|
3
|
-
|
|
4
|
-
module ShopifyCLI
|
|
5
|
-
class AdminAPI
|
|
6
|
-
class PopulateResourceCommand < ShopifyCLI::Command::SubCommand
|
|
7
|
-
DEFAULT_COUNT = 5
|
|
8
|
-
|
|
9
|
-
attr_reader :input
|
|
10
|
-
|
|
11
|
-
class << self
|
|
12
|
-
attr_accessor :input_type
|
|
13
|
-
|
|
14
|
-
# we override the call classmethod here because we parse options at runtime
|
|
15
|
-
def call(args, command_name, _parent_command)
|
|
16
|
-
cmd = new(@ctx)
|
|
17
|
-
cmd.call(args, command_name)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def help
|
|
21
|
-
cmd = new(@ctx)
|
|
22
|
-
output = cmd.display_parent_help + "\n"
|
|
23
|
-
output + cmd.display_parent_extended_help
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def call(args, _)
|
|
28
|
-
@args = args
|
|
29
|
-
@input = Hash.new
|
|
30
|
-
@count = DEFAULT_COUNT
|
|
31
|
-
@help = false
|
|
32
|
-
@skip_shop_confirmation = false
|
|
33
|
-
input_options
|
|
34
|
-
resource_options.parse(@args)
|
|
35
|
-
|
|
36
|
-
if @help
|
|
37
|
-
output = display_parent_extended_help
|
|
38
|
-
output += "\n#{@ctx.message("core.populate.options.header", camel_case_resource_type)}\n"
|
|
39
|
-
output += resource_options.help
|
|
40
|
-
return @ctx.puts(output)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
ShopifyCLI::Tasks::ConfirmStore.call(@ctx) unless @skip_shop_confirmation
|
|
44
|
-
@shop = AdminAPI.get_shop_or_abort(@ctx)
|
|
45
|
-
if @silent
|
|
46
|
-
spin_group = CLI::UI::SpinGroup.new
|
|
47
|
-
spin_group.add(@ctx.message("core.populate.populating", @count, camel_case_resource_type)) do |spinner|
|
|
48
|
-
populate
|
|
49
|
-
spinner.update_title(completion_message)
|
|
50
|
-
end
|
|
51
|
-
spin_group.wait
|
|
52
|
-
else
|
|
53
|
-
populate
|
|
54
|
-
@ctx.puts(completion_message)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def message
|
|
59
|
-
raise NotImplementedError
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def defaults
|
|
63
|
-
raise NotImplementedError
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def display_parent_help
|
|
67
|
-
parent_command_klass.respond_to?(:help) ? parent_command_klass.help : ""
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def display_parent_extended_help
|
|
71
|
-
parent_command_klass.respond_to?(:extended_help) ? parent_command_klass.extended_help : ""
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def resource_options
|
|
75
|
-
@resource_options ||= OptionParser.new do |opts|
|
|
76
|
-
opts.banner = ""
|
|
77
|
-
opts.on(
|
|
78
|
-
"-c #{DEFAULT_COUNT}",
|
|
79
|
-
"--count=#{DEFAULT_COUNT}",
|
|
80
|
-
@ctx.message("core.populate.options.count_help")
|
|
81
|
-
) do |value|
|
|
82
|
-
@count = value.to_i
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
opts.on("-h", "--help", "print help") do |value|
|
|
86
|
-
@help = value
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
opts.on("--silent") { |v| @silent = v }
|
|
90
|
-
|
|
91
|
-
opts.on("--skip-shop-confirmation") { |v| @skip_shop_confirmation = v }
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def populate
|
|
96
|
-
@count.times do
|
|
97
|
-
run_mutation(defaults.merge(@input))
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def input_options
|
|
102
|
-
schema.type(self.class.input_type)["inputFields"].each do |field|
|
|
103
|
-
resource_options.on(
|
|
104
|
-
"--#{field["name"]}=#{field["defaultValue"]}",
|
|
105
|
-
field["description"]
|
|
106
|
-
) do |value|
|
|
107
|
-
@input[field["name"]] = value
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def schema
|
|
113
|
-
@schema ||= AdminAPI::Schema.get(@ctx)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def run_mutation(data)
|
|
117
|
-
kwargs = { input: data }
|
|
118
|
-
kwargs[:shop] = @shop
|
|
119
|
-
resp = AdminAPI.query(
|
|
120
|
-
@ctx, "create_#{snake_case_resource_type}", **kwargs
|
|
121
|
-
)
|
|
122
|
-
@ctx.abort(resp["errors"]) if resp["errors"]
|
|
123
|
-
@ctx.done(message(resp["data"])) unless @silent
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def completion_message
|
|
127
|
-
plural = @count > 1 ? "s" : ""
|
|
128
|
-
@ctx.message(
|
|
129
|
-
"core.populate.completion_message",
|
|
130
|
-
@count,
|
|
131
|
-
"#{camel_case_resource_type}#{plural}",
|
|
132
|
-
@shop,
|
|
133
|
-
camel_case_resource_type,
|
|
134
|
-
admin_url,
|
|
135
|
-
snake_case_resource_type
|
|
136
|
-
)
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
def admin_url
|
|
140
|
-
"https://#{@shop}/admin/"
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def price
|
|
144
|
-
format("%.2f", rand(1..10))
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
private
|
|
148
|
-
|
|
149
|
-
def camel_case_resource_type
|
|
150
|
-
@camel_case_resource_type ||= self.class.to_s.split("::").last
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
def snake_case_resource_type
|
|
154
|
-
@snake_case_resource_type ||= camel_case_resource_type.to_s
|
|
155
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
156
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
|
157
|
-
.tr("-", "_")
|
|
158
|
-
.downcase
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
def parent_command_klass
|
|
162
|
-
@parent_command_klass ||= Module.const_get(self.class.to_s.split("::")[0..-2].join("::"))
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require "shopify_cli"
|
|
2
|
-
|
|
3
|
-
module ShopifyCLI
|
|
4
|
-
class AdminAPI
|
|
5
|
-
class Schema < Hash
|
|
6
|
-
class << self
|
|
7
|
-
def get(ctx)
|
|
8
|
-
unless ShopifyCLI::DB.exists?(:shopify_admin_schema)
|
|
9
|
-
shop = AdminAPI.get_shop_or_abort(ctx)
|
|
10
|
-
schema = AdminAPI.query(ctx, "admin_introspection", shop: shop)
|
|
11
|
-
ShopifyCLI::DB.set(shopify_admin_schema: JSON.dump(schema))
|
|
12
|
-
end
|
|
13
|
-
# This is ruby magic for making a new hash with another hash.
|
|
14
|
-
# It wraps the JSON in our Schema Class to have the helper methods
|
|
15
|
-
# available
|
|
16
|
-
self[JSON.parse(ShopifyCLI::DB.get(:shopify_admin_schema))]
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def type(name)
|
|
21
|
-
data = self["data"]
|
|
22
|
-
schema = data["__schema"]
|
|
23
|
-
schema["types"].find do |object|
|
|
24
|
-
object["name"] == name.to_s
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def get_names_from_type(name)
|
|
29
|
-
type(name)["enumValues"].map do |object|
|
|
30
|
-
object["name"]
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require "json"
|
|
2
|
-
|
|
3
|
-
module ShopifyCLI
|
|
4
|
-
class AppTypeDetector
|
|
5
|
-
Error = Class.new(StandardError)
|
|
6
|
-
MissingShopifyCLIYamlError = Class.new(Error)
|
|
7
|
-
TypeNotFoundError = Class.new(Error)
|
|
8
|
-
class InvalidTypeError < Error
|
|
9
|
-
attr_reader :project_type
|
|
10
|
-
def initialize(message, project_type:)
|
|
11
|
-
@project_type = project_type
|
|
12
|
-
super(message)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.detect(project_directory:)
|
|
17
|
-
require "yaml" # takes 20ms, so deferred as late as possible.
|
|
18
|
-
|
|
19
|
-
shopify_cli_yml_path = File.join(project_directory, Constants::Files::SHOPIFY_CLI_YML)
|
|
20
|
-
unless File.exist?(shopify_cli_yml_path)
|
|
21
|
-
raise MissingShopifyCLIYamlError,
|
|
22
|
-
"#{Constants::Files::SHOPIFY_CLI_YML} was not found in directory #{project_directory}"
|
|
23
|
-
end
|
|
24
|
-
shopify_cli = YAML.load_file(shopify_cli_yml_path)
|
|
25
|
-
case shopify_cli["project_type"]&.to_sym
|
|
26
|
-
when :node, :rails, :php
|
|
27
|
-
shopify_cli["project_type"].to_sym
|
|
28
|
-
when nil
|
|
29
|
-
raise TypeNotFoundError, "Couldn't detect the project type in directory: #{project_directory}"
|
|
30
|
-
else
|
|
31
|
-
raise InvalidTypeError.new("The project found '' is not supported",
|
|
32
|
-
project_type: shopify_cli["project_type"])
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>Shopify CLI</title>
|
|
8
|
-
<style><%= locals[:css] %></style>
|
|
9
|
-
<link rel="icon" href="data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3c!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 109.5 124.5' style='enable-background:new 0 0 109.5 124.5;' xml:space='preserve'%3e%3cstyle type='text/css'%3e .st0%7bfill:%2395BF47;%7d .st1%7bfill:%235E8E3E;%7d .st2%7bfill:%23FFFFFF;%7d %3c/style%3e%3cg%3e%3cpath class='st0' d='M95.9,23.9c-0.1-0.6-0.6-1-1.1-1c-0.5,0-9.3-0.2-9.3-0.2s-7.4-7.2-8.1-7.9c-0.7-0.7-2.2-0.5-2.7-0.3 c0,0-1.4,0.4-3.7,1.1c-0.4-1.3-1-2.8-1.8-4.4c-2.6-5-6.5-7.7-11.1-7.7c0,0,0,0,0,0c-0.3,0-0.6,0-1,0.1c-0.1-0.2-0.3-0.3-0.4-0.5 c-2-2.2-4.6-3.2-7.7-3.1c-6,0.2-12,4.5-16.8,12.2c-3.4,5.4-6,12.2-6.8,17.5c-6.9,2.1-11.7,3.6-11.8,3.7c-3.5,1.1-3.6,1.2-4,4.5 c-0.3,2.5-9.5,73-9.5,73l76.4,13.2l33.1-8.2C109.5,115.8,96,24.5,95.9,23.9z M67.2,16.8c-1.8,0.5-3.8,1.2-5.9,1.8 c0-3-0.4-7.3-1.8-10.9C64,8.6,66.2,13.7,67.2,16.8z M57.2,19.9c-4,1.2-8.4,2.6-12.8,3.9c1.2-4.7,3.6-9.4,6.4-12.5 c1.1-1.1,2.6-2.4,4.3-3.2C56.9,11.6,57.3,16.5,57.2,19.9z M49.1,4c1.4,0,2.6,0.3,3.6,0.9C51.1,5.8,49.5,7,48,8.6 c-3.8,4.1-6.7,10.5-7.9,16.6c-3.6,1.1-7.2,2.2-10.5,3.2C31.7,18.8,39.8,4.3,49.1,4z'/%3e%3cg%3e%3cpath class='st1' d='M94.8,22.9c-0.5,0-9.3-0.2-9.3-0.2s-7.4-7.2-8.1-7.9c-0.3-0.3-0.6-0.4-1-0.5l0,109.7l33.1-8.2 c0,0-13.5-91.3-13.6-92C95.8,23.3,95.3,22.9,94.8,22.9z'/%3e%3cpath class='st2' d='M58,39.9l-3.8,14.4c0,0-4.3-2-9.4-1.6c-7.5,0.5-7.5,5.2-7.5,6.4c0.4,6.4,17.3,7.8,18.3,22.9 c0.7,11.9-6.3,20-16.4,20.6c-12.2,0.8-18.9-6.4-18.9-6.4l2.6-11c0,0,6.7,5.1,12.1,4.7c3.5-0.2,4.8-3.1,4.7-5.1 c-0.5-8.4-14.3-7.9-15.2-21.7c-0.7-11.6,6.9-23.4,23.7-24.4C54.7,38.2,58,39.9,58,39.9z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e" sizes="any" type="image/svg+xml">
|
|
10
|
-
</head>
|
|
11
|
-
|
|
12
|
-
<% if successful %>
|
|
13
|
-
<body class="body-success">
|
|
14
|
-
<div class="app-success">
|
|
15
|
-
<div class="container">
|
|
16
|
-
<h1><%= locals[:message] %></h1>
|
|
17
|
-
<p>You can close this tab and return to your terminal.</p>
|
|
18
|
-
</div>
|
|
19
|
-
</div>
|
|
20
|
-
</body>
|
|
21
|
-
<% else %>
|
|
22
|
-
<body class="body-error">
|
|
23
|
-
<div class="app-error">
|
|
24
|
-
<div class="container">
|
|
25
|
-
<h1>Something went wrong!</h1>
|
|
26
|
-
<p><%= locals[:message] %></p>
|
|
27
|
-
<br>
|
|
28
|
-
<br>
|
|
29
|
-
<p>Return to your terminal and try running the previous command again.</p>
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
</body>
|
|
33
|
-
<% end %>
|
|
34
|
-
</html>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
html {
|
|
2
|
-
font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
|
|
3
|
-
text-size-adjust: 100%;
|
|
4
|
-
text-rendering: optimizeLegibility;
|
|
5
|
-
-webkit-font-smoothing: antialiased;
|
|
6
|
-
-moz-osx-font-smoothing: grayscale;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
body {
|
|
10
|
-
font-size: 26px;
|
|
11
|
-
line-height: normal;
|
|
12
|
-
margin: 0;
|
|
13
|
-
padding: 0;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
button, input, optgroup, select, textarea {
|
|
17
|
-
font-family: inherit;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
h1 {
|
|
21
|
-
font-weight: 600;
|
|
22
|
-
font-size: 1em;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
p {
|
|
26
|
-
font-weight: 400;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.body-success {
|
|
30
|
-
color: #F6F6F7;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.body-error {
|
|
34
|
-
color: #202223;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.app-success {
|
|
38
|
-
width: 100vw;
|
|
39
|
-
height: 100vh;
|
|
40
|
-
background-color: #054A49;
|
|
41
|
-
display: flex;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.app-error {
|
|
45
|
-
width: 100vw;
|
|
46
|
-
height: 100vh;
|
|
47
|
-
background-color: #F6F6F7;
|
|
48
|
-
display: flex;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.container {
|
|
52
|
-
display: flex;
|
|
53
|
-
flex-direction: column;
|
|
54
|
-
justify-content: center;
|
|
55
|
-
width: 100%;
|
|
56
|
-
height: 100%;
|
|
57
|
-
padding-left: 7.5em;
|
|
58
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
require "date"
|
|
2
|
-
require "shopify_cli/sed"
|
|
3
|
-
require "octokit"
|
|
4
|
-
|
|
5
|
-
module ShopifyCLI
|
|
6
|
-
class Changelog
|
|
7
|
-
CHANGELOG_FILE = File.join(ShopifyCLI::ROOT, "CHANGELOG.md")
|
|
8
|
-
CHANGE_CATEGORIES = %w(Added Changed Deprecated Removed Fixed Security)
|
|
9
|
-
|
|
10
|
-
def initialize
|
|
11
|
-
load(File.read(CHANGELOG_FILE))
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def update_version!(new_version)
|
|
15
|
-
changes[new_version] = changes["Unreleased"]
|
|
16
|
-
changes[new_version][:date] = Date.today.iso8601
|
|
17
|
-
changes["Unreleased"] = { changes: [], date: nil }
|
|
18
|
-
save!
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def update!
|
|
22
|
-
pr = pr_for_current_branch
|
|
23
|
-
category = CLI::UI::Prompt.ask("What type of change?", options: CHANGE_CATEGORIES)
|
|
24
|
-
add_change(category, { pr_id: pr.number, desc: pr.title })
|
|
25
|
-
save!
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def release_notes(version)
|
|
29
|
-
changes[version][:changes].map do |change_category, changes|
|
|
30
|
-
<<~CHANGES
|
|
31
|
-
### #{change_category}
|
|
32
|
-
#{changes.map { |change| entry(**change) }.join("\n")}
|
|
33
|
-
CHANGES
|
|
34
|
-
end.join("\n")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def add_change(category, change)
|
|
38
|
-
changes["Unreleased"][:changes][category] << change
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def entry(pr_id:, desc:)
|
|
42
|
-
"* [##{pr_id}](https://github.com/Shopify/shopify-cli/pull/#{pr_id}): #{desc}"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def full_contents
|
|
46
|
-
sorted_changes = changes.each_key.sort_by do |change|
|
|
47
|
-
if change == "Unreleased"
|
|
48
|
-
[Float::INFINITY] * 3 # end of the list
|
|
49
|
-
else
|
|
50
|
-
major, minor, patch = change.split(".").map(&:to_i)
|
|
51
|
-
[major, minor, patch]
|
|
52
|
-
end
|
|
53
|
-
end.reverse
|
|
54
|
-
[
|
|
55
|
-
heading,
|
|
56
|
-
*sorted_changes.each.map { |version| release_notes_with_header(version) }.join,
|
|
57
|
-
remainder,
|
|
58
|
-
].map { |section| section.chomp << "\n" }.join
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def save!
|
|
62
|
-
File.write(CHANGELOG_FILE, full_contents)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
private
|
|
66
|
-
|
|
67
|
-
attr_reader :heading, :remainder
|
|
68
|
-
|
|
69
|
-
def release_notes_with_header(version)
|
|
70
|
-
header_line =
|
|
71
|
-
if version == "Unreleased"
|
|
72
|
-
"[Unreleased]"
|
|
73
|
-
else
|
|
74
|
-
date = changes[version][:date]
|
|
75
|
-
"Version #{version}#{" - #{date}" if date}"
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
[
|
|
79
|
-
"## #{header_line}",
|
|
80
|
-
release_notes(version),
|
|
81
|
-
].reject(&:empty?).map { |section| section.chomp << "\n\n" }.join
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def changes
|
|
85
|
-
@changes ||= Hash.new do |h, k|
|
|
86
|
-
h[k] = {
|
|
87
|
-
date: nil,
|
|
88
|
-
changes: Hash.new do |h2, k2|
|
|
89
|
-
h2[k2] = []
|
|
90
|
-
end,
|
|
91
|
-
}
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def load(log)
|
|
96
|
-
state = :initial
|
|
97
|
-
change_category = nil
|
|
98
|
-
current_version = nil
|
|
99
|
-
@heading = ""
|
|
100
|
-
@remainder = ""
|
|
101
|
-
log.each_line do |line|
|
|
102
|
-
case state
|
|
103
|
-
when :initial
|
|
104
|
-
if line.chomp == "\#\# [Unreleased]"
|
|
105
|
-
state = :unreleased
|
|
106
|
-
current_version = "Unreleased"
|
|
107
|
-
# Ensure Unreleased changeset exists even if no changes have happened yet
|
|
108
|
-
changes["Unreleased"]
|
|
109
|
-
else
|
|
110
|
-
@heading << line
|
|
111
|
-
end
|
|
112
|
-
when :unreleased, :prior_versions
|
|
113
|
-
if /\A\#\#\# (?<category>\w+)/ =~ line
|
|
114
|
-
change_category = category
|
|
115
|
-
elsif %r{\A\* \[\#(?<id>\d+)\]\(https://github.com/Shopify/shopify-cli/pull/\k<id>\): (?<desc>.+)\n} =~ line
|
|
116
|
-
changes[current_version][:changes][change_category] << { pr_id: id, desc: desc }
|
|
117
|
-
elsif /\A\#\# Version (?<version>\d+\.\d+\.\d+)( - (?<date>\d{4}-\d{2}-\d{2}))?/ =~ line
|
|
118
|
-
current_version = version
|
|
119
|
-
state = :prior_versions
|
|
120
|
-
major, minor, _patch = current_version.split(".")
|
|
121
|
-
if major.to_i <= 2 && minor.to_i < 7
|
|
122
|
-
# Changelog starts to become irregular in 2.6.x
|
|
123
|
-
state = :finished
|
|
124
|
-
end
|
|
125
|
-
changes[current_version][:date] = date unless state == :finished
|
|
126
|
-
elsif !line.match?(/\s*\n/)
|
|
127
|
-
raise "Unrecognized line: #{line.inspect}"
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
@remainder << line if state == :finished
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def pr_for_current_branch
|
|
135
|
-
current_branch = %x(git branch --show-current).chomp
|
|
136
|
-
search_term = "repo:Shopify/shopify-cli is:pr is:open head:#{current_branch}"
|
|
137
|
-
results = Octokit::Client.new.search_issues(search_term)
|
|
138
|
-
case results.total_count
|
|
139
|
-
when 0
|
|
140
|
-
raise "PR not opened yet!"
|
|
141
|
-
when (2..)
|
|
142
|
-
raise "Multiple open PRs, not sure which one to use for changelog!"
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
results.items.first
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module ShopifyCLI
|
|
2
|
-
class Command
|
|
3
|
-
class AppSubCommand < SubCommand
|
|
4
|
-
def detect_app(directory: Dir.pwd)
|
|
5
|
-
AppTypeDetector.detect(project_directory: directory)
|
|
6
|
-
rescue ShopifyCLI::AppTypeDetector::TypeNotFoundError
|
|
7
|
-
raise ShopifyCLI::Abort, @ctx.message("core.app.error.type_not_found", directory)
|
|
8
|
-
rescue ShopifyCLI::AppTypeDetector::MissingShopifyCLIYamlError
|
|
9
|
-
raise ShopifyCLI::Abort, @ctx.message("core.app.error.missing_shopify_cli_yml", directory)
|
|
10
|
-
rescue ShopifyCLI::AppTypeDetector::InvalidTypeError => error
|
|
11
|
-
raise ShopifyCLI::Abort, @ctx.message("core.app.error.invalid_project_type", error.project_type)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class << self
|
|
15
|
-
def call_help(*)
|
|
16
|
-
output = help
|
|
17
|
-
if respond_to?(:extended_help)
|
|
18
|
-
output += "\n"
|
|
19
|
-
output += extended_help
|
|
20
|
-
end
|
|
21
|
-
@ctx.puts(output)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
require "shopify_cli"
|
|
2
|
-
|
|
3
|
-
module ShopifyCLI
|
|
4
|
-
module CommandOptions
|
|
5
|
-
module CommandServeOptions
|
|
6
|
-
def self.included(base)
|
|
7
|
-
base.extend(ClassMethods)
|
|
8
|
-
base.class_eval do
|
|
9
|
-
def port
|
|
10
|
-
return ShopifyCLI::Tunnel::PORT.to_s unless options.flags.key?(:port)
|
|
11
|
-
port = options.flags[:port].to_i
|
|
12
|
-
@ctx.abort(@ctx.message("core.app.serve.error.invalid_port", options.flags[:port])) unless port > 0
|
|
13
|
-
port
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def host
|
|
17
|
-
host = options.flags[:host]
|
|
18
|
-
unless host.nil?
|
|
19
|
-
@ctx.abort(@ctx.message("core.app.serve.error.host_must_be_https")) if host.match(/^https/i).nil?
|
|
20
|
-
end
|
|
21
|
-
host
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def no_update
|
|
25
|
-
options.flags[:no_update] || false
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
module ClassMethods
|
|
31
|
-
def parse_host_option
|
|
32
|
-
options do |parser, flags|
|
|
33
|
-
parser.on("--host=HOST") do |h|
|
|
34
|
-
flags[:host] = h.gsub('"', "")
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def parse_port_option
|
|
40
|
-
options do |parser, flags|
|
|
41
|
-
parser.on("--port=PORT") { |port| flags[:port] = port }
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def parse_no_update_option
|
|
46
|
-
options do |parser, flags|
|
|
47
|
-
parser.on("--no-update") { flags[:no_update] = true }
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module ShopifyCLI
|
|
2
|
-
module Commands
|
|
3
|
-
class App
|
|
4
|
-
class Connect < ShopifyCLI::Command::AppSubCommand
|
|
5
|
-
def call(_args, _command_name, *)
|
|
6
|
-
app_type = detect_app(directory: Dir.pwd)
|
|
7
|
-
project = ShopifyCLI::Project.current
|
|
8
|
-
|
|
9
|
-
Services::App::ConnectService.call(
|
|
10
|
-
app_type: app_type,
|
|
11
|
-
project: project,
|
|
12
|
-
context: @ctx
|
|
13
|
-
)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.help
|
|
17
|
-
ShopifyCLI::Context.message("core.app.connect.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
module ShopifyCLI
|
|
2
|
-
module Commands
|
|
3
|
-
class App
|
|
4
|
-
class Create
|
|
5
|
-
class Node < ShopifyCLI::Command::AppSubCommand
|
|
6
|
-
prerequisite_task :ensure_authenticated
|
|
7
|
-
prerequisite_task :ensure_git_dependency
|
|
8
|
-
|
|
9
|
-
recommend_default_node_range
|
|
10
|
-
recommend_default_ruby_range
|
|
11
|
-
|
|
12
|
-
options do |parser, flags|
|
|
13
|
-
parser.on("--name=NAME") { |t| flags[:name] = t }
|
|
14
|
-
parser.on("--organization-id=ID") { |id| flags[:organization_id] = id }
|
|
15
|
-
parser.on("--store-domain=MYSHOPIFYDOMAIN") { |url| flags[:store_domain] = url }
|
|
16
|
-
parser.on("--type=APPTYPE") { |type| flags[:type] = type }
|
|
17
|
-
parser.on("--verbose") { flags[:verbose] = true }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def call(*)
|
|
21
|
-
Services::App::Create::NodeService.call(
|
|
22
|
-
name: options.flags[:name],
|
|
23
|
-
organization_id: options.flags[:organization_id],
|
|
24
|
-
store_domain: options.flags[:store_domain],
|
|
25
|
-
type: options.flags[:type],
|
|
26
|
-
verbose: !options.flags[:verbose].nil?,
|
|
27
|
-
context: @ctx
|
|
28
|
-
)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
class << self
|
|
32
|
-
def help
|
|
33
|
-
ShopifyCLI::Context.message("core.app.create.node.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module ShopifyCLI
|
|
2
|
-
module Commands
|
|
3
|
-
class App
|
|
4
|
-
class Create
|
|
5
|
-
class PHP < ShopifyCLI::Command::AppSubCommand
|
|
6
|
-
prerequisite_task :ensure_authenticated
|
|
7
|
-
prerequisite_task :ensure_git_dependency
|
|
8
|
-
|
|
9
|
-
options do |parser, flags|
|
|
10
|
-
parser.on("--name=NAME") { |name| flags[:name] = name }
|
|
11
|
-
parser.on("--organization-id=ID") { |organization_id| flags[:organization_id] = organization_id }
|
|
12
|
-
parser.on("--store-domain=MYSHOPIFYDOMAIN") { |url| flags[:store_domain] = url }
|
|
13
|
-
parser.on("--type=APPTYPE") { |type| flags[:type] = type }
|
|
14
|
-
parser.on("--verbose") { flags[:verbose] = true }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def call(*)
|
|
18
|
-
Services::App::Create::PHPService.call(
|
|
19
|
-
name: options.flags[:name],
|
|
20
|
-
organization_id: options.flags[:organization_id],
|
|
21
|
-
store_domain: options.flags[:store_domain],
|
|
22
|
-
type: options.flags[:type],
|
|
23
|
-
verbose: !options.flags[:verbose].nil?,
|
|
24
|
-
context: @ctx
|
|
25
|
-
)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class << self
|
|
29
|
-
def help
|
|
30
|
-
ShopifyCLI::Context.message("core.app.create.php.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|