bootic_cli 0.9.3 → 0.9.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64db13bc720e2ff73d52f53f170ab8e0f320736b2ce2d59f17b6a9484c59ab18
4
- data.tar.gz: 6a430f14bf10f222943c216a80b1d0b46fa35bbd4d0eafaaf8f89f31346585c4
3
+ metadata.gz: 4e9689455a4845de27825aa295f27f84c1e45035bbb350413f85f171a26e4bd0
4
+ data.tar.gz: ce296652260b9f18af912d636272b6df039be1207584c2b6d619ecfd3cfb1331
5
5
  SHA512:
6
- metadata.gz: c120a547235bb4cdd35ae63fdc029bcd972362f52f0e49a6c845933d85a443d7e1309c366e52433785c0a867156c477e883d1108e09f1d2ccea0f3b59c00332a
7
- data.tar.gz: 309c38cd514887e071fc631a78d4229c928e8c533601afff2568905a8e324876c90fe46a0b96b9e6164984d3db66192093c6302142a135cac03976991c600a9d
6
+ metadata.gz: e3b44f183224b102820bc1f8a4f200d43d277fb385e973d5a792144cda1cc16ea852209c084d364436226dd72a7b377f444e4c9e6aecf70dcf9abe8618367756
7
+ data.tar.gz: 855814910c7e021eee1386a2fc1fea56384fd8dad25eead5d4438be5824ff0a9afaecd51c8d3c7ae439d049e17c43eabfd1fc3a49ca5a6527f11d1ce40dcd760
@@ -147,6 +147,8 @@ module BooticCli
147
147
 
148
148
  diff = BooticCli::Themes::ThemeDiff.new(source: local_theme, target: remote_theme)
149
149
  if diff.any?
150
+ # puts diff.summary
151
+
150
152
  if prompt.yes_or_no?("There are differences between the remote theme and your local copy. Sync now?", true)
151
153
  workflows.sync(local_theme, remote_theme)
152
154
  prompt.say "Synced!", :cyan
@@ -30,25 +30,37 @@ module BooticCli
30
30
  end
31
31
 
32
32
  ASSETS_DIR = 'assets'.freeze
33
- TEMPLATE_PATTERNS = ['sections/*.html', '*.html', '*.css', '*.js', '*.json', 'theme.yml'].freeze
33
+ TEMPLATE_PATTERNS = ['sections/*.html', '*.html', '*.css', '*.js', '*.json', '*.yml'].freeze
34
34
  ASSET_PATTERNS = [File.join(ASSETS_DIR, '*')].freeze
35
35
 
36
+ ASSET_PATH_REGEX = /^assets\/[^\/]+$/.freeze
37
+ TEMPLATE_PATH_REGEX = /^[^\/]+\.(html|css|scss|js|json|yml)$/.freeze
38
+ SECTION_PATH_REGEX = /^sections\/[^\/]+.html$/.freeze
39
+
36
40
  def self.resolve_path(path, dir)
37
41
  File.expand_path(path).sub(File.expand_path(dir) + '/', '')
38
42
  end
39
43
 
40
- # helper to resolve the right type (Template or Asset) from a local path
44
+ # helper to resolve the right type (Template or Asset) from a local path
41
45
  # this is not part of the generic Theme interface
42
- def self.resolve_type(path)
43
- path =~ /assets\// ? :asset : :template
46
+ def self.resolve_type(path, dir)
47
+ relative_path = resolve_path(path, dir)
48
+
49
+ if relative_path[ASSET_PATH_REGEX]
50
+ :asset
51
+ elsif relative_path[TEMPLATE_PATH_REGEX] || relative_path[SECTION_PATH_REGEX]
52
+ :template
53
+ end
44
54
  end
45
55
 
46
56
  def self.resolve_file(path, workdir)
47
- file = File.new(path)
48
- type = resolve_type(path)
57
+ unless type = resolve_type(path, workdir)
58
+ return # neither an asset or template
59
+ end
49
60
 
50
61
  # initialize a new asset or template as it might be a new file
51
- item = if path =~ /assets\//
62
+ file = File.new(path)
63
+ item = if type == :asset
52
64
  file_name = File.basename(path)
53
65
  ThemeAsset.new(file_name, file, file.mtime.utc)
54
66
  else
@@ -9,6 +9,10 @@ module BooticCli
9
9
  templates.any? || assets.any?
10
10
  end
11
11
 
12
+ def count
13
+ templates.count + assets.count
14
+ end
15
+
12
16
  def templates
13
17
  @templates ||= find_missing_files(source.templates, target.templates)
14
18
  end
@@ -9,6 +9,16 @@ module BooticCli
9
9
  @force_update = force_update
10
10
  end
11
11
 
12
+ def summary
13
+ msg = []
14
+ msg.push(" - Updated in source: #{updated_in_source.count}") if updated_in_source.any?
15
+ msg.push(" - Updated in target: #{updated_in_target.count}") if updated_in_target.any?
16
+ msg.push(" - Missing in target: #{missing_in_target.count}") if missing_in_target.any?
17
+ msg.push(" - Missing in source: #{missing_in_source.count}") if missing_in_source.any?
18
+ msg.unshift("Summary:") if msg.any?
19
+ msg.join("\n")
20
+ end
21
+
12
22
  def any?
13
23
  updated_in_source.any? || updated_in_target.any? || missing_in_target.any? || missing_in_source.any?
14
24
  end
@@ -28,6 +28,10 @@ module BooticCli
28
28
  templates.any? # || assets.any?
29
29
  end
30
30
 
31
+ def count
32
+ templates.count
33
+ end
34
+
31
35
  def templates
32
36
  @templates ||= map_pair(source.templates, target.templates) do |a, b|
33
37
  diff = Diffy::Diff.new(normalize_endings(b.body), normalize_endings(a.body), context: 1)
@@ -168,6 +168,8 @@ module BooticCli
168
168
  changes = ThemeDiff.new(source: local_theme, target: remote_theme)
169
169
  if changes.any?
170
170
  prompt.say "There are differences between your local and the remote version of your shop's development theme."
171
+ puts changes.summary
172
+
171
173
  if prompt.yes_or_no? "Push your local changes now?", true
172
174
  push(local_theme, remote_theme, delete: true)
173
175
  else
@@ -326,6 +328,11 @@ module BooticCli
326
328
  return if File.basename(path)[0] == '.' # filter out .lock and .state
327
329
 
328
330
  item, type = FSTheme.resolve_file(path, dir)
331
+ unless item
332
+ puts "Not a template or asset: #{path}"
333
+ return
334
+ end
335
+
329
336
  success = handle_file_errors(type, item) do
330
337
  case type
331
338
  when :template
@@ -338,7 +345,11 @@ module BooticCli
338
345
  end
339
346
 
340
347
  def delete_file(theme, path, dir)
341
- type = FSTheme.resolve_type(path)
348
+ unless type = FSTheme.resolve_type(path, dir)
349
+ # puts "Not a template or asset: #{path}"
350
+ return
351
+ end
352
+
342
353
  success = case type
343
354
  when :template
344
355
  file_name = FSTheme.resolve_path(path, dir)
@@ -346,8 +357,6 @@ module BooticCli
346
357
  when :asset
347
358
  file_name = File.basename(path)
348
359
  theme.remove_asset(file_name)
349
- else
350
- raise "Invalid type: #{type}"
351
360
  end
352
361
  puts "Deleted remote #{type}: #{highlight(file_name)}" if success
353
362
  end
@@ -1,3 +1,3 @@
1
1
  module BooticCli
2
- VERSION = '0.9.3'
2
+ VERSION = '0.9.5'
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.9.3
4
+ version: 0.9.5
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: 2023-04-22 00:00:00.000000000 Z
12
+ date: 2023-06-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor