@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.
Files changed (159) hide show
  1. package/assets/cli-ruby/Gemfile +0 -1
  2. package/assets/cli-ruby/Rakefile +0 -76
  3. package/assets/cli-ruby/lib/project_types/extension/cli.rb +5 -86
  4. package/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -3
  5. package/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +1 -2
  6. package/assets/cli-ruby/lib/shopify_cli/command.rb +0 -7
  7. package/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -15
  8. package/assets/cli-ruby/lib/shopify_cli/core.rb +0 -1
  9. package/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -1
  10. package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +9 -1
  11. package/assets/cli-ruby/lib/shopify_cli.rb +1 -10
  12. package/assets/cli-ruby/test/test_helpers.rb +0 -2
  13. package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -1
  14. package/dist/private/node/ui/components/ConcurrentOutput.test.js +2 -2
  15. package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -1
  16. package/dist/private/node/ui/components/List.d.ts +2 -0
  17. package/dist/private/node/ui/components/List.js +5 -4
  18. package/dist/private/node/ui/components/List.js.map +1 -1
  19. package/dist/private/node/ui/components/Prompts/InfoTable.d.ts +10 -2
  20. package/dist/private/node/ui/components/Prompts/InfoTable.js +12 -8
  21. package/dist/private/node/ui/components/Prompts/InfoTable.js.map +1 -1
  22. package/dist/public/common/string.js +62 -0
  23. package/dist/public/common/string.js.map +1 -1
  24. package/dist/public/common/version.d.ts +1 -1
  25. package/dist/public/common/version.js +1 -1
  26. package/dist/public/common/version.js.map +1 -1
  27. package/dist/public/node/cli.d.ts +1 -0
  28. package/dist/public/node/cli.js +15 -1
  29. package/dist/public/node/cli.js.map +1 -1
  30. package/dist/public/node/fs.d.ts +7 -2
  31. package/dist/public/node/fs.js +4 -3
  32. package/dist/public/node/fs.js.map +1 -1
  33. package/dist/public/node/output.d.ts +3 -1
  34. package/dist/public/node/output.js +10 -2
  35. package/dist/public/node/output.js.map +1 -1
  36. package/dist/public/node/ui.d.ts +3 -2
  37. package/dist/public/node/ui.js +1 -1
  38. package/dist/public/node/ui.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +8 -8
  41. package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
  42. package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
  43. package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
  44. package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
  45. package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
  46. package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
  47. package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
  48. package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
  49. package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
  50. package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
  51. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
  52. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
  53. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
  54. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
  55. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
  56. package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
  57. package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
  58. package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
  59. package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
  60. package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
  61. package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
  62. package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
  63. package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
  64. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
  65. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
  66. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
  67. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
  68. package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
  69. package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
  70. package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
  71. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
  72. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
  73. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
  74. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
  75. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
  76. package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
  77. package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
  78. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
  79. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
  80. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
  81. package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
  82. package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
  83. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
  84. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
  85. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
  86. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
  87. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
  88. package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
  89. package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
  90. package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
  91. package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
  92. package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
  93. package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
  94. package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
  95. package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
  96. package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
  97. package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
  98. package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
  99. package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
  100. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
  101. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
  102. package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
  103. package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
  104. package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
  105. package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
  106. package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
  107. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
  108. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
  109. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
  110. package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
  111. package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
  112. package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
  113. package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
  114. package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
  115. package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
  116. package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
  117. package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
  118. package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
  119. package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
  120. package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
  121. package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
  122. package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
  123. package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
  124. package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
  125. package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
  126. package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
  127. package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
  128. package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
  129. package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
  130. package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
  131. package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
  132. package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
  133. package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
  134. package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
  135. package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
  136. package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
  137. package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
  138. package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
  139. package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
  140. package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
  141. package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
  142. package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
  143. package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
  144. package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
  145. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
  146. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
  147. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
  148. package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
  149. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
  150. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
  151. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
  152. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
  153. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
  154. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
  155. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
  156. package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
  157. package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
  158. package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
  159. 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,7 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module ShopifyCLI
4
- module CommandOptions
5
- autoload :CommandServeOptions, "shopify_cli/command_options/command_serve_options"
6
- end
7
- 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