shopify-cli 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/RELEASING.md +2 -0
- data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +3 -0
- data/lib/project_types/script/layers/infrastructure/script_service.rb +17 -2
- data/lib/project_types/theme/cli.rb +1 -0
- data/lib/project_types/theme/commands/init.rb +42 -0
- data/lib/project_types/theme/commands/serve.rb +3 -1
- data/lib/project_types/theme/messages/messages.rb +11 -0
- data/lib/shopify-cli/context.rb +1 -1
- data/lib/shopify-cli/http_request.rb +6 -0
- data/lib/shopify-cli/theme/dev_server.rb +4 -4
- data/lib/shopify-cli/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a3d1792a9f0fef3212722391bc41ac2cba899f60b65c61d75c624fb61aef1dc
|
4
|
+
data.tar.gz: 4927100649c20fbedd270715ff5e34fe89138548c2355f8fdff68ed19bdc6ce4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cdddb7dc42cb7df1baa92baea6da019b180092aa54d40185a72a8f0552d1f894bf896fedc007ded724023bdce163a13fb16d7e8eb4f11554aafc19fbdedf318
|
7
|
+
data.tar.gz: 61e74dc5788edc4653902bf2a42ddc8ca9da3535bc4b1779a0ed73b475940c423a61374e6f5eb18c5e635115ea86634b29c0ebf3f081bce28cb7fec2fd4071cd
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
Unreleased
|
2
2
|
------
|
3
3
|
|
4
|
+
Version 2.0.1
|
5
|
+
-------------
|
6
|
+
* [#1295](https://github.com/Shopify/shopify-cli/pull/1295): Ignore files at the root of a theme app extension project
|
7
|
+
* [#1296](https://github.com/Shopify/shopify-cli/pull/1296): Fix issue [#1294](https://github.com/Shopify/shopify-cli/issues/1294) regarding call to Windows `start` command with URL.
|
8
|
+
* [#1298](https://github.com/Shopify/shopify-cli/pull/1298): Fix error in `theme serve` command
|
9
|
+
* [#1301](https://github.com/Shopify/shopify-cli/pull/1301): Add `theme init` command
|
10
|
+
|
4
11
|
Version 2.0.0
|
5
12
|
-------------
|
6
13
|
* Adds support for theme development
|
data/Gemfile.lock
CHANGED
data/RELEASING.md
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
1. Update the version of Shopify CLI in `lib/shopify-cli/version.rb`
|
17
17
|
|
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
|
+
|
18
20
|
1. Add an entry for the new release to `CHANGELOG.md`
|
19
21
|
|
20
22
|
1. Commit the changes with a commit message like "Packaging for release X.Y.Z"
|
@@ -64,6 +64,9 @@ module Extension
|
|
64
64
|
|
65
65
|
def validate(filename)
|
66
66
|
dirname = File.dirname(filename)
|
67
|
+
# Skip files in the root of the directory tree
|
68
|
+
return false if dirname == "."
|
69
|
+
|
67
70
|
unless SUPPORTED_BUCKETS.include?(dirname)
|
68
71
|
raise Extension::Errors::InvalidFilenameError, "Invalid directory: #{dirname}"
|
69
72
|
end
|
@@ -75,19 +75,30 @@ module Script
|
|
75
75
|
class ScriptServiceAPI < ShopifyCli::API
|
76
76
|
property(:api_key, accepts: String)
|
77
77
|
|
78
|
+
LOCAL_INSTANCE_URL = "https://script-service.myshopify.io"
|
79
|
+
|
78
80
|
def self.query(ctx, query_name, api_key: nil, variables: {})
|
79
81
|
api_client(ctx, api_key).query(query_name, variables: variables)
|
80
82
|
end
|
81
83
|
|
82
84
|
def self.api_client(ctx, api_key)
|
85
|
+
instance_url = spin_instance_url || LOCAL_INSTANCE_URL
|
83
86
|
new(
|
84
87
|
ctx: ctx,
|
85
|
-
url: "
|
88
|
+
url: "#{instance_url}/graphql",
|
86
89
|
token: "",
|
87
90
|
api_key: api_key
|
88
91
|
)
|
89
92
|
end
|
90
93
|
|
94
|
+
def self.spin_instance_url
|
95
|
+
workspace = ENV["SPIN_WORKSPACE"]
|
96
|
+
namespace = ENV["SPIN_NAMESPACE"]
|
97
|
+
return if workspace.nil? || namespace.nil?
|
98
|
+
|
99
|
+
"https://script-service.#{workspace}.#{namespace}.us.spin.dev"
|
100
|
+
end
|
101
|
+
|
91
102
|
def auth_headers(*)
|
92
103
|
tokens = { "APP_KEY" => api_key }.compact.to_json
|
93
104
|
{ "X-Shopify-Authenticated-Tokens" => tokens }
|
@@ -104,7 +115,7 @@ module Script
|
|
104
115
|
private_constant(:PartnersProxyAPI)
|
105
116
|
|
106
117
|
def script_service_request(query_name:, variables: nil, **options)
|
107
|
-
resp = if
|
118
|
+
resp = if bypass_partners_proxy
|
108
119
|
ScriptServiceAPI.query(ctx, query_name, variables: variables, **options)
|
109
120
|
else
|
110
121
|
proxy_through_partners(query_name: query_name, variables: variables, **options)
|
@@ -113,6 +124,10 @@ module Script
|
|
113
124
|
resp
|
114
125
|
end
|
115
126
|
|
127
|
+
def bypass_partners_proxy
|
128
|
+
!ENV["BYPASS_PARTNERS_PROXY"].nil?
|
129
|
+
end
|
130
|
+
|
116
131
|
def proxy_through_partners(query_name:, variables: nil, **options)
|
117
132
|
options[:variables] = variables.to_json if variables
|
118
133
|
resp = PartnersProxyAPI.query(ctx, query_name, **options)
|
@@ -6,6 +6,7 @@ module Theme
|
|
6
6
|
end
|
7
7
|
|
8
8
|
class Command < ShopifyCli::ProjectCommands
|
9
|
+
subcommand :Init, "init", Project.project_filepath("commands/init")
|
9
10
|
subcommand :Serve, "serve", Project.project_filepath("commands/serve")
|
10
11
|
subcommand :Pull, "pull", Project.project_filepath("commands/pull")
|
11
12
|
subcommand :Push, "push", Project.project_filepath("commands/push")
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Theme
|
4
|
+
class Command
|
5
|
+
class Init < ShopifyCli::SubCommand
|
6
|
+
options do |parser, flags|
|
7
|
+
parser.on("-u", "--clone-url URL") { |url| flags[:clone_url] = url }
|
8
|
+
end
|
9
|
+
|
10
|
+
DEFAULT_CLONE_URL = "https://github.com/Shopify/dawn.git"
|
11
|
+
|
12
|
+
def call(args, _name)
|
13
|
+
name = args.first || ask_name
|
14
|
+
clone_url = options.flags[:clone_url] || DEFAULT_CLONE_URL
|
15
|
+
clone(clone_url, name)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.help
|
19
|
+
ShopifyCli::Context.message("theme.init.help", ShopifyCli::TOOL_NAME, ShopifyCli::TOOL_NAME)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def ask_name
|
25
|
+
CLI::UI::Prompt.ask(@ctx.message("theme.init.ask_name"))
|
26
|
+
end
|
27
|
+
|
28
|
+
def clone(url, name)
|
29
|
+
ShopifyCli::Git.clone(url, name)
|
30
|
+
|
31
|
+
@ctx.root = File.join(@ctx.root, name)
|
32
|
+
|
33
|
+
begin
|
34
|
+
@ctx.rm_r(".git")
|
35
|
+
@ctx.rm_r(".github")
|
36
|
+
rescue Errno::ENOENT => e
|
37
|
+
@ctx.debug(e)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -10,7 +10,9 @@ module Theme
|
|
10
10
|
|
11
11
|
def call(*)
|
12
12
|
flags = options.flags.dup
|
13
|
-
ShopifyCli::Theme::DevServer.start(@ctx, ".", **flags)
|
13
|
+
ShopifyCli::Theme::DevServer.start(@ctx, ".", **flags) do |syncer|
|
14
|
+
UI::SyncProgressBar.new(syncer).progress(:upload_theme!, delay_low_priority_files: true)
|
15
|
+
end
|
14
16
|
end
|
15
17
|
|
16
18
|
def self.help
|
@@ -8,6 +8,17 @@ module Theme
|
|
8
8
|
Usage: {{command:%1$s theme [ %2$s ]}}
|
9
9
|
HELP
|
10
10
|
|
11
|
+
init: {
|
12
|
+
help: <<~HELP,
|
13
|
+
{{command:%s theme init}}: Clones a Git repository to use as a starting point for building a new theme.
|
14
|
+
|
15
|
+
Usage: {{command:%s theme init [ NAME ]}}
|
16
|
+
|
17
|
+
Options:
|
18
|
+
{{command:-u, --clone-url=URL}} The Git URL to clone from. Defaults to Shopify's example theme, Dawn: https://github.com/Shopify/dawn.git
|
19
|
+
HELP
|
20
|
+
ask_name: "Theme name",
|
21
|
+
},
|
11
22
|
publish: {
|
12
23
|
confirmation: "This will change your live theme. Do you want to continue?",
|
13
24
|
deploying: "Deploying theme",
|
data/lib/shopify-cli/context.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "net/http"
|
2
|
+
require "openssl"
|
2
3
|
|
3
4
|
module ShopifyCli
|
4
5
|
class HttpRequest
|
@@ -24,8 +25,13 @@ module ShopifyCli
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def request(uri, body, headers, req)
|
28
|
+
cert_store = OpenSSL::X509::Store.new
|
29
|
+
cert_store.set_default_paths
|
30
|
+
|
27
31
|
http = ::Net::HTTP.new(uri.host, uri.port)
|
28
32
|
http.use_ssl = true
|
33
|
+
http.cert_store = cert_store
|
34
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if ENV["SSL_VERIFY_NONE"]
|
29
35
|
|
30
36
|
req.body = body unless body.nil?
|
31
37
|
req["Content-Type"] = "application/json"
|
@@ -20,7 +20,7 @@ module ShopifyCli
|
|
20
20
|
class << self
|
21
21
|
attr_accessor :ctx
|
22
22
|
|
23
|
-
def start(ctx, root, port: 9292
|
23
|
+
def start(ctx, root, port: 9292)
|
24
24
|
@ctx = ctx
|
25
25
|
theme = DevelopmentTheme.new(ctx, root: root)
|
26
26
|
ignore_filter = IgnoreFilter.from_path(root)
|
@@ -43,10 +43,10 @@ module ShopifyCli
|
|
43
43
|
CLI::UI::Frame.open(@ctx.message("theme.serve.serve")) do
|
44
44
|
ctx.print_task("Syncing theme ##{theme.id} on #{theme.shop}")
|
45
45
|
@syncer.start_threads
|
46
|
-
if
|
47
|
-
@syncer
|
46
|
+
if block_given?
|
47
|
+
yield @syncer
|
48
48
|
else
|
49
|
-
@syncer.
|
49
|
+
@syncer.upload_theme!(delay_low_priority_files: true)
|
50
50
|
end
|
51
51
|
|
52
52
|
return if stopped
|
data/lib/shopify-cli/version.rb
CHANGED
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.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -280,6 +280,7 @@ files:
|
|
280
280
|
- lib/project_types/theme/cli.rb
|
281
281
|
- lib/project_types/theme/commands/check.rb
|
282
282
|
- lib/project_types/theme/commands/delete.rb
|
283
|
+
- lib/project_types/theme/commands/init.rb
|
283
284
|
- lib/project_types/theme/commands/language_server.rb
|
284
285
|
- lib/project_types/theme/commands/package.rb
|
285
286
|
- lib/project_types/theme/commands/publish.rb
|