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,10 +1,10 @@
1
- require 'cli/ui'
1
+ require "cli/ui"
2
2
 
3
3
  module Script
4
4
  module UI
5
5
  module ErrorHandler
6
6
  def self.display(failed_op:, cause_of_error:, help_suggestion:)
7
- $stderr.puts(CLI::UI.fmt(ShopifyCli::Context.message('script.error.generic')))
7
+ $stderr.puts(CLI::UI.fmt(ShopifyCli::Context.message("script.error.generic")))
8
8
  full_msg = failed_op ? failed_op.dup : ""
9
9
  full_msg << " #{cause_of_error}" if cause_of_error
10
10
  full_msg << " #{help_suggestion}" if help_suggestion
@@ -26,187 +26,215 @@ module Script
26
26
  case e
27
27
  when Errno::EACCES
28
28
  {
29
- cause_of_error: ShopifyCli::Context.message('script.error.eacces_cause'),
30
- help_suggestion: ShopifyCli::Context.message('script.error.eacces_help'),
29
+ cause_of_error: ShopifyCli::Context.message("script.error.eacces_cause"),
30
+ help_suggestion: ShopifyCli::Context.message("script.error.eacces_help"),
31
31
  }
32
32
  when Errno::ENOSPC
33
33
  {
34
- cause_of_error: ShopifyCli::Context.message('script.error.enospc_cause'),
35
- help_suggestion: ShopifyCli::Context.message('script.error.enospc_help'),
34
+ cause_of_error: ShopifyCli::Context.message("script.error.enospc_cause"),
35
+ help_suggestion: ShopifyCli::Context.message("script.error.enospc_help"),
36
36
  }
37
37
  when ShopifyCli::OAuth::Error
38
38
  {
39
- cause_of_error: ShopifyCli::Context.message('script.error.oauth_cause'),
40
- help_suggestion: ShopifyCli::Context.message('script.error.oauth_help'),
39
+ cause_of_error: ShopifyCli::Context.message("script.error.oauth_cause"),
40
+ help_suggestion: ShopifyCli::Context.message("script.error.oauth_help"),
41
41
  }
42
- when Errors::InvalidContextError
42
+ when Layers::Infrastructure::Errors::InvalidContextError
43
43
  {
44
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_context_cause'),
45
- help_suggestion: ShopifyCli::Context.message('script.error.invalid_context_help'),
44
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_context_cause"),
45
+ help_suggestion: ShopifyCli::Context.message("script.error.invalid_context_help"),
46
46
  }
47
47
  when Errors::InvalidConfigProps
48
48
  {
49
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_config_props_cause'),
50
- help_suggestion: ShopifyCli::Context.message('script.error.invalid_config_props_help'),
49
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_config_props_cause"),
50
+ help_suggestion: ShopifyCli::Context.message("script.error.invalid_config_props_help"),
51
51
  }
52
52
  when Errors::InvalidConfigYAMLError
53
53
  {
54
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_config', e.config_file),
54
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_config", e.config_file),
55
55
  }
56
- when Errors::InvalidLanguageError
56
+ when Layers::Infrastructure::Errors::InvalidLanguageError
57
57
  {
58
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_language_cause', e.language),
58
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_language_cause", e.language),
59
59
  help_suggestion: ShopifyCli::Context.message(
60
- 'script.error.invalid_language_help',
61
- Script::Layers::Application::ExtensionPoints.languages(type: e.extension_point_type).join(', ')
60
+ "script.error.invalid_language_help",
61
+ Script::Layers::Application::ExtensionPoints.languages(type: e.extension_point_type).join(", ")
62
62
  ),
63
63
  }
64
64
  when Errors::InvalidScriptNameError
65
65
  {
66
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_script_name_cause'),
67
- help_suggestion: ShopifyCli::Context.message('script.error.invalid_script_name_help'),
66
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_script_name_cause"),
67
+ help_suggestion: ShopifyCli::Context.message("script.error.invalid_script_name_help"),
68
68
  }
69
69
  when Errors::NoExistingAppsError
70
70
  {
71
- cause_of_error: ShopifyCli::Context.message('script.error.no_existing_apps_cause'),
72
- help_suggestion: ShopifyCli::Context.message('script.error.no_existing_apps_help'),
71
+ cause_of_error: ShopifyCli::Context.message("script.error.no_existing_apps_cause"),
72
+ help_suggestion: ShopifyCli::Context.message("script.error.no_existing_apps_help"),
73
73
  }
74
74
  when Errors::NoExistingOrganizationsError
75
75
  {
76
- cause_of_error: ShopifyCli::Context.message('script.error.no_existing_orgs_cause'),
77
- help_suggestion: ShopifyCli::Context.message('script.error.no_existing_orgs_help'),
76
+ cause_of_error: ShopifyCli::Context.message("script.error.no_existing_orgs_cause"),
77
+ help_suggestion: ShopifyCli::Context.message("script.error.no_existing_orgs_help"),
78
78
  }
79
79
  when Errors::NoExistingStoresError
80
80
  {
81
- cause_of_error: ShopifyCli::Context.message('script.error.no_existing_stores_cause'),
81
+ cause_of_error: ShopifyCli::Context.message("script.error.no_existing_stores_cause"),
82
82
  help_suggestion: ShopifyCli::Context.message(
83
- 'script.error.no_existing_stores_help',
83
+ "script.error.no_existing_stores_help",
84
84
  organization_id: e.organization_id
85
85
  ),
86
86
  }
87
- when Errors::ScriptProjectAlreadyExistsError
87
+ when Layers::Infrastructure::Errors::ScriptProjectAlreadyExistsError
88
88
  {
89
- cause_of_error: ShopifyCli::Context.message('script.error.project_exists_cause'),
90
- help_suggestion: ShopifyCli::Context.message('script.error.project_exists_help'),
89
+ cause_of_error: ShopifyCli::Context.message("script.error.project_exists_cause"),
90
+ help_suggestion: ShopifyCli::Context.message("script.error.project_exists_help"),
91
91
  }
92
- when Errors::DeprecatedEPError
92
+ when Layers::Infrastructure::Errors::DeprecatedEPError
93
93
  {
94
- cause_of_error: ShopifyCli::Context.message('script.error.deprecated_ep', e.ep),
95
- help_suggestion: ShopifyCli::Context.message('script.error.deprecated_ep_cause'),
94
+ cause_of_error: ShopifyCli::Context.message("script.error.deprecated_ep", e.ep),
95
+ help_suggestion: ShopifyCli::Context.message("script.error.deprecated_ep_cause"),
96
96
  }
97
97
  when Layers::Domain::Errors::InvalidExtensionPointError
98
98
  {
99
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_extension_cause', e.type),
99
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_extension_cause", e.type),
100
100
  help_suggestion: ShopifyCli::Context.message(
101
- 'script.error.invalid_extension_help',
102
- Script::Layers::Application::ExtensionPoints.types.join(', ')
101
+ "script.error.invalid_extension_help",
102
+ Script::Layers::Application::ExtensionPoints.types.join(", ")
103
103
  ),
104
104
  }
105
105
  when Layers::Domain::Errors::ScriptNotFoundError
106
106
  {
107
107
  cause_of_error: ShopifyCli::Context.message(
108
- 'script.error.script_not_found_cause',
108
+ "script.error.script_not_found_cause",
109
109
  e.script_name,
110
110
  e.extension_point_type
111
111
  ),
112
112
  }
113
113
  when Layers::Domain::Errors::ServiceFailureError
114
114
  {
115
- cause_of_error: ShopifyCli::Context.message('script.error.service_failure_cause'),
116
- help_suggestion: ShopifyCli::Context.message('script.error.service_failure_help'),
115
+ cause_of_error: ShopifyCli::Context.message("script.error.service_failure_cause"),
116
+ help_suggestion: ShopifyCli::Context.message("script.error.service_failure_help"),
117
117
  }
118
118
  when Layers::Domain::Errors::MetadataValidationError
