shopify-cli 2.2.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (249) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/ISSUE_TEMPLATE.md +0 -4
  4. data/.github/workflows/shopify.yml +104 -0
  5. data/.gitignore +2 -0
  6. data/.rubocop.yml +14 -14
  7. data/.rubocop_todo.yml +3 -3
  8. data/CHANGELOG.md +23 -0
  9. data/CONTRIBUTING.md +23 -0
  10. data/Dockerfile +19 -0
  11. data/Gemfile +1 -0
  12. data/Gemfile.lock +50 -13
  13. data/RELEASING.md +1 -1
  14. data/Rakefile +84 -18
  15. data/bin/shopify +3 -3
  16. data/dev.yml +11 -1
  17. data/ext/shopify-extensions/extconf.rb +21 -0
  18. data/ext/shopify-extensions/shopify_extensions.rb +152 -0
  19. data/ext/shopify-extensions/version +1 -0
  20. data/lib/project_types/extension/cli.rb +17 -3
  21. data/lib/project_types/extension/commands/build.rb +31 -3
  22. data/lib/project_types/extension/commands/check.rb +2 -2
  23. data/lib/project_types/extension/commands/connect.rb +1 -1
  24. data/lib/project_types/extension/commands/create.rb +59 -16
  25. data/lib/project_types/extension/commands/extension_command.rb +1 -1
  26. data/lib/project_types/extension/commands/info.rb +1 -1
  27. data/lib/project_types/extension/commands/push.rb +1 -1
  28. data/lib/project_types/extension/commands/register.rb +2 -2
  29. data/lib/project_types/extension/commands/serve.rb +5 -5
  30. data/lib/project_types/extension/commands/tunnel.rb +6 -6
  31. data/lib/project_types/extension/extension_project.rb +4 -4
  32. data/lib/project_types/extension/features/argo.rb +2 -2
  33. data/lib/project_types/extension/features/argo_config.rb +5 -5
  34. data/lib/project_types/extension/features/argo_serve.rb +20 -6
  35. data/lib/project_types/extension/features/argo_setup.rb +1 -1
  36. data/lib/project_types/extension/features/argo_setup_step.rb +1 -1
  37. data/lib/project_types/extension/features/argo_setup_steps.rb +2 -2
  38. data/lib/project_types/extension/forms/connect.rb +2 -2
  39. data/lib/project_types/extension/forms/create.rb +6 -3
  40. data/lib/project_types/extension/forms/questions/ask_app.rb +2 -2
  41. data/lib/project_types/extension/forms/questions/ask_name.rb +1 -1
  42. data/lib/project_types/extension/forms/questions/ask_registration.rb +2 -2
  43. data/lib/project_types/extension/forms/questions/ask_template.rb +44 -0
  44. data/lib/project_types/extension/forms/questions/ask_type.rb +2 -2
  45. data/lib/project_types/extension/messages/message_loading.rb +2 -2
  46. data/lib/project_types/extension/messages/messages.rb +3 -0
  47. data/lib/project_types/extension/models/development_server.rb +74 -0
  48. data/lib/project_types/extension/models/development_server_requirements.rb +36 -0
  49. data/lib/project_types/extension/models/lazy_specification_handler.rb +1 -1
  50. data/lib/project_types/extension/models/server_config/base.rb +31 -0
  51. data/lib/project_types/extension/models/server_config/development.rb +23 -0
  52. data/lib/project_types/extension/models/server_config/development_entries.rb +38 -0
  53. data/lib/project_types/extension/models/server_config/development_renderer.rb +30 -0
  54. data/lib/project_types/extension/models/server_config/extension.rb +35 -0
  55. data/lib/project_types/extension/models/server_config/root.rb +18 -0
  56. data/lib/project_types/extension/models/server_config/user.rb +10 -0
  57. data/lib/project_types/extension/models/specification.rb +1 -1
  58. data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
  59. data/lib/project_types/extension/models/specification_handlers/default.rb +10 -2
  60. data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +1 -1
  61. data/lib/project_types/extension/models/specifications.rb +4 -4
  62. data/lib/project_types/extension/tasks/choose_next_available_port.rb +2 -2
  63. data/lib/project_types/extension/tasks/configure_features.rb +1 -1
  64. data/lib/project_types/extension/tasks/configure_options.rb +1 -1
  65. data/lib/project_types/extension/tasks/converters/product_converter.rb +1 -1
  66. data/lib/project_types/extension/tasks/create_extension.rb +2 -2
  67. data/lib/project_types/extension/tasks/fetch_specifications.rb +2 -2
  68. data/lib/project_types/extension/tasks/find_npm_packages.rb +3 -3
  69. data/lib/project_types/extension/tasks/get_app.rb +2 -2
  70. data/lib/project_types/extension/tasks/get_apps.rb +2 -2
  71. data/lib/project_types/extension/tasks/get_extensions.rb +2 -2
  72. data/lib/project_types/extension/tasks/get_product.rb +2 -2
  73. data/lib/project_types/extension/tasks/run_extension_command.rb +65 -0
  74. data/lib/project_types/extension/tasks/update_draft.rb +2 -2
  75. data/lib/project_types/node/cli.rb +3 -3
  76. data/lib/project_types/node/commands/connect.rb +4 -4
  77. data/lib/project_types/node/commands/create.rb +10 -14
  78. data/lib/project_types/node/commands/deploy/heroku.rb +4 -4
  79. data/lib/project_types/node/commands/deploy.rb +3 -3
  80. data/lib/project_types/node/commands/generate.rb +2 -2
  81. data/lib/project_types/node/commands/open.rb +3 -3
  82. data/lib/project_types/node/commands/serve.rb +7 -7
  83. data/lib/project_types/node/commands/tunnel.rb +6 -6
  84. data/lib/project_types/node/forms/create.rb +3 -3
  85. data/lib/project_types/php/cli.rb +27 -0
  86. data/lib/project_types/php/commands/connect.rb +19 -0
  87. data/lib/project_types/php/commands/create.rb +143 -0
  88. data/lib/project_types/php/commands/deploy/heroku.rb +129 -0
  89. data/lib/project_types/php/commands/deploy.rb +32 -0
  90. data/lib/project_types/php/commands/open.rb +16 -0
  91. data/lib/project_types/php/commands/serve.rb +51 -0
  92. data/lib/project_types/php/commands/tunnel.rb +37 -0
  93. data/lib/project_types/php/forms/create.rb +45 -0
  94. data/lib/project_types/php/messages/messages.rb +191 -0
  95. data/lib/project_types/rails/cli.rb +3 -3
  96. data/lib/project_types/rails/commands/connect.rb +4 -4
  97. data/lib/project_types/rails/commands/create.rb +12 -16
  98. data/lib/project_types/rails/commands/deploy/heroku.rb +4 -4
  99. data/lib/project_types/rails/commands/deploy.rb +3 -3
  100. data/lib/project_types/rails/commands/generate/webhook.rb +3 -3
  101. data/lib/project_types/rails/commands/generate.rb +3 -3
  102. data/lib/project_types/rails/commands/open.rb +3 -3
  103. data/lib/project_types/rails/commands/serve.rb +8 -8
  104. data/lib/project_types/rails/commands/tunnel.rb +6 -6
  105. data/lib/project_types/rails/forms/create.rb +3 -3
  106. data/lib/project_types/rails/gem.rb +1 -1
  107. data/lib/project_types/rails/ruby.rb +1 -1
  108. data/lib/project_types/script/cli.rb +12 -3
  109. data/lib/project_types/script/commands/create.rb +2 -2
  110. data/lib/project_types/script/commands/push.rb +2 -2
  111. data/lib/project_types/script/forms/create.rb +1 -1
  112. data/lib/project_types/script/graphql/app_script_set.graphql +40 -0
  113. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -44
  114. data/lib/project_types/script/graphql/module_upload_url_generate.graphql +9 -0
  115. data/lib/project_types/script/layers/application/extension_points.rb +2 -2
  116. data/lib/project_types/script/layers/application/push_script.rb +13 -1
  117. data/lib/project_types/script/layers/domain/push_package.rb +1 -14
  118. data/lib/project_types/script/layers/domain/script_project.rb +2 -2
  119. data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +55 -0
  120. data/lib/project_types/script/layers/infrastructure/api_clients/script_service_api_client.rb +35 -0
  121. data/lib/project_types/script/layers/infrastructure/command_runner.rb +1 -1
  122. data/lib/project_types/script/layers/infrastructure/errors.rb +2 -0
  123. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +2 -2
  124. data/lib/project_types/script/layers/infrastructure/languages/rust_project_creator.rb +1 -1
  125. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +1 -2
  126. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +5 -5
  127. data/lib/project_types/script/layers/infrastructure/script_service.rb +28 -97
  128. data/lib/project_types/script/layers/infrastructure/script_uploader.rb +27 -0
  129. data/lib/project_types/script/layers/infrastructure/service_locator.rb +20 -0
  130. data/lib/project_types/script/messages/messages.rb +3 -0
  131. data/lib/project_types/script/tasks/ensure_env.rb +7 -7
  132. data/lib/project_types/script/ui/error_handler.rb +79 -74
  133. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  134. data/lib/project_types/theme/cli.rb +3 -3
  135. data/lib/project_types/theme/commands/check.rb +3 -3
  136. data/lib/project_types/theme/commands/delete.rb +7 -7
  137. data/lib/project_types/theme/commands/init.rb +3 -3
  138. data/lib/project_types/theme/commands/language_server.rb +2 -2
  139. data/lib/project_types/theme/commands/package.rb +2 -2
  140. data/lib/project_types/theme/commands/publish.rb +5 -5
  141. data/lib/project_types/theme/commands/pull.rb +15 -9
  142. data/lib/project_types/theme/commands/push.rb +18 -12
  143. data/lib/project_types/theme/commands/serve.rb +4 -4
  144. data/lib/project_types/theme/forms/confirm_store.rb +1 -1
  145. data/lib/project_types/theme/forms/select.rb +2 -2
  146. data/lib/{shopify-cli → shopify_cli}/admin_api/populate_resource_command.rb +3 -3
  147. data/lib/{shopify-cli → shopify_cli}/admin_api/schema.rb +4 -4
  148. data/lib/{shopify-cli → shopify_cli}/admin_api.rb +27 -27
  149. data/lib/{shopify-cli → shopify_cli}/api.rb +8 -8
  150. data/lib/{shopify-cli → shopify_cli}/command.rb +3 -3
  151. data/lib/{shopify-cli → shopify_cli}/commands/config.rb +14 -14
  152. data/lib/{shopify-cli → shopify_cli}/commands/help.rb +4 -4
  153. data/lib/{shopify-cli → shopify_cli}/commands/login.rb +7 -7
  154. data/lib/shopify_cli/commands/logout.rb +39 -0
  155. data/lib/{shopify-cli → shopify_cli}/commands/populate/customer.rb +4 -4
  156. data/lib/{shopify-cli → shopify_cli}/commands/populate/draft_order.rb +4 -4
  157. data/lib/{shopify-cli → shopify_cli}/commands/populate/product.rb +4 -4
  158. data/lib/shopify_cli/commands/populate.rb +23 -0
  159. data/lib/shopify_cli/commands/store.rb +15 -0
  160. data/lib/{shopify-cli → shopify_cli}/commands/switch.rb +5 -5
  161. data/lib/{shopify-cli → shopify_cli}/commands/system.rb +10 -10
  162. data/lib/shopify_cli/commands/version.rb +15 -0
  163. data/lib/{shopify-cli → shopify_cli}/commands/whoami.rb +7 -7
  164. data/lib/shopify_cli/commands.rb +34 -0
  165. data/lib/{shopify-cli → shopify_cli}/connect.rb +3 -3
  166. data/lib/shopify_cli/constants.rb +26 -0
  167. data/lib/{shopify-cli → shopify_cli}/context.rb +6 -6
  168. data/lib/{shopify-cli → shopify_cli}/core/entry_point.rb +7 -7
  169. data/lib/{shopify-cli → shopify_cli}/core/executor.rb +3 -3
  170. data/lib/{shopify-cli → shopify_cli}/core/finalize.rb +1 -1
  171. data/lib/{shopify-cli → shopify_cli}/core/help_resolver.rb +2 -2
  172. data/lib/{shopify-cli → shopify_cli}/core/monorail.rb +8 -8
  173. data/lib/shopify_cli/core.rb +8 -0
  174. data/lib/{shopify-cli → shopify_cli}/db.rb +8 -8
  175. data/lib/shopify_cli/environment.rb +60 -0
  176. data/lib/{shopify-cli → shopify_cli}/feature.rb +8 -8
  177. data/lib/{shopify-cli → shopify_cli}/form.rb +2 -2
  178. data/lib/{shopify-cli → shopify_cli}/git.rb +8 -8
  179. data/lib/{shopify-cli → shopify_cli}/helpers/haikunator.rb +1 -1
  180. data/lib/shopify_cli/helpers.rb +5 -0
  181. data/lib/{shopify-cli → shopify_cli}/heroku.rb +38 -13
  182. data/lib/{shopify-cli → shopify_cli}/http_request.rb +1 -1
  183. data/lib/{shopify-cli → shopify_cli}/identity_auth/servlet.rb +1 -1
  184. data/lib/{shopify-cli → shopify_cli}/identity_auth.rb +24 -31
  185. data/lib/{shopify-cli → shopify_cli}/js_deps.rb +7 -7
  186. data/lib/{shopify-cli → shopify_cli}/js_system.rb +10 -10
  187. data/lib/{shopify-cli → shopify_cli}/lazy_delegator.rb +2 -2
  188. data/lib/{shopify-cli → shopify_cli}/messages/messages.rb +17 -1
  189. data/lib/{shopify-cli → shopify_cli}/method_object.rb +4 -4
  190. data/lib/{shopify-cli → shopify_cli}/options.rb +1 -1
  191. data/lib/{shopify-cli → shopify_cli}/packager.rb +8 -8
  192. data/lib/{shopify-cli → shopify_cli}/partners_api/organizations.rb +1 -1
  193. data/lib/{shopify-cli → shopify_cli}/partners_api.rb +16 -40
  194. data/lib/shopify_cli/php_deps.rb +102 -0
  195. data/lib/{shopify-cli → shopify_cli}/process_supervision.rb +23 -21
  196. data/lib/{shopify-cli → shopify_cli}/project.rb +15 -15
  197. data/lib/{shopify-cli → shopify_cli}/project_commands.rb +3 -3
  198. data/lib/{shopify-cli → shopify_cli}/project_type.rb +5 -5
  199. data/lib/{shopify-cli → shopify_cli}/resolve_constant.rb +5 -5
  200. data/lib/{shopify-cli → shopify_cli}/resources/env_file.rb +1 -1
  201. data/lib/shopify_cli/resources.rb +5 -0
  202. data/lib/{shopify-cli → shopify_cli}/result.rb +11 -11
  203. data/lib/{shopify-cli → shopify_cli}/shopifolk.rb +6 -6
  204. data/lib/{shopify-cli → shopify_cli}/sub_command.rb +1 -1
  205. data/lib/{shopify-cli → shopify_cli}/task.rb +1 -1
  206. data/lib/{shopify-cli → shopify_cli}/tasks/confirm_store.rb +3 -3
  207. data/lib/{shopify-cli → shopify_cli}/tasks/create_api_client.rb +4 -4
  208. data/lib/shopify_cli/tasks/ensure_authenticated.rb +13 -0
  209. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_dev_store.rb +5 -5
  210. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_env.rb +3 -3
  211. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_loopback_url.rb +4 -4
  212. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_project_type.rb +3 -3
  213. data/lib/{shopify-cli → shopify_cli}/tasks/select_org_and_shop.rb +8 -8
  214. data/lib/{shopify-cli → shopify_cli}/tasks/update_dashboard_urls.rb +6 -6
  215. data/lib/{shopify-cli → shopify_cli}/tasks.rb +10 -10
  216. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/certificate_manager.rb +5 -5
  217. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/header_hash.rb +5 -1
  218. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/hot-reload.js +0 -0
  219. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/hot_reload.rb +5 -6
  220. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/local_assets.rb +1 -1
  221. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/proxy.rb +15 -3
  222. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/sse.rb +1 -1
  223. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/watcher.rb +1 -1
  224. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/web_server.rb +1 -1
  225. data/lib/{shopify-cli → shopify_cli}/theme/dev_server.rb +3 -3
  226. data/lib/shopify_cli/theme/development_theme.rb +83 -0
  227. data/lib/{shopify-cli → shopify_cli}/theme/file.rb +12 -4
  228. data/lib/{shopify-cli → shopify_cli}/theme/ignore_filter.rb +8 -1
  229. data/lib/{shopify-cli → shopify_cli}/theme/mime_type.rb +1 -1
  230. data/lib/{shopify-cli → shopify_cli}/theme/syncer.rb +7 -7
  231. data/lib/{shopify-cli → shopify_cli}/theme/theme.rb +4 -4
  232. data/lib/{shopify-cli → shopify_cli}/transform_data_structure.rb +4 -4
  233. data/lib/{shopify-cli → shopify_cli}/tunnel.rb +14 -14
  234. data/lib/shopify_cli/version.rb +3 -0
  235. data/lib/shopify_cli.rb +52 -49
  236. data/shopify-cli.gemspec +5 -5
  237. metadata +130 -95
  238. data/.github/workflows/build.yml +0 -28
  239. data/lib/shopify-cli/commands/logout.rb +0 -39
  240. data/lib/shopify-cli/commands/populate.rb +0 -23
  241. data/lib/shopify-cli/commands/store.rb +0 -15
  242. data/lib/shopify-cli/commands/version.rb +0 -15
  243. data/lib/shopify-cli/commands.rb +0 -34
  244. data/lib/shopify-cli/core.rb +0 -8
  245. data/lib/shopify-cli/helpers.rb +0 -5
  246. data/lib/shopify-cli/resources.rb +0 -5
  247. data/lib/shopify-cli/tasks/ensure_authenticated.rb +0 -13
  248. data/lib/shopify-cli/theme/development_theme.rb +0 -69
  249. data/lib/shopify-cli/version.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0c4574b0b307dbe68a4cfe4d47e76a4825dbc2bb208b2fd891e0192e3158690
4
- data.tar.gz: c365c04166d24b723c4b5d8e0612e722fec4e765f2efcc4a638d534ab60a645c
3
+ metadata.gz: 60163978b05868670c0b5535cc49060ba5f55c9e127d6f97232970751caeb4d8
4
+ data.tar.gz: b3993bcef0bd4d5488f4b4d7f3e8b6f219a0322279159a512a12cc3986f2e63a
5
5
  SHA512:
6
- metadata.gz: baecd34e68711439ab4986652a21d00dc7c8443ef92497cf516e535cb91b979280293a3d86936a5b4260984739b28adab3ece18fdedfa35087d8ed1ee7411f2c
7
- data.tar.gz: c55111c54115aeb15b5c9cd29e48c1b42c2dbe89a79a509e74c3f2fdea0830ad693e9983ca00ad40468ed9c132c7202e0ca01681dc94866f191773c982811f14
6
+ metadata.gz: cd65b86469afbc40117f58257840588dea0fd07141e899ac9273e0eee9da4bcaef119c4df14921777d3ae88932fd053771392154658704294b59afd9656b00f8
7
+ data.tar.gz: 2d199c2d96954b9d2c666fc4822f845f1a176115eb90a28078af42ceaf0cf691b3b2e21896485afe4c42b2ec43e7c5af576ba18a86188bf01a22f7ff32ffb8f0
data/.github/CODEOWNERS CHANGED
@@ -1,4 +1,5 @@
1
1
  * @shopify/core-build-learn
