shopify-cli 2.0.0 → 2.0.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.
- 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
|