shopify_theme 0.0.15 → 0.0.16
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 +7 -0
- data/README.md +35 -11
- data/doc/how_to_find_theme_id.png +0 -0
- data/lib/shopify_theme.rb +7 -2
- data/lib/shopify_theme/cli.rb +31 -8
- data/lib/shopify_theme/version.rb +1 -1
- metadata +18 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 09f5dc9eab1ad2d39124fc370b4e84047adf062a
|
4
|
+
data.tar.gz: 1119a4e02bff799bf80a7d91462b5c34bc68d1d6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 52d308c07b4d8c061c6971457eabb519fcaa87c205fefd27b2360d2fc3bcf5b4e1669ca981e897b3d493e4d149f2ac907896b6c37f98fb408d4387e02af88e69
|
7
|
+
data.tar.gz: 6fd1f422f49cc2ab4a129c1d5d6fc33eae3d6743a036ba02453e900bafd1e4f6de196cb3fcf9650d59d8f97094ebd540b5b83e43c2cbf2a447b7532d68518387
|
data/README.md
CHANGED
@@ -1,19 +1,36 @@
|
|
1
1
|
# Edit your Shopify theme locally
|
2
2
|
|
3
|
-
The Shopify theme gem is a command line tool that lets you make live changes to your
|
3
|
+
The Shopify theme gem is a command line tool that lets you make live changes to themes on your Shopify store. If the command line is scary, check out the [Desktop Theme Editor app](http://apps.shopify.com/desktop-theme-editor).
|
4
4
|
|
5
5
|
It will watch your local folders for any changes in your theme (including adding and removing files) and will update your .myshopify.com store to the latest changes.
|
6
6
|
|
7
|
+

|
8
|
+
|
9
|
+
You do not need to make changes to your default theme. You can leverage the theme preview feature of Shopify
|
10
|
+
that allows you to view what an unpublished theme looks like on your Shopify store. This means you don't need to
|
11
|
+
sign up for extra accounts and keep your shop up to date. You will however have a blue bar that shows up that you can
|
12
|
+
remove via the web inspector in Chrome or Safari.
|
13
|
+
|
7
14
|
# Requirements
|
8
15
|
|
9
|
-
Ruby 1.9
|
16
|
+
This gem works with OS X or Windows with Ruby 1.9.
|
17
|
+
|
18
|
+
First time installing Ruby on windows? Try [Rubyinstaller](http://http://rubyinstaller.org/).
|
10
19
|
|
11
20
|
# Installation
|
12
21
|
|
22
|
+
To install the shopify_theme gem use 'gem install' (you might have use 'sudo gem install')
|
23
|
+
|
13
24
|
```
|
14
25
|
gem install shopify_theme [optional_theme_id]
|
15
26
|
```
|
16
27
|
|
28
|
+
to update to the latest version
|
29
|
+
|
30
|
+
```
|
31
|
+
gem update shopify_theme
|
32
|
+
```
|
33
|
+
|
17
34
|
# Usage
|
18
35
|
|
19
36
|
Generate the config file. Go get a valid api_key and password for your store head to `https://[your store].myshopify.com/admin/apps/private` and generate a private application. Default it adds the main theme, if you want to edit one of your other themes, add the `theme_id`.
|
@@ -75,15 +92,22 @@ theme open
|
|
75
92
|
|
76
93
|
# Common Problems
|
77
94
|
|
78
|
-
|
79
|
-
|
80
|
-
The gem doesn't install one of the dependencies you need in order to use this gem correctly on Windows. You
|
81
|
-
can get around this by either executing `gem install wdm` or by creating a Gemfile in your theme project such
|
82
|
-
as the following:
|
95
|
+
## How do I edit a theme that isn't my shops main theme?
|
83
96
|
|
84
|
-
|
85
|
-
|
97
|
+
This can be done by setting the `theme_id` field in `config.yml` which was created when you
|
98
|
+
ran `theme configure`. Your file should look like the following:
|
86
99
|
|
87
|
-
|
88
|
-
|
100
|
+
```yaml
|
101
|
+
---
|
102
|
+
:api_key: 7a8da86d3dd730b67a357dedabaac5d6
|
103
|
+
:password: 552338ce0d3aba7fc501dcf99bc57a81
|
104
|
+
:store: little-plastics.myshopify.com
|
105
|
+
:theme_id: 0987654321
|
89
106
|
```
|
107
|
+
|
108
|
+
## Where can I find my Theme Id?
|
109
|
+
|
110
|
+
Currently the best way to find the id of the theme you want to edit is to go to the theme in your
|
111
|
+
shops admin and grab it from the url.
|
112
|
+
|
113
|
+

|
Binary file
|
data/lib/shopify_theme.rb
CHANGED
@@ -5,14 +5,15 @@ module ShopifyTheme
|
|
5
5
|
@@total_api_calls = 40
|
6
6
|
|
7
7
|
NOOPParser = Proc.new {|data, format| {} }
|
8
|
-
TIMER_RESET =
|
9
|
-
PERMIT_LOWER_LIMIT =
|
8
|
+
TIMER_RESET = 10
|
9
|
+
PERMIT_LOWER_LIMIT = 3
|
10
10
|
|
11
11
|
def self.test?
|
12
12
|
ENV['test']
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.manage_timer(response)
|
16
|
+
return unless response.headers['x-shopify-shop-api-call-limit']
|
16
17
|
@@current_api_call_count, @@total_api_calls = response.headers['x-shopify-shop-api-call-limit'].split('/')
|
17
18
|
@@current_timer = Time.now if @current_timer.nil?
|
18
19
|
end
|
@@ -40,6 +41,10 @@ module ShopifyTheme
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
44
|
+
def self.api_usage
|
45
|
+
"[API Limit: #{@@current_api_call_count || "??"}/#{@@total_api_calls || "??"}]"
|
46
|
+
end
|
47
|
+
|
43
48
|
|
44
49
|
def self.asset_list
|
45
50
|
# HTTParty parser chokes on assest listing, have it noop
|
data/lib/shopify_theme/cli.rb
CHANGED
@@ -38,12 +38,17 @@ module ShopifyTheme
|
|
38
38
|
|
39
39
|
desc "download FILE", "download the shops current theme assets"
|
40
40
|
method_option :quiet, :type => :boolean, :default => false
|
41
|
+
method_option :exclude
|
41
42
|
def download(*keys)
|
42
43
|
assets = keys.empty? ? ShopifyTheme.asset_list : keys
|
43
44
|
|
45
|
+
if options['exclude']
|
46
|
+
assets = assets.delete_if { |asset| asset =~ Regexp.new(options['exclude']) }
|
47
|
+
end
|
48
|
+
|
44
49
|
assets.each do |asset|
|
45
50
|
download_asset(asset)
|
46
|
-
say("Downloaded: #{asset}", :green) unless options['quiet']
|
51
|
+
say("#{ShopifyTheme.api_usage} Downloaded: #{asset}", :green) unless options['quiet']
|
47
52
|
end
|
48
53
|
say("Done.", :green) unless options['quiet']
|
49
54
|
end
|
@@ -157,6 +162,7 @@ module ShopifyTheme
|
|
157
162
|
end
|
158
163
|
|
159
164
|
def download_asset(key)
|
165
|
+
return unless valid?(key)
|
160
166
|
notify_and_sleep("Approaching limit of API permits. Naptime until more permits become available!") if ShopifyTheme.needs_sleep?
|
161
167
|
asset = ShopifyTheme.get_asset(key)
|
162
168
|
if asset['value']
|
@@ -173,6 +179,7 @@ module ShopifyTheme
|
|
173
179
|
end
|
174
180
|
|
175
181
|
def send_asset(asset, quiet=false)
|
182
|
+
return unless valid?(asset)
|
176
183
|
time = Time.now
|
177
184
|
data = {:key => asset}
|
178
185
|
content = File.read(asset)
|
@@ -183,19 +190,21 @@ module ShopifyTheme
|
|
183
190
|
data.merge!(:value => content)
|
184
191
|
end
|
185
192
|
|
186
|
-
|
193
|
+
response = ShopifyTheme.send_asset(data)
|
194
|
+
if response.success?
|
187
195
|
say("[" + time.strftime(TIMEFORMAT) + "] Uploaded: #{asset}", :green) unless quiet
|
188
196
|
else
|
189
|
-
|
197
|
+
report_error(time, "Could not upload #{asset}", response)
|
190
198
|
end
|
191
199
|
end
|
192
200
|
|
193
201
|
def delete_asset(key, quiet=false)
|
202
|
+
return unless valid?(key)
|
194
203
|
time = Time.now
|
195
204
|
if (response = ShopifyTheme.delete_asset(key)).success?
|
196
205
|
say("[" + time.strftime(TIMEFORMAT) + "] Removed: #{key}", :green) unless quiet
|
197
206
|
else
|
198
|
-
|
207
|
+
report_error(time, "Could not remove #{key}", response)
|
199
208
|
end
|
200
209
|
end
|
201
210
|
|
@@ -204,19 +213,33 @@ module ShopifyTheme
|
|
204
213
|
ShopifyTheme.sleep
|
205
214
|
end
|
206
215
|
|
216
|
+
def valid?(key)
|
217
|
+
return true if DEFAULT_WHITELIST.include?(key.split('/').first + "/")
|
218
|
+
say("'#{key}' is not in a valid file for theme uploads", :yellow)
|
219
|
+
say("Files need to be in one of the following subdirectories: #{DEFAULT_WHITELIST.join(' ')}", :yellow)
|
220
|
+
false
|
221
|
+
end
|
222
|
+
|
223
|
+
def report_error(time, message, response)
|
224
|
+
say("[#{time.strftime(TIMEFORMAT)}] Error: #{message}", :red)
|
225
|
+
say("Error Details: #{errors_from_response(response)}", :yellow)
|
226
|
+
end
|
227
|
+
|
207
228
|
def errors_from_response(response)
|
208
|
-
|
229
|
+
object = {status: response.headers['status'], request_id: response.headers['x-request-id']}
|
209
230
|
|
210
|
-
errors = response.parsed_response["errors"]
|
231
|
+
errors = response.parsed_response ? response.parsed_response["errors"] : response.body
|
211
232
|
|
212
|
-
case errors
|
233
|
+
object[:errors] = case errors
|
213
234
|
when NilClass
|
214
235
|
''
|
215
236
|
when String
|
216
|
-
errors
|
237
|
+
errors.strip
|
217
238
|
else
|
218
239
|
errors.values.join(", ")
|
219
240
|
end
|
241
|
+
object.delete(:errors) if object[:errors].length <= 0
|
242
|
+
object
|
220
243
|
end
|
221
244
|
end
|
222
245
|
end
|
metadata
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify_theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.16
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- John Duff
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: thor
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.14.4
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 0.14.4
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: httparty
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,65 +55,57 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: filewatcher
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: launchy
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rake
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: minitest
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: 5.0.0
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: 5.0.0
|
126
111
|
description: Command line tool to help with developing Shopify themes. Provides simple
|
@@ -141,6 +126,7 @@ files:
|
|
141
126
|
- README.md
|
142
127
|
- Rakefile
|
143
128
|
- bin/theme
|
129
|
+
- doc/how_to_find_theme_id.png
|
144
130
|
- lib/shopify_theme.rb
|
145
131
|
- lib/shopify_theme/cli.rb
|
146
132
|
- lib/shopify_theme/version.rb
|
@@ -150,33 +136,26 @@ files:
|
|
150
136
|
homepage: https://github.com/Shopify/shopify_theme
|
151
137
|
licenses:
|
152
138
|
- MIT
|
139
|
+
metadata: {}
|
153
140
|
post_install_message:
|
154
141
|
rdoc_options: []
|
155
142
|
require_paths:
|
156
143
|
- lib
|
157
144
|
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
-
none: false
|
159
145
|
requirements:
|
160
|
-
- -
|
146
|
+
- - '>='
|
161
147
|
- !ruby/object:Gem::Version
|
162
148
|
version: '0'
|
163
|
-
segments:
|
164
|
-
- 0
|
165
|
-
hash: -577831141083631280
|
166
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
|
-
none: false
|
168
150
|
requirements:
|
169
|
-
- -
|
151
|
+
- - '>='
|
170
152
|
- !ruby/object:Gem::Version
|
171
153
|
version: '0'
|
172
|
-
segments:
|
173
|
-
- 0
|
174
|
-
hash: -577831141083631280
|
175
154
|
requirements: []
|
176
155
|
rubyforge_project: shopify_theme
|
177
|
-
rubygems_version:
|
156
|
+
rubygems_version: 2.0.3
|
178
157
|
signing_key:
|
179
|
-
specification_version:
|
158
|
+
specification_version: 4
|
180
159
|
summary: Command line tool for developing themes
|
181
160
|
test_files:
|
182
161
|
- spec/spec_helper.rb
|