shopify-cli 1.6.0 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +15 -2
  3. data/CHANGELOG.md +21 -0
  4. data/Gemfile +12 -12
  5. data/Gemfile.lock +14 -14
  6. data/Rakefile +32 -30
  7. data/bin/load_shopify.rb +6 -6
  8. data/bin/shopify +2 -2
  9. data/dev.yml +3 -0
  10. data/ext/shopify-cli/extconf.rb +7 -7
  11. data/lib/docgen/markdown.rb +12 -12
  12. data/lib/graphql/extension_create.graphql +17 -2
  13. data/lib/graphql/fetch_specifications.graphql +14 -0
  14. data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
  15. data/lib/project_types/extension/cli.rb +56 -55
  16. data/lib/project_types/extension/commands/build.rb +3 -3
  17. data/lib/project_types/extension/commands/create.rb +17 -10
  18. data/lib/project_types/extension/commands/extension_command.rb +14 -7
  19. data/lib/project_types/extension/commands/push.rb +10 -10
  20. data/lib/project_types/extension/commands/register.rb +22 -32
  21. data/lib/project_types/extension/commands/serve.rb +1 -7
  22. data/lib/project_types/extension/commands/tunnel.rb +12 -12
  23. data/lib/project_types/extension/extension_project.rb +22 -7
  24. data/lib/project_types/extension/extension_project_keys.rb +5 -4
  25. data/lib/project_types/extension/features/argo.rb +26 -42
  26. data/lib/project_types/extension/features/argo_config.rb +5 -5
  27. data/lib/project_types/extension/features/argo_dependencies.rb +5 -5
  28. data/lib/project_types/extension/features/argo_renderer_package.rb +47 -0
  29. data/lib/project_types/extension/features/argo_serve.rb +69 -0
  30. data/lib/project_types/extension/features/argo_setup.rb +3 -3
  31. data/lib/project_types/extension/features/argo_setup_steps.rb +4 -4
  32. data/lib/project_types/extension/forms/create.rb +28 -34
  33. data/lib/project_types/extension/forms/questions/ask_app.rb +53 -0
  34. data/lib/project_types/extension/forms/questions/ask_name.rb +40 -0
  35. data/lib/project_types/extension/forms/questions/ask_type.rb +47 -0
  36. data/lib/project_types/extension/messages/message_loading.rb +3 -1
  37. data/lib/project_types/extension/messages/messages.rb +55 -55
  38. data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
  39. data/lib/project_types/extension/models/registration.rb +1 -0
  40. data/lib/project_types/extension/models/specification.rb +6 -2
  41. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +1 -1
  42. data/lib/project_types/extension/models/specification_handlers/default.rb +10 -2
  43. data/lib/project_types/extension/models/specifications.rb +14 -3
  44. data/lib/project_types/extension/models/version.rb +1 -1
  45. data/lib/project_types/extension/tasks/configure_features.rb +7 -5
  46. data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
  47. data/lib/project_types/extension/tasks/converters/registration_converter.rb +8 -6
  48. data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +4 -4
  49. data/lib/project_types/extension/tasks/converters/version_converter.rb +7 -7
  50. data/lib/project_types/extension/tasks/create_extension.rb +4 -4
  51. data/lib/project_types/extension/tasks/fetch_specifications.rb +8 -28
  52. data/lib/project_types/extension/tasks/get_app.rb +4 -4
  53. data/lib/project_types/extension/tasks/get_apps.rb +3 -3
  54. data/lib/project_types/extension/tasks/update_draft.rb +4 -4
  55. data/lib/project_types/extension/tasks/user_errors.rb +4 -4
  56. data/lib/project_types/node/cli.rb +19 -19
  57. data/lib/project_types/node/commands/connect.rb +3 -3
  58. data/lib/project_types/node/commands/create.rb +40 -38
  59. data/lib/project_types/node/commands/deploy.rb +4 -4
  60. data/lib/project_types/node/commands/deploy/heroku.rb +24 -24
  61. data/lib/project_types/node/commands/generate.rb +2 -24
  62. data/lib/project_types/node/commands/open.rb +2 -2
  63. data/lib/project_types/node/commands/populate.rb +6 -6
  64. data/lib/project_types/node/commands/populate/customer.rb +5 -5
  65. data/lib/project_types/node/commands/populate/draft_order.rb +5 -5
  66. data/lib/project_types/node/commands/populate/product.rb +5 -5
  67. data/lib/project_types/node/commands/serve.rb +9 -9
  68. data/lib/project_types/node/commands/tunnel.rb +7 -7
  69. data/lib/project_types/node/forms/create.rb +17 -8
  70. data/lib/project_types/node/messages/messages.rb +8 -7
  71. data/lib/project_types/rails/cli.rb +21 -21
  72. data/lib/project_types/rails/commands/connect.rb +3 -3
  73. data/lib/project_types/rails/commands/create.rb +51 -48
  74. data/lib/project_types/rails/commands/deploy.rb +4 -4
  75. data/lib/project_types/rails/commands/deploy/heroku.rb +30 -30
  76. data/lib/project_types/rails/commands/generate.rb +7 -7
  77. data/lib/project_types/rails/commands/generate/webhook.rb +6 -6
  78. data/lib/project_types/rails/commands/open.rb +2 -2
  79. data/lib/project_types/rails/commands/populate.rb +6 -6
  80. data/lib/project_types/rails/commands/populate/customer.rb +5 -5
  81. data/lib/project_types/rails/commands/populate/draft_order.rb +5 -5
  82. data/lib/project_types/rails/commands/populate/product.rb +5 -5
  83. data/lib/project_types/rails/commands/serve.rb +11 -11
  84. data/lib/project_types/rails/commands/tunnel.rb +7 -7
  85. data/lib/project_types/rails/forms/create.rb +34 -24
  86. data/lib/project_types/rails/gem.rb +23 -23
  87. data/lib/project_types/rails/messages/messages.rb +9 -8
  88. data/lib/project_types/rails/ruby.rb +2 -2
  89. data/lib/project_types/script/cli.rb +36 -40
  90. data/lib/project_types/script/commands/create.rb +9 -13
  91. data/lib/project_types/script/commands/push.rb +6 -5
  92. data/lib/project_types/script/config/extension_points.yml +25 -10
  93. data/lib/project_types/script/errors.rb +1 -19
  94. data/lib/project_types/script/forms/create.rb +7 -18
  95. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +7 -5
  96. data/lib/project_types/script/graphql/script_service_proxy.graphql +1 -2
  97. data/lib/project_types/script/layers/application/build_script.rb +6 -8
  98. data/lib/project_types/script/layers/application/create_script.rb +34 -24
  99. data/lib/project_types/script/layers/application/extension_points.rb +3 -2
  100. data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
  101. data/lib/project_types/script/layers/application/push_script.rb +10 -15
  102. data/lib/project_types/script/layers/domain/config_ui.rb +16 -0
  103. data/lib/project_types/script/layers/domain/errors.rb +16 -0
  104. data/lib/project_types/script/layers/domain/extension_point.rb +60 -45
  105. data/lib/project_types/script/layers/domain/metadata.rb +18 -25
  106. data/lib/project_types/script/layers/domain/push_package.rb +9 -5
  107. data/lib/project_types/script/layers/domain/script_project.rb +38 -0
  108. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +39 -10
  109. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +9 -44
  110. data/lib/project_types/script/layers/infrastructure/errors.rb +50 -19
  111. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +2 -2
  112. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +16 -21
  113. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +4 -4
  114. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +2 -2
  115. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +179 -0
  116. data/lib/project_types/script/layers/infrastructure/script_service.rb +35 -78
  117. data/lib/project_types/script/messages/messages.rb +33 -57
  118. data/lib/project_types/script/ui/error_handler.rb +116 -88
  119. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  120. data/lib/project_types/script/ui/strict_spinner.rb +1 -1
  121. data/lib/project_types/theme/cli.rb +19 -19
  122. data/lib/project_types/theme/commands/connect.rb +12 -12
  123. data/lib/project_types/theme/commands/create.rb +11 -11
  124. data/lib/project_types/theme/commands/deploy.rb +8 -8
  125. data/lib/project_types/theme/commands/generate.rb +3 -3
  126. data/lib/project_types/theme/commands/generate/env.rb +15 -15
  127. data/lib/project_types/theme/commands/push.rb +15 -15
  128. data/lib/project_types/theme/commands/serve.rb +5 -5
  129. data/lib/project_types/theme/forms/connect.rb +4 -4
  130. data/lib/project_types/theme/forms/create.rb +5 -5
  131. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +22 -22
  132. data/lib/project_types/theme/themekit.rb +15 -15
  133. data/lib/rubygems_plugin.rb +3 -3
  134. data/lib/shopify-cli/admin_api.rb +11 -11
  135. data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
  136. data/lib/shopify-cli/admin_api/schema.rb +3 -3
  137. data/lib/shopify-cli/api.rb +10 -10
  138. data/lib/shopify-cli/command.rb +1 -1
  139. data/lib/shopify-cli/commands.rb +9 -9
  140. data/lib/shopify-cli/commands/config.rb +28 -52
  141. data/lib/shopify-cli/commands/connect.rb +10 -10
  142. data/lib/shopify-cli/commands/create.rb +5 -5
  143. data/lib/shopify-cli/commands/help.rb +6 -6
  144. data/lib/shopify-cli/commands/logout.rb +3 -3
  145. data/lib/shopify-cli/commands/system.rb +32 -32
  146. data/lib/shopify-cli/commands/version.rb +2 -2
  147. data/lib/shopify-cli/context.rb +51 -23
  148. data/lib/shopify-cli/core.rb +4 -4
  149. data/lib/shopify-cli/core/entry_point.rb +5 -5
  150. data/lib/shopify-cli/core/executor.rb +1 -1
  151. data/lib/shopify-cli/core/help_resolver.rb +2 -2
  152. data/lib/shopify-cli/core/monorail.rb +16 -16
  153. data/lib/shopify-cli/db.rb +2 -2
  154. data/lib/shopify-cli/feature.rb +1 -1
  155. data/lib/shopify-cli/form.rb +1 -1
  156. data/lib/shopify-cli/git.rb +17 -17
  157. data/lib/shopify-cli/helpers.rb +1 -1
  158. data/lib/shopify-cli/helpers/haikunator.rb +1 -1
  159. data/lib/shopify-cli/heroku.rb +28 -28
  160. data/lib/shopify-cli/http_request.rb +2 -2
  161. data/lib/shopify-cli/js_deps.rb +12 -12
  162. data/lib/shopify-cli/js_system.rb +7 -7
  163. data/lib/shopify-cli/lazy_delegator.rb +55 -0
  164. data/lib/shopify-cli/messages/messages.rb +7 -16
  165. data/lib/shopify-cli/method_object.rb +1 -1
  166. data/lib/shopify-cli/oauth.rb +27 -27
  167. data/lib/shopify-cli/oauth/servlet.rb +9 -9
  168. data/lib/shopify-cli/options.rb +3 -3
  169. data/lib/shopify-cli/packager.rb +25 -25
  170. data/lib/shopify-cli/partners_api.rb +16 -16
  171. data/lib/shopify-cli/partners_api/organizations.rb +10 -10
  172. data/lib/shopify-cli/process_supervision.rb +7 -7
  173. data/lib/shopify-cli/project.rb +16 -16
  174. data/lib/shopify-cli/project_type.rb +3 -3
  175. data/lib/shopify-cli/resolve_constant.rb +1 -1
  176. data/lib/shopify-cli/resources.rb +1 -1
  177. data/lib/shopify-cli/resources/env_file.rb +10 -10
  178. data/lib/shopify-cli/result.rb +11 -11
  179. data/lib/shopify-cli/shopifolk.rb +6 -9
  180. data/lib/shopify-cli/sub_command.rb +1 -1
  181. data/lib/shopify-cli/task.rb +3 -3
  182. data/lib/shopify-cli/tasks.rb +7 -7
  183. data/lib/shopify-cli/tasks/create_api_client.rb +5 -5
  184. data/lib/shopify-cli/tasks/ensure_dev_store.rb +12 -12
  185. data/lib/shopify-cli/tasks/ensure_env.rb +15 -15
  186. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
  187. data/lib/shopify-cli/tasks/select_org_and_shop.rb +19 -19
  188. data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
  189. data/lib/shopify-cli/transform_data_structure.rb +86 -0
  190. data/lib/shopify-cli/tunnel.rb +30 -30
  191. data/lib/shopify-cli/version.rb +1 -1
  192. data/lib/shopify_cli.rb +56 -54
  193. data/shopify-cli.gemspec +6 -6
  194. data/vendor/deps/smart_properties/REVISION +1 -1
  195. data/vendor/deps/smart_properties/lib/smart_properties/property.rb +7 -1
  196. data/vendor/deps/smart_properties/lib/smart_properties/version.rb +1 -1
  197. data/vendor/gen/template/bin/update-deps +9 -9
  198. metadata +15 -11
  199. data/lib/project_types/extension/forms/register.rb +0 -47
  200. data/lib/project_types/script/commands/disable.rb +0 -25
  201. data/lib/project_types/script/commands/enable.rb +0 -78
  202. data/lib/project_types/script/graphql/shop_script_delete.graphql +0 -14
  203. data/lib/project_types/script/graphql/shop_script_update_or_create.graphql +0 -28
  204. data/lib/project_types/script/layers/application/disable_script.rb +0 -21
  205. data/lib/project_types/script/layers/application/enable_script.rb +0 -23
  206. data/lib/project_types/script/script_project.rb +0 -63
@@ -1,27 +1,27 @@
1
- require 'uri'
1
+ require "uri"
2
2
 
3
3
  module Rails
4
4
  module Forms
5
5
  class Create < ShopifyCli::Form
6
6
  attr_accessor :name
7
7
  flag_arguments :title, :organization_id, :shop_domain, :type, :db
8
- VALID_DB_TYPES = ['sqlite3',
9
- 'mysql',
10
- 'postgresql',
11
- 'sqlite3',
12
- 'oracle',
13
- 'frontbase',
14
- 'ibm_db',
15
- 'sqlserver',
16
- 'jdbcmysql',
17
- 'jdbcsqlite3',
18
- 'jdbcpostgresql',
19
- 'jdbc']
8
+ VALID_DB_TYPES = ["sqlite3",
9
+ "mysql",
10
+ "postgresql",
11
+ "sqlite3",
12
+ "oracle",
13
+ "frontbase",
14
+ "ibm_db",
15
+ "sqlserver",
16
+ "jdbcmysql",
17
+ "jdbcsqlite3",
18
+ "jdbcpostgresql",
19
+ "jdbc"]
20
20
 
21
21
  def ask
22
- self.title ||= CLI::UI::Prompt.ask(ctx.message('rails.forms.create.app_name'))
22
+ self.title ||= CLI::UI::Prompt.ask(ctx.message("rails.forms.create.app_name"))
23
+ self.name = format_name
23
24
  self.type = ask_type
24
- self.name = self.title.downcase.split(" ").join("_")
25
25
  res = ShopifyCli::Tasks::SelectOrgAndShop.call(ctx, organization_id: organization_id, shop_domain: shop_domain)
26
26
  self.organization_id = res[:organization_id]
27
27
  self.shop_domain = res[:shop_domain]
@@ -30,26 +30,36 @@ module Rails
30
30
 
31
31
  private
32
32
 
33
+ def format_name
34
+ name = title.downcase.split(" ").join("_")
35
+
36
+ if name.include?("shopify")
37
+ ctx.abort(ctx.message("rails.forms.create.error.invalid_app_name"))
38
+ end
39
+
40
+ name
41
+ end
42
+
33
43
  def ask_type
34
44
  if type.nil?
35
- return CLI::UI::Prompt.ask(ctx.message('rails.forms.create.app_type.select')) do |handler|
36
- handler.option(ctx.message('rails.forms.create.app_type.select_public')) { 'public' }
37
- handler.option(ctx.message('rails.forms.create.app_type.select_custom')) { 'custom' }
45
+ return CLI::UI::Prompt.ask(ctx.message("rails.forms.create.app_type.select")) do |handler|
46
+ handler.option(ctx.message("rails.forms.create.app_type.select_public")) { "public" }
47
+ handler.option(ctx.message("rails.forms.create.app_type.select_custom")) { "custom" }
38
48
  end
39
49
  end
40
50
 
41
51
  unless ShopifyCli::Tasks::CreateApiClient::VALID_APP_TYPES.include?(type)
42
- ctx.abort(ctx.message('rails.forms.create.error.invalid_app_type', type))
52
+ ctx.abort(ctx.message("rails.forms.create.error.invalid_app_type", type))
43
53
  end
44
- ctx.puts(ctx.message('rails.forms.create.app_type.selected', type))
54
+ ctx.puts(ctx.message("rails.forms.create.app_type.selected", type))
45
55
  type
46
56
  end
47
57
 
48
58
  def ask_db
49
59
  if db.nil?
50
- return 'sqlite3' unless CLI::UI::Prompt.confirm(ctx.message('rails.forms.create.db.want_select'),
60
+ return "sqlite3" unless CLI::UI::Prompt.confirm(ctx.message("rails.forms.create.db.want_select"),
51
61
  default: false)
52
- @db = CLI::UI::Prompt.ask(ctx.message('rails.forms.create.db.select')) do |handler|
62
+ @db = CLI::UI::Prompt.ask(ctx.message("rails.forms.create.db.select")) do |handler|
53
63
  VALID_DB_TYPES.each do |db_type|
54
64
  handler.option(ctx.message("rails.forms.create.db.select_#{db_type}")) { db_type }
55
65
  end
@@ -57,9 +67,9 @@ module Rails
57
67
  end
58
68
 
59
69
  unless VALID_DB_TYPES.include?(db)
60
- ctx.abort(ctx.message('rails.forms.create.error.invalid_db_type', db))
70
+ ctx.abort(ctx.message("rails.forms.create.error.invalid_db_type", db))
61
71
  end
62
- ctx.puts(ctx.message('rails.forms.create.db.selected', db))
72
+ ctx.puts(ctx.message("rails.forms.create.db.selected", db))
63
73
  db
64
74
  end
65
75
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
2
+ require "shopify_cli"
3
3
 
4
4
  module Rails
5
5
  class Gem
@@ -14,52 +14,52 @@ module Rails
14
14
  name = args.shift
15
15
  version = args.shift
16
16
  gem = new(ctx: ctx, name: name, version: version)
17
- ctx.debug(ctx.message('rails.gem.installed_debug', name, gem.installed?))
17
+ ctx.debug(ctx.message("rails.gem.installed_debug", name, gem.installed?))
18
18
  gem.installed? ? true : gem.install!
19
19
  end
20
20
 
21
21
  def binary_path_for(ctx, binary)
22
- path_to_binary = File.join(gem_home(ctx), 'bin', binary)
22
+ path_to_binary = File.join(gem_home(ctx), "bin", binary)
23
23
  File.exist?(path_to_binary) ? path_to_binary : binary
24
24
  end
25
25
 
26
26
  def gem_home(ctx)
27
- ctx.getenv('GEM_HOME') || apply_gem_home(ctx)
27
+ ctx.getenv("GEM_HOME") || apply_gem_home(ctx)
28
28
  end
29
29
 
30
30
  def gem_path(ctx)
31
- ctx.getenv('GEM_PATH') || apply_gem_path(ctx)
31
+ ctx.getenv("GEM_PATH") || apply_gem_path(ctx)
32
32
  end
33
33
 
34
34
  private
35
35
 
36
36
  def apply_gem_home(ctx)
37
- path = ''
37
+ path = ""
38
38
  # extract GEM_HOME from `gem environment home` command
39
- out, stat = ctx.capture2e('gem', 'environment', 'home')
40
- path = out&.empty? ? '' : out.strip if stat.success?
39
+ out, stat = ctx.capture2e("gem", "environment", "home")
40
+ path = out&.empty? ? "" : out.strip if stat.success?
41
41
  # fallback if return from `gem environment home` is empty (somewhat unlikely)
42
42
  path = fallback_gem_home_path(ctx) if path.empty?
43
43
  # fallback if path isn't writable (if using a system installed ruby)
44
44
  path = fallback_gem_home_path(ctx) unless File.writable?(path)
45
45
  ctx.mkdir_p(path) unless Dir.exist?(path)
46
- ctx.debug(ctx.message('rails.gem.setting_gem_home', path))
47
- ctx.setenv('GEM_HOME', path)
46
+ ctx.debug(ctx.message("rails.gem.setting_gem_home", path))
47
+ ctx.setenv("GEM_HOME", path)
48
48
  end
49
49
 
50
50
  def apply_gem_path(ctx)
51
- path = ''
52
- out, stat = ctx.capture2e('gem', 'environment', 'path')
53
- path = out&.empty? ? '' : out.strip if stat.success?
51
+ path = ""
52
+ out, stat = ctx.capture2e("gem", "environment", "path")
53
+ path = out&.empty? ? "" : out.strip if stat.success?
54
54
  # usually GEM_PATH already contains GEM_HOME
55
55
  # if gem_home() falls back to our fallback path, we need to add it
56
56
  path = gem_home(ctx) + File::PATH_SEPARATOR + path unless path.include?(gem_home(ctx))
57
- ctx.debug(ctx.message('rails.gem.setting_gem_path', path))
58
- ctx.setenv('GEM_PATH', path)
57
+ ctx.debug(ctx.message("rails.gem.setting_gem_path", path))
58
+ ctx.setenv("GEM_PATH", path)
59
59
  end
60
60
 
61
61
  def fallback_gem_home_path(ctx)
62
- File.join(ctx.getenv('HOME'), '.gem', 'ruby', RUBY_VERSION)
62
+ File.join(ctx.getenv("HOME"), ".gem", "ruby", RUBY_VERSION)
63
63
  end
64
64
  end
65
65
 
@@ -67,7 +67,7 @@ module Rails
67
67
  found = false
68
68
  paths = self.class.gem_path(ctx).split(File::PATH_SEPARATOR)
69
69
  paths.each do |path|
70
- ctx.debug(ctx.message('rails.gem.checking_installation_path', "#{path}/gems/", name))
70
+ ctx.debug(ctx.message("rails.gem.checking_installation_path", "#{path}/gems/", name))
71
71
  found = !!Dir.glob("#{path}/gems/#{name}-*").detect do |f|
72
72
  gem_satisfies_version?(f)
73
73
  end
@@ -78,18 +78,18 @@ module Rails
78
78
 
79
79
  def install!
80
80
  spin = CLI::UI::SpinGroup.new
81
- spin.add(ctx.message('rails.gem.installing', name)) do |spinner|
81
+ spin.add(ctx.message("rails.gem.installing", name)) do |spinner|
82
82
  args = %w(gem install)
83
83
  args.push(name)
84
84
  unless version.nil?
85
- if ctx.windows? && version.include?('~')
86
- args.push('-v', "\"#{version}\"")
85
+ if ctx.windows? && version.include?("~")
86
+ args.push("-v", "\"#{version}\"")
87
87
  else
88
- args.push('-v', version)
88
+ args.push("-v", version)
89
89
  end
90
90
  end
91
91
  ctx.system(*args)
92
- spinner.update_title(ctx.message('rails.gem.installed', name))
92
+ spinner.update_title(ctx.message("rails.gem.installed", name))
93
93
  end
94
94
  spin.wait
95
95
  end
@@ -98,7 +98,7 @@ module Rails
98
98
  if version
99
99
  # there was a specific version given during new(), so
100
100
  # check version of gem found to determine match
101
- require 'semantic/semantic'
101
+ require "semantic/semantic"
102
102
  found_version, _ = path.match(%r{/#{Regexp.quote(name)}-(\d\.\d\.\d)})&.captures
103
103
  found_version.nil? ? false : Semantic::Version.new(found_version).satisfies?(version)
104
104
  else
@@ -30,11 +30,11 @@ module Rails
30
30
  Usage: {{command:%s create rails}}
31
31
  Options:
32
32
  {{command:--name=NAME}} App name. Any string.
33
- {{command:--app_url=APPURL}} App URL. Must be a valid URL.
34
- {{command:--organization_id=ID}} Partner organization ID. Must be an existing organization.
35
- {{command:--shop_domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
33
+ {{command:--app-url=APPURL}} App URL. Must be a valid URL.
34
+ {{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
35
+ {{command:--shop-domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
36
36
  {{command:--db=DB}} Database type. Must be one of: mysql, postgresql, sqlite3, oracle, frontbase, ibm_db, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc.
37
- {{command:--rails_opts=RAILSOPTS}} Additional options. Must be string containing one or more valid Rails options, separated by spaces.
37
+ {{command:--rails-opts=RAILSOPTS}} Additional options. Must be string containing one or more valid Rails options, separated by spaces.
38
38
  HELP
39
39
 
40
40
  error: {
@@ -89,7 +89,7 @@ module Rails
89
89
  downloaded: "Downloaded Heroku CLI",
90
90
  installing: "Installing Heroku CLI...",
91
91
  installed: "Installed Heroku CLI",
92
- authenticated_with_account: "{{v}} Authenticated with Heroku as `%s`",
92
+ authenticated_with_account: "{{v}} Authenticated with Heroku as {{green:%s}}",
93
93
  authenticating: "Authenticating with Heroku...",
94
94
  authenticated: "{{v}} Authenticated with Heroku",
95
95
  deploying: "Deploying to Heroku...",
@@ -109,14 +109,14 @@ module Rails
109
109
  checking: "Checking git repo...",
110
110
  initialized: "Git repo initialized",
111
111
  what_branch: "What branch would you like to deploy?",
112
- branch_selected: "{{v}} Git branch `%s` selected for deploy",
112
+ branch_selected: "{{v}} Git branch {{green:%s}} selected for deploy",
113
113
  },
114
114
  app: {
115
115
  no_apps_found: "No existing Heroku app found. What would you like to do?",
116
116
  name: "What is your Heroku app’s name?",
117
117
  select: "Specify an existing Heroku app",
118
- selecting: "Selecting Heroku app `%s`...",
119
- selected: "{{v}} Heroku app `%s` selected",
118
+ selecting: "Selecting Heroku app %s...",
119
+ selected: "{{v}} Heroku app {{green:%s}} selected",
120
120
  create: "Create a new Heroku app",
121
121
  creating: "Creating new Heroku app...",
122
122
  created: "{{v}} New Heroku app created",
@@ -257,6 +257,7 @@ module Rails
257
257
  forms: {
258
258
  create: {
259
259
  error: {
260
+ invalid_app_name: "App name cannot contain 'Shopify'",
260
261
  invalid_app_type: "Invalid app type %s",
261
262
  invalid_db_type: "Invalid database type %s",
262
263
  },
@@ -8,8 +8,8 @@ module Rails
8
8
 
9
9
  class << self
10
10
  def version(ctx)
11
- require 'semantic/semantic'
12
- out, _ = ctx.capture2('ruby', '-v')
11
+ require "semantic/semantic"
12
+ out, _ = ctx.capture2("ruby", "-v")
13
13
  Semantic::Version.new(VERSION_STRING.match(out)[1])
14
14
  end
15
15
  end
@@ -3,77 +3,73 @@
3
3
  module Script
4
4
  class Project < ShopifyCli::ProjectType
5
5
  hidden_feature(feature_set: :script_project)
6
- title('Script')
7
- creator('Script::Commands::Create')
6
+ title("Script")
7
+ creator("Script::Commands::Create")
8
8
 
9
- register_command('Script::Commands::Push', 'push')
10
- register_command('Script::Commands::Disable', 'disable')
11
- register_command('Script::Commands::Enable', 'enable')
9
+ register_command("Script::Commands::Push", "push")
12
10
 
13
- require Project.project_filepath('messages/messages')
11
+ require Project.project_filepath("messages/messages")
14
12
  register_messages(Script::Messages::MESSAGES)
15
13
  end
16
14
 
17
15
  # define/autoload project specific Commands
18
16
  module Commands
19
- autoload :Create, Project.project_filepath('commands/create')
20
- autoload :Push, Project.project_filepath('commands/push')
21
- autoload :Disable, Project.project_filepath('commands/disable')
22
- autoload :Enable, Project.project_filepath('commands/enable')
17
+ autoload :Create, Project.project_filepath("commands/create")
18
+ autoload :Push, Project.project_filepath("commands/push")
23
19
  end
24
20
 
25
21
  # define/autoload project specific Forms
26
22
  module Forms
27
- autoload :Create, Project.project_filepath('forms/create')
28
- autoload :ScriptForm, Project.project_filepath('forms/script_form')
23
+ autoload :Create, Project.project_filepath("forms/create")
24
+ autoload :ScriptForm, Project.project_filepath("forms/script_form")
29
25
  end
30
26
 
31
27
  module Layers
32
28
  module Application
33
- autoload :BuildScript, Project.project_filepath('layers/application/build_script')
34
- autoload :CreateScript, Project.project_filepath('layers/application/create_script')
35
- autoload :PushScript, Project.project_filepath('layers/application/push_script')
36
- autoload :DisableScript, Project.project_filepath('layers/application/disable_script')
37
- autoload :EnableScript, Project.project_filepath('layers/application/enable_script')
38
- autoload :ExtensionPoints, Project.project_filepath('layers/application/extension_points')
39
- autoload :ProjectDependencies, Project.project_filepath('layers/application/project_dependencies')
29
+ autoload :BuildScript, Project.project_filepath("layers/application/build_script")
30
+ autoload :CreateScript, Project.project_filepath("layers/application/create_script")
31
+ autoload :PushScript, Project.project_filepath("layers/application/push_script")
32
+ autoload :ExtensionPoints, Project.project_filepath("layers/application/extension_points")
33
+ autoload :ProjectDependencies, Project.project_filepath("layers/application/project_dependencies")
40
34
  end
41
35
 
42
36
  module Domain
43
- autoload :Errors, Project.project_filepath('layers/domain/errors')
44
- autoload :PushPackage, Project.project_filepath('layers/domain/push_package')
45
- autoload :Metadata, Project.project_filepath('layers/domain/metadata')
46
- autoload :ExtensionPoint, Project.project_filepath('layers/domain/extension_point')
37
+ autoload :Errors, Project.project_filepath("layers/domain/errors")
38
+ autoload :ConfigUi, Project.project_filepath("layers/domain/config_ui")
39
+ autoload :PushPackage, Project.project_filepath("layers/domain/push_package")
40
+ autoload :Metadata, Project.project_filepath("layers/domain/metadata")
41
+ autoload :ExtensionPoint, Project.project_filepath("layers/domain/extension_point")
42
+ autoload :ScriptProject, Project.project_filepath("layers/domain/script_project")
47
43
  end
48
44
 
49
45
  module Infrastructure
50
- autoload :Errors, Project.project_filepath('layers/infrastructure/errors')
46
+ autoload :Errors, Project.project_filepath("layers/infrastructure/errors")
51
47
  autoload :AssemblyScriptDependencyManager,
52
- Project.project_filepath('layers/infrastructure/assemblyscript_dependency_manager')
48
+ Project.project_filepath("layers/infrastructure/assemblyscript_dependency_manager")
53
49
  autoload :AssemblyScriptProjectCreator,
54
- Project.project_filepath('layers/infrastructure/assemblyscript_project_creator')
55
- autoload :AssemblyScriptTaskRunner, Project.project_filepath('layers/infrastructure/assemblyscript_task_runner')
56
- autoload :AssemblyScriptTsConfig, Project.project_filepath('layers/infrastructure/assemblyscript_tsconfig')
50
+ Project.project_filepath("layers/infrastructure/assemblyscript_project_creator")
51
+ autoload :AssemblyScriptTaskRunner, Project.project_filepath("layers/infrastructure/assemblyscript_task_runner")
52
+ autoload :AssemblyScriptTsConfig, Project.project_filepath("layers/infrastructure/assemblyscript_tsconfig")
57
53
  autoload :RustProjectCreator,
58
- Project.project_filepath('layers/infrastructure/rust_project_creator.rb')
59
- autoload :RustTaskRunner, Project.project_filepath('layers/infrastructure/rust_task_runner')
54
+ Project.project_filepath("layers/infrastructure/rust_project_creator.rb")
55
+ autoload :RustTaskRunner, Project.project_filepath("layers/infrastructure/rust_task_runner")
60
56
 
61
- autoload :PushPackageRepository, Project.project_filepath('layers/infrastructure/push_package_repository')
62
- autoload :ExtensionPointRepository, Project.project_filepath('layers/infrastructure/extension_point_repository')
63
- autoload :ProjectCreator, Project.project_filepath('layers/infrastructure/project_creator')
64
- autoload :ScriptService, Project.project_filepath('layers/infrastructure/script_service')
65
- autoload :TaskRunner, Project.project_filepath('layers/infrastructure/task_runner')
57
+ autoload :PushPackageRepository, Project.project_filepath("layers/infrastructure/push_package_repository")
58
+ autoload :ExtensionPointRepository, Project.project_filepath("layers/infrastructure/extension_point_repository")
59
+ autoload :ProjectCreator, Project.project_filepath("layers/infrastructure/project_creator")
60
+ autoload :ScriptProjectRepository, Project.project_filepath("layers/infrastructure/script_project_repository")
61
+ autoload :ScriptService, Project.project_filepath("layers/infrastructure/script_service")
62
+ autoload :TaskRunner, Project.project_filepath("layers/infrastructure/task_runner")
66
63
  end
67
64
  end
68
65
 
69
66
  module UI
70
- autoload :ErrorHandler, Project.project_filepath('ui/error_handler')
71
- autoload :PrintingSpinner, Project.project_filepath('ui/printing_spinner')
72
- autoload :StrictSpinner, Project.project_filepath('ui/strict_spinner')
67
+ autoload :ErrorHandler, Project.project_filepath("ui/error_handler")
68
+ autoload :PrintingSpinner, Project.project_filepath("ui/printing_spinner")
69
+ autoload :StrictSpinner, Project.project_filepath("ui/strict_spinner")
73
70
  end
74
71
 
75
- autoload :ScriptProject, Project.project_filepath('script_project')
76
- autoload :Errors, Project.project_filepath('errors')
72
+ autoload :Errors, Project.project_filepath("errors")
77
73
 
78
74
  class ScriptProjectError < StandardError; end
79
75
  end
@@ -4,15 +4,14 @@ module Script
4
4
  module Commands
5
5
  class Create < ShopifyCli::SubCommand
6
6
  options do |parser, flags|
7
- parser.on('--name=NAME') { |name| flags[:name] = name }
8
- parser.on('--description=DESCRIPTION') { |description| flags[:description] = description }
9
- parser.on('--extension_point=EP_NAME') { |ep_name| flags[:extension_point] = ep_name }
10
- parser.on('--language=LANGUAGE') { |language| flags[:language] = language }
7
+ parser.on("--name=NAME") { |name| flags[:name] = name }
8
+ parser.on("--extension_point=EP_NAME") { |ep_name| flags[:extension_point] = ep_name }
9
+ parser.on("--extension-point=EP_NAME") { |ep_name| flags[:extension_point] = ep_name }
10
+ parser.on("--language=LANGUAGE") { |language| flags[:language] = language }
11
+ parser.on("--no-config-ui") { |no_config_ui| flags[:no_config_ui] = no_config_ui }
11
12
  end
12
13
 
13
14
  def call(args, _name)
14
- cur_dir = @ctx.root
15
-
16
15
  form = Forms::Create.ask(@ctx, args, options.flags)
17
16
  return @ctx.puts(self.class.help) if form.nil?
18
17
 
@@ -25,19 +24,16 @@ module Script
25
24
  language: form.language,
26
25
  script_name: form.name,
27
26
  extension_point_type: form.extension_point,
28
- description: form.description
27
+ no_config_ui: options.flags.key?(:no_config_ui)
29
28
  )
30
- @ctx.puts(@ctx.message('script.create.change_directory_notice', project.script_name))
31
- rescue Script::Errors::ScriptProjectAlreadyExistsError => e
32
- UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message('script.create.error.operation_failed'))
29
+ @ctx.puts(@ctx.message("script.create.change_directory_notice", project.script_name))
33
30
  rescue StandardError => e
34
- ScriptProject.cleanup(ctx: @ctx, script_name: form.name, root_dir: cur_dir) if form
35
- UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message('script.create.error.operation_failed'))
31
+ UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.create.error.operation_failed"))
36
32
  end
37
33
 
38
34
  def self.help
39
35
  allowed_values = Script::Layers::Application::ExtensionPoints.types.map { |type| "{{cyan:#{type}}}" }
40
- ShopifyCli::Context.message('script.create.help', ShopifyCli::TOOL_NAME, allowed_values.join(', '))
36
+ ShopifyCli::Context.message("script.create.help", ShopifyCli::TOOL_NAME, allowed_values.join(", "))
41
37
  end
42
38
  end
43
39
  end
@@ -4,23 +4,24 @@ module Script
4
4
  module Commands
5
5
  class Push < ShopifyCli::Command
6
6
  options do |parser, flags|
7
- parser.on('--force') { |t| flags[:force] = t }
7
+ parser.on("--force") { |t| flags[:force] = t }
8
8
  end
9
9
 
10
10
  def call(_args, _name)
11
11
  ShopifyCli::Tasks::EnsureEnv.call(@ctx, required: [:api_key, :secret, :shop])
12
12
 
13
- api_key = ScriptProject.current.api_key
13
+ api_key = Layers::Infrastructure::ScriptProjectRepository.new(ctx: @ctx).get.api_key
14
14
  return @ctx.puts(self.class.help) unless api_key
15
15
 
16
16
  Layers::Application::PushScript.call(ctx: @ctx, force: options.flags.key?(:force))
17
- @ctx.puts(@ctx.message('script.push.script_pushed', api_key: api_key))
17
+ @ctx.puts(@ctx.message("script.push.script_pushed", api_key: api_key))
18
18
  rescue StandardError => e
19
- UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message('script.push.error.operation_failed'))
19
+ msg = @ctx.message("script.push.error.operation_failed", api_key: api_key)
20
+ UI::ErrorHandler.pretty_print_and_raise(e, failed_op: msg)
20
21
  end
21
22
 
22
23
  def self.help
23
- ShopifyCli::Context.message('script.push.help', ShopifyCli::TOOL_NAME)
24
+ ShopifyCli::Context.message("script.push.help", ShopifyCli::TOOL_NAME)
24
25
  end
25
26
  end
26
27
  end