119
119
  {
120
- cause_of_error: ShopifyCli::Context.message('script.error.metadata_validation_cause'),
121
- help_suggestion: ShopifyCli::Context.message('script.error.metadata_validation_help'),
120
+ cause_of_error: ShopifyCli::Context.message("script.error.metadata_validation_cause"),
121
+ help_suggestion: ShopifyCli::Context.message("script.error.metadata_validation_help"),
122
122
  }
123
123
  when Layers::Domain::Errors::MetadataNotFoundError
124
124
  {
125
- cause_of_error: ShopifyCli::Context.message('script.error.metadata_not_found_cause'),
126
- help_suggestion: ShopifyCli::Context.message('script.error.metadata_not_found_help'),
125
+ cause_of_error: ShopifyCli::Context.message("script.error.metadata_not_found_cause"),
126
+ help_suggestion: ShopifyCli::Context.message("script.error.metadata_not_found_help"),
127
127
  }
128
- when Layers::Infrastructure::Errors::AppNotInstalledError
128
+ when Layers::Domain::Errors::InvalidConfigUiDefinitionError
129
129
  {
130
- cause_of_error: ShopifyCli::Context.message('script.error.app_not_installed_cause'),
130
+ cause_of_error: ShopifyCli::Context
131
+ .message("script.error.invalid_config_ui_definition_cause", e.filename),
132
+ help_suggestion: ShopifyCli::Context.message("script.error.invalid_config_ui_definition_help"),
131
133
  }
132
- when Layers::Infrastructure::Errors::AppScriptNotPushedError,
133
- Layers::Infrastructure::Errors::AppScriptUndefinedError
134
+ when Layers::Domain::Errors::MissingSpecifiedConfigUiDefinitionError
134
135
  {
135
- cause_of_error: ShopifyCli::Context.message('script.error.app_script_not_pushed_help'),
136
+ cause_of_error: ShopifyCli::Context
137
+ .message("script.error.missing_config_ui_definition_cause", e.filename),
138
+ help_suggestion: ShopifyCli::Context.message("script.error.missing_config_ui_definition_help"),
136
139
  }
137
- when Layers::Infrastructure::Errors::BuildError
140
+ when Layers::Infrastructure::Errors::AppNotInstalledError
138
141
  {
139
- cause_of_error: ShopifyCli::Context.message('script.error.build_error_cause'),
140
- help_suggestion: ShopifyCli::Context.message('script.error.build_error_help'),
142
+ cause_of_error: ShopifyCli::Context.message("script.error.app_not_installed_cause"),
141
143
  }
142
- when Layers::Infrastructure::Errors::DependencyInstallError
144
+ when Layers::Infrastructure::Errors::BuildError
143
145
  {
144
- cause_of_error: ShopifyCli::Context.message('script.error.dependency_install_cause'),
145
- help_suggestion: ShopifyCli::Context.message('script.error.dependency_install_help'),
146
+ cause_of_error: ShopifyCli::Context.message("script.error.build_error_cause"),
147
+ help_suggestion: ShopifyCli::Context.message("script.error.build_error_help"),
146
148
  }
147
- when Layers::Infrastructure::Errors::EmptyResponseError
149
+ when Layers::Infrastructure::Errors::ConfigUiSyntaxError
148
150
  {
149
- cause_of_error: ShopifyCli::Context.message('script.error.failed_api_request_cause'),
150
- help_suggestion: ShopifyCli::Context.message('script.error.failed_api_request_help'),
151
+ cause_of_error: ShopifyCli::Context.message(
152
+ "script.error.config_ui_syntax_error_cause",
153
+ filename: e.message
154
+ ),
155
+ help_suggestion: ShopifyCli::Context.message("script.error.config_ui_syntax_error_help"),
151
156
  }
152
- when Layers::Infrastructure::Errors::ForbiddenError
157
+ when Layers::Infrastructure::Errors::ConfigUiMissingKeysError
153
158
  {
154
- cause_of_error: ShopifyCli::Context.message('script.error.forbidden_error_cause'),
159
+ cause_of_error: ShopifyCli::Context.message(
160
+ "script.error.config_ui_missing_keys_error_cause",
161
+ filename: e.filename,
162
+ missing_keys: e.missing_keys
163
+ ),
164
+ help_suggestion: ShopifyCli::Context.message("script.error.config_ui_missing_keys_error_help"),
155
165
  }
156
- when Layers::Infrastructure::Errors::GraphqlError
166
+ when Layers::Infrastructure::Errors::ConfigUiInvalidInputModeError
157
167
  {
158
- cause_of_error: ShopifyCli::Context.message('script.error.graphql_error_cause', e.errors.join(', ')),
159
- help_suggestion: ShopifyCli::Context.message('script.error.graphql_error_help'),
168
+ cause_of_error: ShopifyCli::Context.message(
169
+ "script.error.config_ui_invalid_input_mode_error_cause",
170
+ filename: e.filename,
171
+ valid_input_modes: e.valid_input_modes
172
+ ),
173
+ help_suggestion: ShopifyCli::Context.message("script.error.config_ui_invalid_input_mode_error_help"),
160
174
  }
161
- when Layers::Infrastructure::Errors::ScriptRepushError
175
+ when Layers::Infrastructure::Errors::ConfigUiFieldsMissingKeysError
162
176
  {
163
- cause_of_error: ShopifyCli::Context.message('script.error.script_repush_cause', e.api_key),
164
- help_suggestion: ShopifyCli::Context.message('script.error.script_repush_help'),
177
+ cause_of_error: ShopifyCli::Context.message(
178
+ "script.error.config_ui_fields_missing_keys_error_cause",
179
+ filename: e.filename,
180
+ missing_keys: e.missing_keys
181
+ ),
182
+ help_suggestion: ShopifyCli::Context.message("script.error.config_ui_fields_missing_keys_error_help"),
165
183
  }
166
- when Layers::Infrastructure::Errors::ScriptServiceUserError
184
+ when Layers::Infrastructure::Errors::ConfigUiFieldsInvalidTypeError
167
185
  {
168
- cause_of_error: ShopifyCli::Context.message('script.error.user_error_cause'),
169
- help_suggestion: ShopifyCli::Context.message('script.error.user_error_help'),
186
+ cause_of_error: ShopifyCli::Context.message(
187
+ "script.error.config_ui_fields_invalid_type_error_cause",
188
+ filename: e.filename,
189
+ valid_types: e.valid_types
190
+ ),
191
+ help_suggestion: ShopifyCli::Context.message("script.error.config_ui_fields_invalid_type_error_help"),
170
192
  }
171
- when Layers::Infrastructure::Errors::ShopAuthenticationError
193
+ when Layers::Infrastructure::Errors::DependencyInstallError
172
194
  {
173
- cause_of_error: ShopifyCli::Context.message('script.error.shop_auth_cause'),
174
- help_suggestion: ShopifyCli::Context.message('script.error.shop_auth_help'),
195
+ cause_of_error: ShopifyCli::Context.message("script.error.dependency_install_cause"),
196
+ help_suggestion: ShopifyCli::Context.message("script.error.dependency_install_help"),
175
197
  }
176
- when Layers::Infrastructure::Errors::ShopScriptConflictError
198
+ when Layers::Infrastructure::Errors::EmptyResponseError
177
199
  {
178
- cause_of_error: ShopifyCli::Context.message('script.error.shop_script_conflict_cause'),
179
- help_suggestion: ShopifyCli::Context.message('script.error.shop_script_conflict_help'),
200
+ cause_of_error: ShopifyCli::Context.message("script.error.failed_api_request_cause"),
201
+ help_suggestion: ShopifyCli::Context.message("script.error.failed_api_request_help"),
180
202
  }
181
- when Layers::Infrastructure::Errors::ShopScriptUndefinedError
203
+ when Layers::Infrastructure::Errors::ForbiddenError
182
204
  {
183
- cause_of_error: ShopifyCli::Context.message('script.error.shop_script_undefined_cause'),
205
+ cause_of_error: ShopifyCli::Context.message("script.error.forbidden_error_cause"),
184
206
  }
