bootic_cli 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac3bf0e553c05ee15cb57744d5ec3c219c4985df
4
- data.tar.gz: 63daaae9646840e44425b3c1dd7b9a00aba28a6a
3
+ metadata.gz: 66ebab01b114029b6d6cff68f2957df471694fbe
4
+ data.tar.gz: f593e3f37ed9dd3cd7ec48730afd8509f4e6f480
5
5
  SHA512:
6
- metadata.gz: b3de93b783be8f16d12f4bfd442a1825047e02bfb2fa8b0ba49e0eddd6b6c8a57017c716f72da94c8b35af1f863d8cc171951db78346242904f23aa28ad75223
7
- data.tar.gz: a61f6cb78962889818b13c2641042af88aab5c6b167d39748721518e58536054f8627c3d652c52290db986bb23d8a1e8e1a2cbc1091b92dab5422f2c9b7770ea
6
+ metadata.gz: 13d97b88ee377d64743699dd420349601cecc0c7b3a94380c9771dc553094044ea33764164e85eb5e44a4e6983ba510f897047ea266e03fd0f55ab001293b0f4
7
+ data.tar.gz: 28b87bf9559eca1c3271ad74d37e2ea7f3c385d509d5ef34a677100d5edc345e5bb8ad424f6b390b6dceeb1da333b34044b49bf53cc397a5bd3727041202473c
@@ -10,7 +10,7 @@ module BooticCli
10
10
 
11
11
  def ==(other)
12
12
  # puts "Comparing with time #{self.updated_on} vs #{other.updated_on}"
13
- self.updated_on == other.updated_on
13
+ self.updated_on.to_i == other.updated_on.to_i
14
14
  end
15
15
  end
16
16
 
@@ -116,10 +116,18 @@ module BooticCli
116
116
  end
117
117
 
118
118
  def add_template(file_name, body)
119
- check_errors! theme.create_template(
119
+ params = {
120
120
  file_name: file_name,
121
121
  body: body
122
- )
122
+ }
123
+
124
+ if ts = get_updated_on(file_name)
125
+ params.merge!(last_updated_on: ts.to_i)
126
+ end
127
+
128
+ check_errors!(theme.create_template(params)).tap do |entity|
129
+ template_updated(file_name, entity)
130
+ end
123
131
  end
124
132
 
125
133
  def remove_template(file_name)
@@ -152,6 +160,18 @@ module BooticCli
152
160
  private
153
161
  attr_reader :theme
154
162
 
163
+ def get_updated_on(file_name)
164
+ if tpl = templates.find { |t| t.file_name == file_name }
165
+ tpl.updated_on
166
+ end
167
+ end
168
+
169
+ def template_updated(file_name, new_template)
170
+ if index = templates.index { |t| t.file_name == file_name }
171
+ templates[index] = ItemWithTime.new(new_template)
172
+ end
173
+ end
174
+
155
175
  def check_errors!(entity)
156
176
  if entity.has?(:errors)
157
177
  raise EntityErrors.new(entity.errors)
@@ -8,7 +8,7 @@ module BooticCli
8
8
 
9
9
  Template = Struct.new(:file_name, :body, :updated_on) do
10
10
  def ==(other)
11
- self.updated_on == other.updated_on
11
+ self.updated_on.to_i == other.updated_on.to_i
12
12
  end
13
13
  end
14
14
 
@@ -20,10 +20,11 @@ module BooticCli
20
20
  def ==(other)
21
21
  if other.digest.to_s == '' # api theme asset without a digest set
22
22
  # puts "Other has no digest, so comparing dates: #{self.updated_on} vs #{other.updated_on}"
23
- return self.updated_on == other.updated_on
23
+ return self.updated_on.to_i == other.updated_on.to_i
24
24
  end
25
25
 
26
26
  # file sizes may differ as they are served by CDN (that shrinks them)
27
+ # puts "Comparing digests:\n#{digest}\n#{other.digest}"
27
28
  self.digest == other.digest # self.file_size == other.file_size
28
29
  end
29
30
  end
@@ -324,7 +324,7 @@ module BooticCli
324
324
  def upsert_file(theme, path)
325
325
  return if File.basename(path)[0] == '.' # filter out .lock and .state
326
326
  item, type = FSTheme.resolve_file(path)
327
- handle_file_errors(type, item) do
327
+ success = handle_file_errors(type, item) do
328
328
  case type
329
329
  when :template
330
330
  theme.add_template(item.file_name, item.body)
@@ -332,7 +332,7 @@ module BooticCli
332
332
  theme.add_asset(item.file_name, item.file)
333
333
  end
334
334
  end
335
- puts "Uploaded #{type}: #{highlight(item.file_name)}"
335
+ puts "Uploaded #{type}: #{highlight(item.file_name)}" if success
336
336
  end
337
337
 
338
338
  def delete_file(theme, path)
@@ -352,15 +352,21 @@ module BooticCli
352
352
  def handle_file_errors(type, file, &block)
353
353
  begin
354
354
  yield
355
+ true
355
356
  rescue APITheme::EntityErrors => e
356
357
  fields = e.errors.map(&:field)
357
358
 
358
- error_msg = if fields.include?("file_content_type") or fields.include?("content_type")
359
+ if fields.include?('$.updated_on') || fields.include?('updated_on')
360
+ prompt.say("#{file.file_name} timestamp #{e.errors.first.messages.first}", :red)
361
+ abort
362
+ end
363
+
364
+ error_msg = if fields.include?('file_content_type') or fields.include?('content_type')
359
365
  "is an unsupported file type for #{type}s."
360
- elsif fields.include?("file_file_size") # big asset
366
+ elsif fields.include?('file_file_size') # big asset
361
367
  size_str = file.file_size.to_i > 0 ? "(#{file.file_size} KB) " : ''
362
368
  "#{size_str}is heavier than the maximum allowed for assets (1 MB)"
363
- elsif fields.include?("body") # big template
369
+ elsif fields.include?('body') # big template
364
370
  str = file.file_name[/\.(html|liquid)$/] ? "Try splitting it into smaller chunks" : "Try saving it as an asset instead"
365
371
  str += ", since templates can hold up to 64 KB of data."
366
372
  else
@@ -368,11 +374,11 @@ module BooticCli
368
374
  end
369
375
 
370
376
  prompt.say("#{file.file_name} #{error_msg}. Skipping...", :red)
371
- # abort
377
+ false # abort
372
378
 
373
379
  rescue JSON::GeneratorError => e
374
380
  prompt.say("#{file.file_name} looks like a binary file, not a template. Skipping...", :red)
375
- # abort
381
+ false # just continue, don't abort
376
382
 
377
383
  rescue Net::OpenTimeout, Net::ReadTimeout => e
378
384
  prompt.say("I'm having trouble connecting to the server. Please try again in a minute.", :red)
@@ -1,3 +1,3 @@
1
1
  module BooticCli
2
- VERSION = '0.7.1'
2
+ VERSION = '0.7.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootic_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ismael Celis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-07 00:00:00.000000000 Z
12
+ date: 2020-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor