shopify-cli 1.6.0 → 1.9.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 (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