185
- when Layers::Infrastructure::Errors::PackagesOutdatedError
207
+ when Layers::Infrastructure::Errors::GraphqlError
186
208
  {
187
209
  cause_of_error: ShopifyCli::Context.message(
188
- 'script.error.packages_outdated_cause',
189
- e.outdated_packages.join(', ')
190
- ),
191
- help_suggestion: ShopifyCli::Context.message(
192
- 'script.error.packages_outdated_help',
193
- e.outdated_packages.collect { |package| "#{package}@latest" }.join(' ')
210
+ "script.error.graphql_error_cause", JSON.pretty_generate(e.errors)
194
211
  ),
212
+ help_suggestion: ShopifyCli::Context.message("script.error.graphql_error_help"),
213
+ }
214
+ when Layers::Infrastructure::Errors::ScriptRepushError
215
+ {
216
+ cause_of_error: ShopifyCli::Context.message("script.error.script_repush_cause", e.api_key),
217
+ help_suggestion: ShopifyCli::Context.message("script.error.script_repush_help"),
218
+ }
219
+ when Layers::Infrastructure::Errors::ShopAuthenticationError
220
+ {
221
+ cause_of_error: ShopifyCli::Context.message("script.error.shop_auth_cause"),
222
+ help_suggestion: ShopifyCli::Context.message("script.error.shop_auth_help"),
195
223
  }
196
224
  when Layers::Infrastructure::Errors::BuildScriptNotFoundError
197
225
  {
198
- cause_of_error: ShopifyCli::Context.message('script.error.build_script_not_found'),
199
- help_suggestion: ShopifyCli::Context.message('script.error.build_script_suggestion'),
226
+ cause_of_error: ShopifyCli::Context.message("script.error.build_script_not_found"),
227
+ help_suggestion: ShopifyCli::Context.message("script.error.build_script_suggestion"),
200
228
  }
201
229
  when Layers::Infrastructure::Errors::InvalidBuildScriptError
202
230
  {
203
- cause_of_error: ShopifyCli::Context.message('script.error.invalid_build_script'),
204
- help_suggestion: ShopifyCli::Context.message('script.error.build_script_suggestion'),
231
+ cause_of_error: ShopifyCli::Context.message("script.error.invalid_build_script"),
232
+ help_suggestion: ShopifyCli::Context.message("script.error.build_script_suggestion"),
205
233
  }
206
234
  when Layers::Infrastructure::Errors::WebAssemblyBinaryNotFoundError
207
235
  {
208
- cause_of_error: ShopifyCli::Context.message('script.error.web_assembly_binary_not_found'),
209
- help_suggestion: ShopifyCli::Context.message('script.error.web_assembly_binary_not_found_suggestion'),
236
+ cause_of_error: ShopifyCli::Context.message("script.error.web_assembly_binary_not_found"),
237
+ help_suggestion: ShopifyCli::Context.message("script.error.web_assembly_binary_not_found_suggestion"),
210
238
  }
211
239
  end
212
240
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
2
+ require "shopify_cli"
3
3
 
4
4
  module Script
5
5
  module UI
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'shopify_cli'
3
+ require "shopify_cli"
4
4
 
5
5
  module Script
6
6
  module UI
@@ -3,38 +3,38 @@ module Theme
3
3
  class Project < ShopifyCli::ProjectType
4
4
  hidden_feature
5
5
 
6
- title('Theme')
7
- creator('Theme::Commands::Create')
8
- connector('Theme::Commands::Connect')
6
+ title("Theme")
7
+ creator("Theme::Commands::Create")
8
+ connector("Theme::Commands::Connect")
9
9
 
10
- register_command('Theme::Commands::Deploy', 'deploy')
11
- register_command('Theme::Commands::Generate', 'generate')
12
- register_command('Theme::Commands::Push', 'push')
13
- register_command('Theme::Commands::Serve', 'serve')
10
+ register_command("Theme::Commands::Deploy", "deploy")
11
+ register_command("Theme::Commands::Generate", "generate")
12
+ register_command("Theme::Commands::Push", "push")
13
+ register_command("Theme::Commands::Serve", "serve")
14
14
 
