shopify-cli 2.2.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) 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 +106 -0
  5. data/.gitignore +2 -0
  6. data/CHANGELOG.md +23 -0
  7. data/CONTRIBUTING.md +23 -0
  8. data/Dockerfile +19 -0
  9. data/Gemfile +1 -0
  10. data/Gemfile.lock +50 -13
  11. data/Rakefile +66 -0
  12. data/dev.yml +11 -1
  13. data/ext/shopify-extensions/extconf.rb +21 -0
  14. data/ext/shopify-extensions/shopify_extensions.rb +152 -0
  15. data/ext/shopify-extensions/version +1 -0
  16. data/lib/project_types/extension/cli.rb +14 -0
  17. data/lib/project_types/extension/commands/build.rb +30 -2
  18. data/lib/project_types/extension/commands/create.rb +25 -0
  19. data/lib/project_types/extension/commands/push.rb +0 -1
  20. data/lib/project_types/extension/features/argo.rb +1 -11
  21. data/lib/project_types/extension/forms/create.rb +4 -1
  22. data/lib/project_types/extension/forms/questions/ask_template.rb +44 -0
  23. data/lib/project_types/extension/messages/messages.rb +3 -0
  24. data/lib/project_types/extension/models/development_server.rb +35 -0
  25. data/lib/project_types/extension/models/development_server_requirements.rb +17 -0
  26. data/lib/project_types/extension/models/server_config/base.rb +31 -0
  27. data/lib/project_types/extension/models/server_config/development.rb +23 -0
  28. data/lib/project_types/extension/models/server_config/development_entries.rb +38 -0
  29. data/lib/project_types/extension/models/server_config/development_renderer.rb +30 -0
  30. data/lib/project_types/extension/models/server_config/extension.rb +35 -0
  31. data/lib/project_types/extension/models/server_config/root.rb +18 -0
  32. data/lib/project_types/extension/models/server_config/user.rb +10 -0
  33. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +10 -0
  34. data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
  35. data/lib/project_types/extension/tasks/choose_next_available_port.rb +1 -1
  36. data/lib/project_types/extension/tasks/run_extension_command.rb +58 -0
  37. data/lib/project_types/node/commands/create.rb +1 -5
  38. data/lib/project_types/rails/commands/create.rb +1 -5
  39. data/lib/project_types/script/cli.rb +2 -0
  40. data/lib/project_types/script/graphql/app_script_set.graphql +40 -0
  41. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -44
  42. data/lib/project_types/script/graphql/module_upload_url_generate.graphql +9 -0
  43. data/lib/project_types/script/layers/application/push_script.rb +10 -1
  44. data/lib/project_types/script/layers/domain/push_package.rb +1 -14
  45. data/lib/project_types/script/layers/infrastructure/api_clients.rb +89 -0
  46. data/lib/project_types/script/layers/infrastructure/errors.rb +2 -0
  47. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +1 -1
  48. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +0 -1
  49. data/lib/project_types/script/layers/infrastructure/script_service.rb +29 -94
  50. data/lib/project_types/script/layers/infrastructure/script_uploader.rb +27 -0
  51. data/lib/project_types/script/messages/messages.rb +3 -0
  52. data/lib/project_types/script/tasks/ensure_env.rb +2 -2
  53. data/lib/project_types/script/ui/error_handler.rb +6 -1
  54. data/lib/project_types/theme/commands/pull.rb +6 -0
  55. data/lib/project_types/theme/commands/push.rb +6 -0
  56. data/lib/shopify-cli/constants.rb +26 -0
  57. data/lib/shopify-cli/environment.rb +60 -0
  58. data/lib/shopify-cli/git.rb +2 -2
  59. data/lib/shopify-cli/identity_auth.rb +16 -23
  60. data/lib/shopify-cli/partners_api.rb +3 -27
  61. data/lib/shopify-cli/process_supervision.rb +14 -14
  62. data/lib/shopify-cli/theme/dev_server/header_hash.rb +4 -0
  63. data/lib/shopify-cli/theme/dev_server/hot_reload.rb +4 -5
  64. data/lib/shopify-cli/theme/dev_server/proxy.rb +13 -1
  65. data/lib/shopify-cli/theme/development_theme.rb +16 -2
  66. data/lib/shopify-cli/theme/file.rb +11 -3
  67. data/lib/shopify-cli/theme/ignore_filter.rb +7 -0
  68. data/lib/shopify-cli/theme/syncer.rb +1 -1
  69. data/lib/shopify-cli/version.rb +1 -1
  70. data/lib/shopify_cli.rb +4 -2
  71. data/shopify-cli.gemspec +3 -3
  72. metadata +31 -9
  73. data/.github/workflows/build.yml +0 -28
@@ -8,16 +8,6 @@ module ShopifyCli
8
8
  class PartnersAPI < API
9
9
  autoload :Organizations, "shopify-cli/partners_api/organizations"
10
10
 
11
- # Defines the environment variable that this API looks for to operate on local
12
- # services. If you set this environment variable in your shell then the partners
13
- # API will operate on your local instance
14
- #
15
- # #### Example
16
- #
17
- # SHOPIFY_APP_CLI_LOCAL_PARTNERS=1 shopify create
18
- #
19
- LOCAL_DEBUG = "SHOPIFY_APP_CLI_LOCAL_PARTNERS"
20
-
21
11
  class << self
22
12
  ##
23
13
  # issues a graphql query or mutation to the Shopify Partners Dashboard CLI Schema.
@@ -59,11 +49,11 @@ module ShopifyCli
59
49
  ctx.puts(ctx.message("core.partners_api.error.account_not_found", ShopifyCli::TOOL_NAME))
60
50
  end
61
51
 
62
- def partners_url_for(organization_id, api_client_id, local_debug)
52
+ def partners_url_for(organization_id, api_client_id)
63
53
  if ShopifyCli::Shopifolk.acting_as_shopify_organization?
64
54
  organization_id = "internal"
65
55
  end
66
- "#{partners_endpoint(local_debug)}/#{organization_id}/apps/#{api_client_id}"
56
+ "https://#{Environment.partners_domain}/#{organization_id}/apps/#{api_client_id}"
67
57
  end
68
58
 
69
59
  private
@@ -72,7 +62,7 @@ module ShopifyCli
72
62
  new(
73
63
  ctx: ctx,
74
64
  token: access_token(ctx),
75
- url: "#{endpoint}/api/cli/graphql",
65
+ url: "https://#{Environment.partners_domain}/api/cli/graphql",
76
66
  )
77
67
  end
78
68
 
@@ -83,20 +73,6 @@ module ShopifyCli
83
73
  end
84
74
  end
85
75
 
86
- def endpoint
87
- return "https://partners.shopify.com" if ENV[LOCAL_DEBUG].nil?
88
- "https://partners.myshopify.io/"
89
- end
90
-
91
- def partners_endpoint(local_debug)
92
- domain = if local_debug
93
- "partners.myshopify.io"
94
- else
95
- "partners.shopify.com"
96
- end
97
- "https://#{domain}"
98
- end
99
-
100
76
  def auth_failure_info(ctx, error)
101
77
  if error.response
102
78
  headers = %w(www-authenticate x-request-id)
@@ -59,10 +59,20 @@ module ShopifyCli
59
59
  def start(identifier, args)
60
60
  return for_ident(identifier) if running?(identifier)
61
61
 
62
- # Windows doesn't support forking process without extra gems, so we resort to spawning a new child process -
63
- # that means that it dies along with the original process if it is interrupted. On UNIX, we fork the process so
64
- # that it doesn't have to be restarted on every run.
65
- if Context.new.windows?
62
+ # Some systems don't support forking process without extra gems, so we resort to spawning a new child process -
63
+ # that means that it dies along with the original process if it is interrupted. If possible, we fork the process
64
+ # so that it doesn't have to be restarted on every run.
65
+ if Process.respond_to?(:fork)
66
+ fork do
67
+ pid_file = new(identifier, pid: Process.pid)
68
+ pid_file.write
69
+ STDOUT.reopen(pid_file.log_path, "w")
70
+ STDERR.reopen(pid_file.log_path, "w")
71
+ STDIN.reopen("/dev/null", "r")
72
+ Process.setsid
73
+ exec(*args)
74
+ end
75
+ else
66
76
  pid_file = new(identifier)