2
+ * @shopify/development-lifecycle
2
3
 
3
4
  /lib/project_types/script/ @shopify/scripts-experience
4
5
  /test/project_types/script/ @shopify/scripts-experience
@@ -24,10 +24,6 @@ Tip: include an error message (in a `<details></details>` tag) if your issue is
24
24
  1.
25
25
  1.
26
26
 
27
- ## Reduced test case
28
-
29
- The best way to get your bug fixed is to provide a [reduced test case](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Reducing_testcases).
30
-
31
27
 
32
28
 
33
29
  ## Specifications
@@ -0,0 +1,104 @@
1
+ name: Shopify
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ concurrency:
10
+ group: shopify-${{ github.head_ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ test:
15
+ name: Tests with Ruby ${{ matrix.version }} on ${{ matrix.os }}
16
+ runs-on: ${{ matrix.os }}
17
+ strategy:
18
+ matrix:
19
+ version:
20
+ - 3.0.2
21
+ - 2.6.6
22
+ - 2.7.1
23
+ os:
24
+ - macos-10.15
25
+ - macos-11
26
+ - ubuntu-20.04
27
+ - ubuntu-18.04
28
+ steps:
29
+ - uses: actions/checkout@v2
30
+ - name: Set Git configuration
31
+ run: |
32
+ git config --global user.email "development-lifecycle@shopify.com"
33
+ git config --global user.name "Development Lifecycle"
34
+
35
+ - name: Set up Ruby ${{ matrix.version }}
36
+ uses: ruby/setup-ruby@v1
37
+ with:
38
+ ruby-version: ${{ matrix.version }}
39
+ bundler-cache: true
40
+
41
+ - name: Install Dependencies
42
+ run: bundle install
43
+
44
+ - name: Run Tests
45
+ run: bundle exec rake test
46
+ acceptance_tests:
47
+ name: Acceptance Tests with Ruby ${{ matrix.version }} on ${{ matrix.os }}
48
+ runs-on: ${{ matrix.os }}
49
+ strategy:
50
+ matrix:
51
+ version:
52
+ - 3.0.2
53
+ - 2.6.6
54
+ - 2.7.1
55
+ os:
56
+ - macos-10.15
57
+ - macos-11
58
+ - ubuntu-20.04
59
+ - ubuntu-18.04
60
+ steps:
61
+ - uses: actions/checkout@v2
62
+ - name: Set Git configuration
63
+ run: |
64
+ git config --global user.email "development-lifecycle@shopify.com"
65
+ git config --global user.name "Development Lifecycle"
66
+
67
+ - name: Set up Ruby ${{ matrix.version }}
68
+ uses: ruby/setup-ruby@v1
69
+ with:
70
+ ruby-version: ${{ matrix.version }}
71
+ bundler-cache: true
72
+
73
+ - uses: actions/setup-node@v2
74
+ with:
75
+ node-version: "14.9.0"
76
+
77
+ - name: Install Dependencies
78
+ run: bundle install
79
+
80
+ - name: Run Tests
81
+ run: bundle exec cucumber
82
+ rubocop:
83
+ name: Rubocop
84
+ runs-on: ${{ matrix.os }}
85
+ strategy:
86
+ matrix:
87
+ version:
88
+ - 3.0.2
89
+ os:
90
+ - macos-latest
91
+ steps:
92
+ - uses: actions/checkout@v2
93
+
94
+ - name: Set up Ruby ${{ matrix.version }}
95
+ uses: ruby/setup-ruby@v1
96
+ with:
97
+ ruby-version: ${{ matrix.version }}
98
+ bundler-cache: true
99
+
100
+ - name: Install Dependencies
101
+ run: bundle install
102
+
103
+ - name: Rubocop
104
+ run: bundle exec rake rubocop
data/.gitignore CHANGED
@@ -19,3 +19,5 @@ packaging/debian/shopify-cli
19
19
  packaging/debian/shopify-cli.deb
20
20
  packaging/rpm/build
21
21
  packaging/rpm/shopify-cli.spec
22
+ .byebug_history
23
+ ext/shopify-extensions/shopify-extensions
data/.rubocop.yml CHANGED
@@ -11,8 +11,8 @@ inherit_gem:
11
11
  Minitest:
12
12
  Enabled: true
13
13
  Include:
14
- - '**/test/**/*'
15
- - '**/*_test.rb'
14
+ - "**/test/**/*"
15
+ - "**/*_test.rb"
16
16
 
17
17
  Minitest/AssertInDelta: # (new in 0.10)
18
18
  Enabled: true
@@ -43,15 +43,15 @@ Minitest/UnspecifiedException: # (new in 0.10)
43
43
 
44
44
  AllCops:
45
45
  Exclude:
46
- - 'vendor/**/*'
47
- - 'docs/**/*'
48
- - 'packaging/**/*'
46
+ - "vendor/**/*"
47
+ - "docs/**/*"
48
+ - "packaging/**/*"
49
49
  TargetRubyVersion: 2.4
50
50
 
51
51
  Layout/EmptyLines:
52
52
  Exclude:
53
53
  # Need extra line so comment at top isnt registered to the Dev namespace
54
- - 'lib/dev/helpers/chruby_reset.rb'
54
+ - "lib/dev/helpers/chruby_reset.rb"
55
55
 
56
56
  Layout/EmptyLineBetweenDefs:
57
57
  AllowAdjacentOneLineDefs: true
@@ -59,10 +59,10 @@ Layout/EmptyLineBetweenDefs:
59
59
  # Changing this could effect the way the content is rendered.
60
60
  Layout/HeredocIndentation:
61
61
  Exclude:
62
- - 'lib/project_types/node/messages/messages.rb'
63
- - 'lib/project_types/rails/messages/messages.rb'
64
- - 'lib/project_types/script/messages/messages.rb'
65
- - 'lib/shopify-cli/messages/messages.rb'
62
+ - "lib/project_types/node/messages/messages.rb"
63
+ - "lib/project_types/rails/messages/messages.rb"
64
+ - "lib/project_types/script/messages/messages.rb"
65
+ - "lib/shopify_cli/messages/messages.rb"
66
66
 
67
67
  # allow String.new to create mutable strings
68
68
  Style/EmptyLiteral:
@@ -71,7 +71,7 @@ Style/EmptyLiteral:
71
71
  # allow String.new to create mutable strings
72
72
  Style/HashSyntax:
73
73
  Exclude:
74
- - 'Rakefile'
74
+ - "Rakefile"
75
75
 
76
76
  # allow using %r{} for regexes
77
77
  Style/RegexpLiteral:
@@ -97,6 +97,6 @@ Style/MethodCallWithArgsParentheses:
97
97
 
98
98
  Layout/TrailingWhitespace:
99
99
  Exclude:
100
- - 'ext/shopify-cli/extconf.rb' # unsure if safe to remove
101
- - 'lib/project_types/extension/messages/messages.rb' # unsure if safe to remove
102
- - 'test/project_types/extension/extension_test_helpers/stubs/argo_script.rb' # unsure if save to remove
100
+ - "ext/shopify-cli/extconf.rb" # unsure if safe to remove
101
+ - "lib/project_types/extension/messages/messages.rb" # unsure if safe to remove
102
+ - "test/project_types/extension/extension_test_helpers/stubs/argo_script.rb" # unsure if save to remove
data/.rubocop_todo.yml CHANGED
@@ -14,11 +14,11 @@ Minitest/MultipleAssertions:
14
14
  # Cop supports --auto-correct.
15
15
  Style/PerlBackrefs:
16
16
  Exclude:
17
- - 'lib/docgen/markdown.rb'
17
+ - "lib/docgen/markdown.rb"
18
18
 
19
19
  # Offense count: 2
20
20
  # Cop supports --auto-correct.
21
21
  Style/RedundantBegin:
22
22
  Exclude:
23
- - 'lib/shopify-cli/shopifolk.rb'
24
- - 'test/shopify-cli/tunnel_test.rb'
23
+ - "lib/shopify_cli/shopifolk.rb"
24
+ - "test/shopify_cli/tunnel_test.rb"
data/CHANGELOG.md CHANGED
@@ -1,6 +1,29 @@
1
1
  Unreleased
2
2
  ------
3
3
 
4
+ Version 2.5.0
5
+ ------
6
+
7
+ * [#1553](https://github.com/Shopify/shopify-cli/pull/1553): Add support for PHP app projects
8
+
9
+ Version 2.4.0
10
+ ------
11
+
12
+ * [#1488](https://github.com/Shopify/shopify-cli/pull/1488): Update Theme-Check to 1.4
13
+ * [#1507](https://github.com/Shopify/shopify-cli/pull/1507): Limit the generated name for themes to 50 characters
14
+
15
+ Version 2.3.0
16
+ ------
17
+
18
+ * [#1386](https://github.com/Shopify/shopify-cli/pull/1386): Update Theme-Check to 1.2
19
+ * [#1457](https://github.com/Shopify/shopify-cli/pull/1457): Fix uploading of binary theme files under Windows
20
+ * [#1480](https://github.com/Shopify/shopify-cli/pull/1480): Fix customers pages not working with `theme serve`
21
+ * [#1479](https://github.com/Shopify/shopify-cli/pull/1479): Add theme push & pull option to ignore files per command
22
+
23
+ Version 2.2.2
24
+ ------
25
+ * [1382](https://github.com/Shopify/shopify-cli/pull/1382): Client side module upload for Scripts
26
+
4
27
  Version 2.2.1
5
28
  ------
6
29
 
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,23 @@
1
+ # Contributing
2
+
3
+ This documents includes guidelines for contributors.
4
+
5
+ ## Testing
6
+
7
+ The project employs a diverse suite tests that help ensure it works as intended and prevents regressions as it continues to grow and evolve.
8
+
9
+ ### Unit Tests
10
+ Most of the internal components the project uses have unit tests to thoroughly test them. Here dependencies of components are mocked or stubbed appropriately to ensure tests are reliable, test only one component and are fast!
11
+
12
+ ### Acceptance Tests
13
+
14
+ Acceptance tests run the built `shopify` command line against a wide range of fixtures and verify its output and results. They are the slowest to run however provide the most coverage. The idea is to test a few complete scenarios for each major feature.
15
+
16
+ Those are written in [Cucumber](https://cucumber.io/) and Ruby and can be found in the [`features/`](/features) directory. They can be executed by running
17
+
18
+ ```bash
19
+ bundle exec cucumber
20
+ bundle exec cucumber features/theme.feature:3 # A specific test
21
+ ```
22
+
23
+ > **Note** that we currently don't have an approach for stubbing the interactions with the GraphQL APIs and that therefore we can't write acceptance tests for commands that interact with APIs.
data/Dockerfile ADDED
@@ -0,0 +1,19 @@
1
+ # This is a Docker image to test the CLI in UNIX environments other than macOS
2
+ # Build the image: docker build . -t shopify-cli
3
+ # Run tests: docker run -t --rm --volume "$(pwd):/usr/src/app" shopify-cli bundle exec rake test
4
+ FROM cimg/ruby:2.7.1-node
5
+
6
+ RUN git config --global user.email "development-lifecycle@shopify.com"
7
+ RUN git config --global user.name "Development Lifecycle"
8
+
9
+ # throw errors if Gemfile has been modified since Gemfile.lock
10
+ RUN bundle config --global frozen 1
11
+
12
+ WORKDIR /usr/src/app
13
+
14
+ COPY Gemfile Gemfile.lock ./
15
+ COPY shopify-cli.gemspec shopify-cli.gemspec
16
+ COPY lib/shopify_cli/version.rb lib/shopify_cli/version.rb
17
+ COPY . .
18
+
19
+ RUN bundle install
data/Gemfile CHANGED
@@ -24,4 +24,5 @@ group :test do
24
24
  gem "webmock", require: false
25
25
  gem "timecop", require: false
26
26
  gem "rack", require: false
27
+ gem "cucumber", "~> 7.0", require: false
27
28
  end
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shopify-cli (2.2.1)
5
- listen (~> 3.5)
6
- theme-check (~> 1.1)
4
+ shopify-cli (2.5.0)
5
+ listen (~> 3.7.0)
6
+ theme-check (~> 1.4.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.7.0)
11
+ addressable (2.8.0)
12
12
  public_suffix (>= 2.0.2, < 5.0)
13
13
  ansi (1.5.0)
14
14
  ast (2.4.2)
@@ -16,15 +16,50 @@ GEM
16
16
  byebug (11.1.3)
17
17
  coderay (1.1.3)
18
18
  crack (0.4.4)
19
+ cucumber (7.0.0)
20
+ builder (~> 3.2, >= 3.2.4)
21
+ cucumber-core (~> 10.0, >= 10.0.1)
22
+ cucumber-create-meta (~> 6.0, >= 6.0.1)
23
+ cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
24
+ cucumber-gherkin (~> 20.0, >= 20.0.1)
25
+ cucumber-html-formatter (~> 16.0, >= 16.0.1)
26
+ cucumber-messages (~> 17.0, >= 17.0.1)
27
+ cucumber-wire (~> 6.0, >= 6.0.1)
28
+ diff-lcs (~> 1.4, >= 1.4.4)
29
+ mime-types (~> 3.3, >= 3.3.1)
30
+ multi_test (~> 0.1, >= 0.1.2)
31
+ sys-uname (~> 1.2, >= 1.2.2)
32
+ cucumber-core (10.0.1)
33
+ cucumber-gherkin (~> 20.0, >= 20.0.1)
34
+ cucumber-messages (~> 17.0, >= 17.0.1)
35
+ cucumber-tag-expressions (~> 3.0, >= 3.0.1)
36
+ cucumber-create-meta (6.0.1)
37
+ cucumber-messages (~> 17.0, >= 17.0.1)
38
+ sys-uname (~> 1.2, >= 1.2.2)
39
+ cucumber-cucumber-expressions (12.1.3)
40
+ cucumber-gherkin (20.0.1)
41
+ cucumber-messages (~> 17.0, >= 17.0.1)
42
+ cucumber-html-formatter (16.0.1)
43
+ cucumber-messages (~> 17.0, >= 17.0.1)
44
+ cucumber-messages (17.1.0)
45
+ cucumber-tag-expressions (3.0.1)
46
+ cucumber-wire (6.1.1)
47
+ cucumber-core (~> 10.0, >= 10.0.1)
48
+ cucumber-cucumber-expressions (~> 12.1, >= 12.1.2)
49
+ cucumber-messages (~> 17.0, >= 17.0.1)
50
+ diff-lcs (1.4.4)
19
51
  fakefs (1.2.2)
20
52
  ffi (1.15.3)
21
53
  hashdiff (1.0.1)
22
54
  liquid (5.0.1)
23
- listen (3.5.1)
55
+ listen (3.7.0)
24
56
  rb-fsevent (~> 0.10, >= 0.10.3)
25
57
  rb-inotify (~> 0.9, >= 0.9.10)
26
58
  method_source (1.0.0)
27
- mini_portile2 (2.5.3)
59
+ mime-types (3.3.1)
60
+ mime-types-data (~> 3.2015)
61
+ mime-types-data (3.2021.0901)
62
+ mini_portile2 (2.6.1)
28
63
  minitest (5.14.2)
29
64
  minitest-fail-fast (0.1.0)
30
65
  minitest (~> 5)
@@ -34,11 +69,10 @@ GEM
34
69
  minitest (>= 5.0)
35
70
  ruby-progressbar
36
71
  mocha (1.11.2)
37
- nokogiri (1.11.7)
38
- mini_portile2 (~> 2.5.0)
72
+ multi_test (0.1.2)
73
+ nokogiri (1.12.4)
74
+ mini_portile2 (~> 2.6.1)
39
75
  racc (~> 1.4)
40
- nokogumbo (2.0.5)
41
- nokogiri (~> 1.8, >= 1.8.4)
42
76
  parallel (1.20.1)
43
77
  parser (3.0.1.0)
44
78
  ast (~> 2.4.1)
@@ -76,9 +110,11 @@ GEM
76
110
  rubocop-shopify (2.0.1)
77
111
  rubocop (~> 1.11)
78
112
  ruby-progressbar (1.11.0)
79
- theme-check (1.1.0)
113
+ sys-uname (1.2.2)
114
+ ffi (~> 1.1)
115
+ theme-check (1.4.0)
80
116
  liquid (>= 5.0.1)
81
- nokogumbo
117
+ nokogiri (>= 1.12)
82
118
  timecop (0.9.2)
83
119
  unicode-display_width (2.0.0)
84
120
  webmock (3.9.3)
@@ -90,8 +126,9 @@ PLATFORMS
90
126
  ruby
91
127
 
92
128
  DEPENDENCIES
93
- bundler (~> 2.1.4)
129
+ bundler (~> 2.2.2)
94
130
  byebug
131
+ cucumber (~> 7.0)
95
132
  fakefs (>= 1.0)
96
133
  minitest (>= 5.0.0)
97
134
  minitest-fail-fast
data/RELEASING.md CHANGED
@@ -13,7 +13,7 @@
13
13
  $ git checkout -b release_X_Y_Z
14
14
  ```
15
15
 
16
- 1. Update the version of Shopify CLI in `lib/shopify-cli/version.rb`
16
+ 1. Update the version of Shopify CLI in `lib/shopify_cli/version.rb`
17
17
 
18
18
  1. Update the version of Shopify CLI at the top of `Gemfile.lock` (failing to do so causes the CI build to fail)
19
19
 
data/Rakefile CHANGED
@@ -2,6 +2,7 @@ require_relative "bin/load_shopify"
2
2
  require "rake/testtask"
3
3
  require "rubocop/rake_task"
4
4
  require "bundler/gem_tasks"
5
+ require "shellwords"
5
6
 
6
7
  Rake::TestTask.new do |t|
7
8
  t.libs += %w(test)
@@ -10,6 +11,33 @@ Rake::TestTask.new do |t|
10
11
  t.warning = false
11
12
  end
12
13
 
14
+ desc "A set of tasks that run in Linux environments"
15
+ namespace :linux do
16
+ desc "Runs the test suite in a Linux Docker environment"
17
+ task :test do
18
+ system("docker", "build", __dir__, "-t", "shopify-cli") || abort
19
+ system(
20
+ "docker", "run",
21
+ "-t", "--rm",
22
+ "--volume", "#{Shellwords.escape(__dir__)}:/usr/src/app",
23
+ "shopify-cli",
24
+ "bundle", "exec", "rake", "test"
25
+ ) || abort
26
+ end
27
+
28
+ desc "Runs the acceptance tests suite in a Linux Docker environment"
29
+ task :features do
30
+ system("docker", "build", __dir__, "-t", "shopify-cli") || abort
31
+ system(
32
+ "docker", "run",
33
+ "-t", "--rm",
34
+ "--volume", "#{Shellwords.escape(__dir__)}:/usr/src/app",
35
+ "shopify-cli",
36
+ "bundle", "exec", "cucumber"
37
+ ) || abort
38
+ end
39
+ end
40
+
13
41
  RuboCop::RakeTask.new
14
42
 
15
43
  task(default: [:test, :rubocop])
@@ -23,20 +51,20 @@ namespace :rdoc do
23
51
  repo = "https://github.com/Shopify/shopify-cli.wiki.git"
24
52
  intermediate = "markdown_intermediate"
25
53
  file_to_doc = [
26
- "lib/shopify-cli/admin_api.rb",
27
- "lib/shopify-cli/context.rb",
28
- "lib/shopify-cli/db.rb",
29
- "lib/shopify-cli/git.rb",
30
- "lib/shopify-cli/heroku.rb",
31
- "lib/shopify-cli/js_deps.rb",
32
- "lib/shopify-cli/lazy_delegator.rb",
33
- "lib/shopify-cli/method_object.rb",
34
- "lib/shopify-cli/partners_api.rb",
35
- "lib/shopify-cli/process_supervision.rb",
36
- "lib/shopify-cli/project.rb",
37
- "lib/shopify-cli/result.rb",
38
- "lib/shopify-cli/transform_data_structure.rb",
39
- "lib/shopify-cli/tunnel.rb",
54
+ "lib/shopify_cli/admin_api.rb",
55
+ "lib/shopify_cli/context.rb",
56
+ "lib/shopify_cli/db.rb",
57
+ "lib/shopify_cli/git.rb",
58
+ "lib/shopify_cli/heroku.rb",
59
+ "lib/shopify_cli/js_deps.rb",
60
+ "lib/shopify_cli/lazy_delegator.rb",
61
+ "lib/shopify_cli/method_object.rb",
62
+ "lib/shopify_cli/partners_api.rb",
63
+ "lib/shopify_cli/process_supervision.rb",
64
+ "lib/shopify_cli/project.rb",
65
+ "lib/shopify_cli/result.rb",
66
+ "lib/shopify_cli/transform_data_structure.rb",
67
+ "lib/shopify_cli/tunnel.rb",
40
68
  ]
41
69
 
42
70
  task all: [:markdown, :wiki, :cleanup]
@@ -76,25 +104,63 @@ desc("Generate markdown documentation and update the wiki")
76
104
  task(rdoc: "rdoc:all")
77
105
 
78
106
  namespace :package do
79
- require "shopify-cli/packager"
107
+ require "shopify_cli/packager"
80
108
 
81
109
  task all: [:debian, :rpm, :homebrew]
82
110
 
83
111
  desc("Builds a Debian package of the CLI")
84
112
  task :debian do
85
- ShopifyCli::Packager.new.build_debian
113
+ ShopifyCLI::Packager.new.build_debian
86
114
  end
87
115
 
88
116
  desc("Builds an RPM package of the CLI")
89
117
  task :rpm do
90
- ShopifyCli::Packager.new.build_rpm
118
+ ShopifyCLI::Packager.new.build_rpm
91
119
  end
92
120
 
93
121
  desc("Builds a Homebrew package of the CLI")
94
122
  task :homebrew do
95
- ShopifyCli::Packager.new.build_homebrew
123
+ ShopifyCLI::Packager.new.build_homebrew
96
124
  end
97
125
  end
98
126
 
99
127
  desc("Builds all distribution packages of the CLI")
100
128
  task(package: "package:all")
129
+
130
+ namespace :extensions do
131
+ task :update do
132
+ version = ENV.fetch("VERSION").strip
133
+ error("Invalid version") unless /^v\d+\.\d+\.\d+/.match(version)
134
+ File.write(Paths.extension("version"), version)
135
+ end
136
+
137
+ task :symlink do
138
+ source = Paths.root("..", "shopify-cli-extensions", "shopify-extensions")
139
+ error("Unable to find shopify-extensions executable: #{executable}") unless File.executable?(source)
140
+ target = Paths.extension("shopify-extensions")
141
+ File.delete(target) if File.exist?(target)
142
+ File.symlink(source, target)
143
+ end
144
+
145
+ task :install do
146
+ target = Paths.extension("shopify-extensions")
147
+ require_relative Paths.extension("shopify_extensions.rb")
148
+ File.delete(target) if File.exist?(target)
149
+ ShopifyExtensions.install(target: target)
150
+ end
151
+
152
+ module Paths
153
+ def self.extension(*args)
154
+ root("ext", "shopify-extensions", *args)
155
+ end
156
+
157
+ def self.root(*args)
158
+ Pathname(File.dirname(__FILE__)).join(*args).to_s
159
+ end
160
+ end
161
+ end
162
+
163
+ def error(message, output: STDERR, code: 1)
164
+ output.puts(message)
165
+ exit(code)
166
+ end
data/bin/shopify CHANGED
@@ -9,7 +9,7 @@ module Kernel
9
9
  original_require(name)
10
10
  rescue LoadError => e
11
11
  # Special case for readline.so, which fails harmlessly on Windows
12
- raise if (name == "readline.so") && ShopifyCli::Context.new.windows?
12
+ raise if (name == "readline.so") && ShopifyCLI::Context.new.windows?
13
13
  # Special case for psych (yaml), which rescues this itself
14
14
  raise if name == "#{RUBY_VERSION[/\d+\.\d+/]}/psych.so"
15
15
  STDERR.puts "[Note] You cannot use gems with Shopify CLI."
@@ -29,6 +29,6 @@ end
29
29
 
30
30
  require_relative "./load_shopify"
31
31
 
32
- exit(ShopifyCli::ErrorHandler.call do
33
- ShopifyCli::Core::EntryPoint.call(ARGV.dup)
32
+ exit(ShopifyCLI::ErrorHandler.call do
33
+ ShopifyCLI::Core::EntryPoint.call(ARGV.dup)
34
34
  end)
data/dev.yml CHANGED
@@ -4,13 +4,19 @@ type:
4
4
 
5
5
  up:
6
6
  - ruby: 2.7.1
7
+ - homebrew:
8
+ - dpkg:
9
+ version: 1.20.9
10
+ - rpm:
11
+ version: 4.16.1.3
7
12
  - bundler
8
13
  - node:
9
14
  version: 14.9.0
10
15
  yarn: true
16
+ - docker
11
17
 
12
18
  test:
13
- desc: 'Run tests.'
19
+ desc: "Run tests."
14
20
  run: |
15
21
  if [ "$#" -eq 1 ] && [[ -f $1 ]];
16
22
  then
@@ -18,3 +24,7 @@ test:
18
24
  else
19
25
  bundle exec rake test $@
20
26
  fi
27
+
28
+ commands:
29
+ style:
30
+ run: bundle exec rubocop .
@@ -0,0 +1,21 @@
1
+ require_relative "./shopify_extensions"
2
+
3
+ installation_dir = ENV.fetch("SHOPIFY_CLI_EXTENSIONS_INSTALLATION_DIR", __dir__)
4
+
5
+ File.write(File.expand_path("Makefile", installation_dir), <<~MAKEFILE)
6
+ .PHONY: clean
7
+
8
+ clean: ;
9
+
10
+ install: ;
11
+ MAKEFILE
12
+
13
+ begin
14
+ ShopifyExtensions.install(
15
+ target: File.expand_path("shopify-extensions", installation_dir)
16
+ )
17
+ rescue ShopifyExtensions::InstallationError => error
18
+ STDERR.puts(error.message)
19
+ rescue => error
20
+ STDERR.puts("Unable to install shopify-extensions: #{error}")
21
+ end