15
- register_task('Theme::Tasks::EnsureThemekitInstalled', :ensure_themekit_installed)
15
+ register_task("Theme::Tasks::EnsureThemekitInstalled", :ensure_themekit_installed)
16
16
 
17
- require Project.project_filepath('messages/messages')
17
+ require Project.project_filepath("messages/messages")
18
18
  register_messages(Theme::Messages::MESSAGES)
19
19
  end
20
20
 
21
21
  module Commands
22
- autoload :Connect, Project.project_filepath('commands/connect')
23
- autoload :Create, Project.project_filepath('commands/create')
24
- autoload :Deploy, Project.project_filepath('commands/deploy')
25
- autoload :Generate, Project.project_filepath('commands/generate')
26
- autoload :Push, Project.project_filepath('commands/push')
27
- autoload :Serve, Project.project_filepath('commands/serve')
22
+ autoload :Connect, Project.project_filepath("commands/connect")
23
+ autoload :Create, Project.project_filepath("commands/create")
24
+ autoload :Deploy, Project.project_filepath("commands/deploy")
25
+ autoload :Generate, Project.project_filepath("commands/generate")
26
+ autoload :Push, Project.project_filepath("commands/push")
27
+ autoload :Serve, Project.project_filepath("commands/serve")
28
28
  end
29
29
 
30
30
  module Tasks
31
- autoload :EnsureThemekitInstalled, Project.project_filepath('tasks/ensure_themekit_installed')
31
+ autoload :EnsureThemekitInstalled, Project.project_filepath("tasks/ensure_themekit_installed")
32
32
  end
33
33
 
34
34
  module Forms
35
- autoload :Create, Project.project_filepath('forms/create')
36
- autoload :Connect, Project.project_filepath('forms/connect')
35
+ autoload :Create, Project.project_filepath("forms/create")
36
+ autoload :Connect, Project.project_filepath("forms/connect")
37
37
  end
38
38
 
39
- autoload :Themekit, Project.project_filepath('themekit')
39
+ autoload :Themekit, Project.project_filepath("themekit")
40
40
  end
@@ -5,15 +5,15 @@ module Theme
5
5
  prerequisite_task :ensure_themekit_installed
6
6
 
7
7
  options do |parser, flags|
8
- parser.on('--store=STORE') { |url| flags[:store] = url }
9
- parser.on('--password=PASSWORD') { |p| flags[:password] = p }
10
- parser.on('--themeid=THEME_ID') { |id| flags[:themeid] = id }
11
- parser.on('--env=ENV') { |env| flags[:env] = env }
8
+ parser.on("--store=STORE") { |url| flags[:store] = url }
9
+ parser.on("--password=PASSWORD") { |p| flags[:password] = p }
10
+ parser.on("--themeid=THEME_ID") { |id| flags[:themeid] = id }
11
+ parser.on("--env=ENV") { |env| flags[:env] = env }
12
12
  end
13
13
 
14
14
  def call(args, _name)
15
15
  if ShopifyCli::Project.has_current?
16
- @ctx.abort(@ctx.message('theme.connect.inside_project'))
16
+ @ctx.abort(@ctx.message("theme.connect.inside_project"))
17
17
  end
18
18
 
19
19
  form = Forms::Connect.ask(@ctx, args, options.flags)
@@ -21,31 +21,31 @@ module Theme
21
21
 
22
22
  build(form.store, form.password, form.themeid, form.name, form.env)
23
23
  ShopifyCli::Project.write(@ctx,
24
- project_type: 'theme',
24
+ project_type: "theme",
25
25
  organization_id: nil)
26
26
 
27
- @ctx.done(@ctx.message('theme.connect.connected', form.name, form.store, @ctx.root))
27
+ @ctx.done(@ctx.message("theme.connect.connected", form.name, form.store, @ctx.root))
28
28
  end
29
29
 
30
30
  def self.help