67
77
 
68
78
  # Make sure the file exists and is empty, otherwise Windows fails
@@ -77,16 +87,6 @@ module ShopifyCli
77
87
  pid_file.write
78
88
 
79
89
  Process.detach(pid)
80
- else
81
- fork do
82
- pid_file = new(identifier, pid: Process.pid)
83
- pid_file.write
84
- STDOUT.reopen(pid_file.log_path, "w")
85
- STDERR.reopen(pid_file.log_path, "w")
86
- STDIN.reopen("/dev/null", "r")
87
- Process.setsid
88
- exec(*args)
89
- end
90
90
  end
91
91
 
92
92
  sleep(0.1)
@@ -47,6 +47,10 @@ module ShopifyCli
47
47
  super(k) || super(@names[k.downcase])
48
48
  end
49
49
 
50
+ def fetch(k, default = nil)
51
+ self[k] || super(@names[k.downcase], default)
52
+ end
53
+
50
54
  def []=(k, v)
51
55
  canonical = k.downcase.freeze
52
56
  # .delete is expensive, don't invoke it unless necessary
@@ -34,11 +34,10 @@ module ShopifyCli
34
34
  files = (modified + added).reject { |file| @ignore_filter&.ignore?(file) }
35
35
  .map { |file| @theme[file].relative_path }
36
36
 
37
- @streams.broadcast(JSON.generate(
38
- modified: files,
39
- ))
40
-
41
- @ctx.debug("[HotReload] Modified #{files.join(", ")}")
37
+ unless files.empty?
38
+ @streams.broadcast(JSON.generate(modified: files))
39
+ @ctx.debug("[HotReload] Modified #{files.join(", ")}")
40
+ end
42
41
  end
43
42
 
44
43
  private
@@ -155,11 +155,16 @@ module ShopifyCli
155
155
  Time.now - @last_session_cookie_refresh >= SESSION_COOKIE_MAX_AGE
156
156
  end
157
157
 
158
+ def extract_secure_session_id_from_response_headers(headers)
159
+ return unless headers["set-cookie"]
160
+ headers["set-cookie"][SESSION_COOKIE_REGEXP, 1]
161
+ end
162
+
158
163
  def secure_session_id
159
164
  if secure_session_id_expired?
160
165
  @ctx.debug("Refreshing preview _secure_session_id cookie")
161
166
  response = request("HEAD", "/", query: { preview_theme_id: @theme.id })
162
- @secure_session_id = response["set-cookie"][SESSION_COOKIE_REGEXP, 1]
167
+ @secure_session_id = extract_secure_session_id_from_response_headers(response)
163
168
  @last_session_cookie_refresh = Time.now
164
169
  end
165
170
 
@@ -179,6 +184,13 @@ module ShopifyCli
179
184
  response_headers["location"].gsub!(%r{(https://#{@theme.shop})}, "http://127.0.0.1:9292")
180
185
  end
181
186
 
187
+ new_session_id = extract_secure_session_id_from_response_headers(response_headers)
188
+ if new_session_id
189
+ @ctx.debug("New _secure_session_id cookie from response")
190
+ @secure_session_id = new_session_id
191
+ @last_session_cookie_refresh = Time.now
192
+ end
193
+
182
194
  response_headers
183
195
  end
184
196
 
@@ -6,13 +6,24 @@ require "securerandom"
6
6
 
7
7
  module ShopifyCli
8
8
  module Theme
9
+ API_NAME_LIMIT = 50
10
+
9
11
  class DevelopmentTheme < Theme
10
12
  def id
11
13
  ShopifyCli::DB.get(:development_theme_id)
12
14
  end
13
15
 
14
16
  def name
15
- ShopifyCli::DB.get(:development_theme_name) || generate_theme_name
17
+ existing_name = ShopifyCli::DB.get(:development_theme_name)
18
+ # Up to version 2.3.0 (included) generated names stored locally
19
+ # could have more than 50 characters and the API rejected them.
20
+ # This code ensures we update the name for those users to ensure
21
+ # the name stays under the limit.
22
+ if existing_name.nil? || existing_name.length > API_NAME_LIMIT
23
+ generate_theme_name
24
+ else
25
+ existing_name
26
+ end
16
27
  end
17
28
 
18
29
  def role
@@ -58,7 +69,10 @@ module ShopifyCli
58
69
  hostname = Socket.gethostname.split(".").shift
59
70
  hash = SecureRandom.hex(3)
60
71
 
61
- theme_name = "Development (#{hash}-#{hostname})"
72
+ theme_name = "Development ()"
73
+ hostname_character_limit = API_NAME_LIMIT - theme_name.length - hash.length - 1
74
+ identifier = "#{hash}-#{hostname[0, hostname_character_limit]}"
75
+ theme_name = "Development (#{identifier})"
62
76
 
63
77
  ShopifyCli::DB.set(development_theme_name: theme_name)
64
78
 
@@ -17,12 +17,20 @@ module ShopifyCli
17
17
  end
18
18
 
19
19
  def read
20
- path.read
20
+ if text?
21
+ path.read
22
+ else
23
+ path.read(mode: "rb")
24
+ end
21
25
  end
22
26
 
23
- def write(*args)
27
+ def write(content)
24
28
  path.parent.mkpath unless path.parent.directory?
25
- path.write(*args)
29
+ if text?
30
+ path.write(content)
31
+ else
32
+ path.write(content, 0, mode: "wb")
33
+ end
26
34
  end
27
35
 
28
36
  def delete
@@ -59,6 +59,13 @@ module ShopifyCli
59
59
  @globs = globs
60
60
  end
61
61
 
62
+ def add_patterns(patterns)
63
+ regexes, globs = patterns_to_regexes_and_globs(patterns)
64
+
65
+ @regexes += regexes
66
+ @globs += globs
67
+ end
68
+
62
69
  def match?(path)
63
70
  path = path.to_s
64
71
 
@@ -256,7 +256,7 @@ module ShopifyCli
256
256
 
257
257
  attachment = body.dig("asset", "attachment")
258
258
  value = if attachment
259
- file.write(Base64.decode64(attachment), 0, mode: "wb")
259
+ file.write(Base64.decode64(attachment))
260
260
  else
261
261
  file.write(body.dig("asset", "value"))
262
262
  end
@@ -1,3 +1,3 @@
1
1
  module ShopifyCli
2
- VERSION = "2.2.0"
2
+ VERSION = "2.4.0"
3
3
  end
data/lib/shopify_cli.rb CHANGED
@@ -94,6 +94,8 @@ module ShopifyCli
94
94
  )
95
95
  end
96
96
 
97
+ autoload :Constants, "shopify-cli/constants"
98
+ autoload :Environment, "shopify-cli/environment"
97
99
  autoload :AdminAPI, "shopify-cli/admin_api"
98
100
  autoload :API, "shopify-cli/api"
99
101
  autoload :Command, "shopify-cli/command"
@@ -132,7 +134,7 @@ module ShopifyCli
132
134
  Context.load_messages(ShopifyCli::Messages::MESSAGES)
133
135
 
134
136
  def self.cache_dir
135
- cache_dir = if ENV.key?("RUNNING_SHOPIFY_CLI_TESTS")
137
+ cache_dir = if Environment.running_tests?
136
138
  TEMP_DIR
137
139
  elsif ENV["LOCALAPPDATA"].nil?
138
140
  File.join(File.expand_path(ENV.fetch("XDG_CACHE_HOME", "~/.cache")), TOOL_NAME)
@@ -147,7 +149,7 @@ module ShopifyCli
147
149
  end
148
150
 
149
151
  def self.tool_config_path
150
- if ENV.key?("RUNNING_SHOPIFY_CLI_TESTS")
152
+ if Environment.running_tests?
151
153
  TEMP_DIR
152
154
  elsif ENV["APPDATA"].nil?
153
155
  File.join(File.expand_path(ENV.fetch("XDG_CONFIG_HOME", "~/.config")), TOOL_NAME)
data/shopify-cli.gemspec CHANGED
@@ -39,10 +39,10 @@ Gem::Specification.new do |spec|
39
39
  # `/usr/local/bin/shopify` to that script, in order to "lock" the Ruby used to
40
40
  # a single Ruby (useful for debugging in multi-Ruby environments)
41
41
 
42
- spec.add_development_dependency("bundler", "~> 2.1.4")
42
+ spec.add_development_dependency("bundler", "~> 2.2.2")
43
43
  spec.add_development_dependency("rake", "~> 12.3", ">= 12.3.3")
44
44
  spec.add_development_dependency("minitest", "~> 5.0")
45
45
 
46
- spec.add_dependency("listen", "~> 3.5")
47
- spec.add_dependency("theme-check", "~> 1.1")
46
+ spec.add_dependency("listen", "~> 3.7.0")
47
+ spec.add_dependency("theme-check", "~> 1.4.0")
48
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-03 00:00:00.000000000 Z
11
+ date: 2021-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.4
19
+ version: 2.2.2
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.1.4
26
+ version: 2.2.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,28 +64,28 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '3.5'
67
+ version: 3.7.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '3.5'
74
+ version: 3.7.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: theme-check
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '1.1'
81
+ version: 1.4.0
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '1.1'
88
+ version: 1.4.0
89
89
  description: |
90
90
  Shopify CLI helps you build Shopify apps faster. It quickly scaffolds Node.js
91
91
  and Ruby on Rails embedded apps. It also automates many common tasks in the
@@ -105,7 +105,7 @@ files:
105
105
  - ".github/ISSUE_TEMPLATE.md"
106
106
  - ".github/PULL_REQUEST_TEMPLATE.md"
107
107
  - ".github/probots.yml"
108
- - ".github/workflows/build.yml"
108
+ - ".github/workflows/shopify.yml"
109
109
  - ".github/workflows/triage.yml"
110
110
  - ".gitignore"
111
111
  - ".rubocop.yml"
@@ -114,6 +114,8 @@ files:
114
114
  - ".tmp/.gitkeep"
115
115
  - ".tmp/sv/.gitkeep"
116
116
  - CHANGELOG.md
117
+ - CONTRIBUTING.md
118
+ - Dockerfile
117
119
  - Gemfile
118
120
  - Gemfile.lock
119
121
  - LICENSE
@@ -139,6 +141,9 @@ files:
139
141
  - docs/help/start-app/index.md
140
142
  - docs/index.md
141
143
  - ext/shopify-cli/extconf.rb
144
+ - ext/shopify-extensions/extconf.rb
145
+ - ext/shopify-extensions/shopify_extensions.rb
146
+ - ext/shopify-extensions/version
142
147
  - install.sh
143
148
  - lib/docgen/class_template.md.erb
144
149
  - lib/docgen/index_template.md.erb
@@ -192,14 +197,24 @@ files:
192
197
  - lib/project_types/extension/forms/questions/ask_app.rb
193
198
  - lib/project_types/extension/forms/questions/ask_name.rb
194
199
  - lib/project_types/extension/forms/questions/ask_registration.rb
200
+ - lib/project_types/extension/forms/questions/ask_template.rb
195
201
  - lib/project_types/extension/forms/questions/ask_type.rb
196
202
  - lib/project_types/extension/messages/message_loading.rb
197
203
  - lib/project_types/extension/messages/messages.rb
198
204
  - lib/project_types/extension/models/app.rb
205
+ - lib/project_types/extension/models/development_server.rb
206
+ - lib/project_types/extension/models/development_server_requirements.rb
199
207
  - lib/project_types/extension/models/lazy_specification_handler.rb
200
208
  - lib/project_types/extension/models/npm_package.rb
201
209
  - lib/project_types/extension/models/product.rb
202
210
  - lib/project_types/extension/models/registration.rb
211
+ - lib/project_types/extension/models/server_config/base.rb
212
+ - lib/project_types/extension/models/server_config/development.rb
213
+ - lib/project_types/extension/models/server_config/development_entries.rb
214
+ - lib/project_types/extension/models/server_config/development_renderer.rb
215
+ - lib/project_types/extension/models/server_config/extension.rb
216
+ - lib/project_types/extension/models/server_config/root.rb
217
+ - lib/project_types/extension/models/server_config/user.rb
203
218
  - lib/project_types/extension/models/specification.rb
204
219
  - lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb
205
220
  - lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb
@@ -223,6 +238,7 @@ files:
223
238
  - lib/project_types/extension/tasks/get_apps.rb
224
239
  - lib/project_types/extension/tasks/get_extensions.rb
225
240
  - lib/project_types/extension/tasks/get_product.rb
241
+ - lib/project_types/extension/tasks/run_extension_command.rb
226
242
  - lib/project_types/extension/tasks/update_draft.rb
227
243
  - lib/project_types/extension/tasks/user_errors.rb
228
244
  - lib/project_types/node/cli.rb
@@ -256,8 +272,10 @@ files:
256
272
  - lib/project_types/script/config/extension_points.yml
257
273
  - lib/project_types/script/errors.rb
258
274
  - lib/project_types/script/forms/create.rb
275
+ - lib/project_types/script/graphql/app_script_set.graphql
259
276
  - lib/project_types/script/graphql/app_script_update_or_create.graphql
260
277
  - lib/project_types/script/graphql/get_app_scripts.graphql
278
+ - lib/project_types/script/graphql/module_upload_url_generate.graphql
261
279
  - lib/project_types/script/graphql/script_service_proxy.graphql
262
280
  - lib/project_types/script/layers/application/build_script.rb
263
281
  - lib/project_types/script/layers/application/create_script.rb
@@ -270,6 +288,7 @@ files:
270
288
  - lib/project_types/script/layers/domain/push_package.rb
271
289
  - lib/project_types/script/layers/domain/script_json.rb
272
290
  - lib/project_types/script/layers/domain/script_project.rb
291
+ - lib/project_types/script/layers/infrastructure/api_clients.rb
273
292
  - lib/project_types/script/layers/infrastructure/command_runner.rb
274
293
  - lib/project_types/script/layers/infrastructure/errors.rb
275
294
  - lib/project_types/script/layers/infrastructure/extension_point_repository.rb
@@ -282,6 +301,7 @@ files:
282
301
  - lib/project_types/script/layers/infrastructure/push_package_repository.rb
283
302
  - lib/project_types/script/layers/infrastructure/script_project_repository.rb
284
303
  - lib/project_types/script/layers/infrastructure/script_service.rb
304
+ - lib/project_types/script/layers/infrastructure/script_uploader.rb
285
305
  - lib/project_types/script/messages/messages.rb
286
306
  - lib/project_types/script/tasks/ensure_env.rb
287
307
  - lib/project_types/script/ui/error_handler.rb
@@ -322,6 +342,7 @@ files:
322
342
  - lib/shopify-cli/commands/version.rb
323
343
  - lib/shopify-cli/commands/whoami.rb
324
344
  - lib/shopify-cli/connect.rb
345
+ - lib/shopify-cli/constants.rb
325
346
  - lib/shopify-cli/context.rb
326
347
  - lib/shopify-cli/core.rb
327
348
  - lib/shopify-cli/core/entry_point.rb
@@ -330,6 +351,7 @@ files:
330
351
  - lib/shopify-cli/core/help_resolver.rb
331
352
  - lib/shopify-cli/core/monorail.rb
332
353
  - lib/shopify-cli/db.rb
354
+ - lib/shopify-cli/environment.rb
333
355
  - lib/shopify-cli/feature.rb
334
356
  - lib/shopify-cli/form.rb
335
357
  - lib/shopify-cli/git.rb
@@ -1,28 +0,0 @@
1
- name: CI
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- name: Ruby ${{ matrix.version }}
8
- runs-on: macos-latest
9
- strategy:
10
- matrix:
11
- version:
12
- - 3.0.0
13
- - 2.6.6
14
- - 2.7.1
15
- steps:
16
- - uses: actions/checkout@v2
17
-
18
- - name: Set up Ruby ${{ matrix.version }}
19
- uses: ruby/setup-ruby@v1
20
- with:
21
- ruby-version: ${{ matrix.version }}
22
- bundler-cache: true
23
-
24
- - name: Install Dependencies
25
- run: bundle install
26
-
27
- - name: Run Tests
28
- run: bundle exec rake