31
- ShopifyCli::Context.message('theme.connect.help', ShopifyCli::TOOL_NAME, ShopifyCli::TOOL_NAME)
31
+ ShopifyCli::Context.message("theme.connect.help", ShopifyCli::TOOL_NAME, ShopifyCli::TOOL_NAME)
32
32
  end
33
33
 
34
34
  private
35
35
 
36
36
  def build(store, password, themeid, name, env)
37
37
  if @ctx.dir_exist?(name)
38
- @ctx.abort(@ctx.message('theme.connect.duplicate'))
38
+ @ctx.abort(@ctx.message("theme.connect.duplicate"))
39
39
  end
40
40
 
41
41
  @ctx.mkdir_p(name)
42
42
  @ctx.chdir(name)
43
43
 
44
- CLI::UI::Frame.open(@ctx.message('theme.connect.connect')) do
44
+ CLI::UI::Frame.open(@ctx.message("theme.connect.connect")) do
45
45
  unless Themekit.connect(@ctx, store: store, password: password, themeid: themeid, env: env)
46
- @ctx.chdir('..')
46
+ @ctx.chdir("..")
47
47
  @ctx.rm_rf(name)
48
- @ctx.abort(@ctx.message('theme.connect.failed'))
48
+ @ctx.abort(@ctx.message("theme.connect.failed"))
49
49
  end
50
50
  end
51
51
  end
@@ -5,10 +5,10 @@ module Theme
5
5
  prerequisite_task :ensure_themekit_installed
6
6
 
7
7
  options do |parser, flags|
8
- parser.on('--name=NAME') { |t| flags[:title] = t }
9
- parser.on('--password=PASSWORD') { |p| flags[:password] = p }
10
- parser.on('--store=STORE') { |url| flags[:store] = url }
11
- parser.on('--env=ENV') { |env| flags[:env] = env }
8
+ parser.on("--name=NAME") { |t| flags[:title] = t }
9
+ parser.on("--password=PASSWORD") { |p| flags[:password] = p }
10
+ parser.on("--store=STORE") { |url| flags[:store] = url }
11
+ parser.on("--env=ENV") { |env| flags[:env] = env }
12
12
  end
13
13
 
14
14
  def call(args, _name)
@@ -17,29 +17,29 @@ module Theme
17
17
 
18
18
  build(form.name, form.password, form.store, form.env)
19
19
  ShopifyCli::Project.write(@ctx,
20
- project_type: 'theme',
20
+ project_type: "theme",
21
21
  organization_id: nil) # private apps are different
22
22
 
23
- @ctx.done(@ctx.message('theme.create.info.created', form.name, form.store, @ctx.root))
23
+ @ctx.done(@ctx.message("theme.create.info.created", form.name, form.store, @ctx.root))
24
24
  end
25
25
 
26
26
  def self.help
27
- ShopifyCli::Context.message('theme.create.help', ShopifyCli::TOOL_NAME, ShopifyCli::TOOL_NAME)
27
+ ShopifyCli::Context.message("theme.create.help", ShopifyCli::TOOL_NAME, ShopifyCli::TOOL_NAME)
28
28
  end
29
29
 
30
30
  private
31
31
 
32
32
  def build(name, password, store, env)
33
- @ctx.abort(@ctx.message('theme.create.duplicate_theme')) if @ctx.dir_exist?(name)
33
+ @ctx.abort(@ctx.message("theme.create.duplicate_theme")) if @ctx.dir_exist?(name)
34
34
 
35
35
  @ctx.mkdir_p(name)
36
36
  @ctx.chdir(name)
37
37
 
38
- CLI::UI::Frame.open(@ctx.message('theme.create.creating_theme', name)) do
38
+ CLI::UI::Frame.open(@ctx.message("theme.create.creating_theme", name)) do
39
39
  unless Themekit.create(@ctx, name: name, password: password, store: store, env: env)
40
- @ctx.chdir('..')
40
+ @ctx.chdir("..")
41
41
  @ctx.rm_rf(name)
42
- @ctx.abort(@ctx.message('theme.create.failed'))
42
+ @ctx.abort(@ctx.message("theme.create.failed"))
43
43
  end
44
44
  end
45
45
  end