dcm 0.1.8 → 0.1.10

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: f9f1914d67e1be3cbf168c50a24a51070753fbf8972891d1a55349c684294ba7
4
- data.tar.gz: 8a3414b26dd3f1f2339452deff3f30831dbd8496281074d9e1917f6ac18eabb7
3
+ metadata.gz: 8a06c9f22307febbe6f17ed7211f9f0608bdf468d1713837a26fc24279ae2f91
4
+ data.tar.gz: 8fc4bbee2238bd4ce765688e36c7edfa2f06ca622be1bb62b7ccf92660091c09
5
5
  SHA512:
6
- metadata.gz: 3029519ea99350fd7febe1960a57c5bc406721bc4bd76c072c97c28a92d78747c935900b5e5d8b1d7679187160cb826ec727e2a290ee46e49bde17576846da5e
7
- data.tar.gz: a579bc11adca871bedb2fa7c0da5b0b35e62c6a778bce696cef353fa14f6b6f5524ba3eef116b89ae782308c10eb7ef0d2e33c4b1ecd232f0ced258ab7acaa13
6
+ metadata.gz: d603eb5340ac67c1c340bb3384434f62fd126e3038916df9f54ed9681621eee1184a50a3a0b95a21b594957d63f91cbb7f196b3f4c14184fefddd10de8cb649c
7
+ data.tar.gz: '09bfab0501900b77f07ef86d4308ebabcd2f571133c1ca7b387e87438cd7246fbdce849e0357435427896fbc2bd2ce894e99636833ceae79ceb58afea5fc3a5f'
data/lib/cli.rb CHANGED
@@ -11,7 +11,7 @@ require_relative "codinginfo"
11
11
  require_relative "tempfile_handler"
12
12
  require_relative "diff_viewer"
13
13
  require_relative "variant_filter"
14
- require_relative "live_selector"
14
+ require_relative "fuzzy_selector"
15
15
  require_relative "list_colorizer"
16
16
  require_relative "core_ext"
17
17
  require_relative "version"
@@ -140,11 +140,13 @@ module Dcm
140
140
  end
141
141
  end
142
142
 
143
- desc "liveview FILE", "Live search and view labels in FILE (requires fzf, jq)"
144
- def liveview(file=nil)
145
- parse_file(file)
146
- .then { LiveSelector.new(_1).call }
147
- .then { puts ListColorizer.call(_1.to_s(detail: true)) }
143
+ desc "select FILE", "Fuzzy select labels in FILE (requires fzf)"
144
+ option :indented, aliases: ["-i"], type: :boolean, default: false
145
+ def select(file=nil)
146
+ list = parse_file(file)
147
+ puts FuzzySelector.new(list, "dcm cat -f {} #{file} | dcm show")
148
+ .then { _1.select_by(&:name) }
149
+ .then { _1.to_dcm(options[:indented]) }
148
150
  end
149
151
 
150
152
  desc "rename MAPPING FILE", "Rename dcm content"
@@ -291,7 +293,10 @@ module Dcm
291
293
  def display_list(list:, detail: false, format: :tty)
292
294
  case format
293
295
  in :tty
294
- puts list.map { ListColorizer.call(_1.to_s(detail: detail)) }.join("\n")
296
+ puts list
297
+ .map { _1.to_s(detail: detail) }
298
+ .then { ListColorizer.call(_1) }
299
+ .join("\n")
295
300
  in :lab
296
301
  puts list.to_lab
297
302
  in :json
data/lib/core_ext.rb CHANGED
@@ -30,11 +30,10 @@ class String
30
30
  end
31
31
 
32
32
  def colorize(color)
33
- return self if false
34
33
  pastel.decorate(self, color)
35
34
  end
36
35
 
37
36
  def pastel
38
- @@pastel ||= Pastel.new
37
+ @@pastel ||= Pastel.new(enabled: true)
39
38
  end
40
39
  end
@@ -0,0 +1,29 @@
1
+ class FuzzySelector
2
+ attr_reader :items, :previewcmd
3
+ def initialize(items, previewcmd=nil)
4
+ @items = items
5
+ @previewcmd = previewcmd
6
+ end
7
+
8
+ def select(&blk)
9
+ IO.popen(selectorcmd, "r+") do |pipe|
10
+ items.each { pipe.puts blk.call(_1) }
11
+ pipe.close_write
12
+ pipe.readlines(chomp: true)
13
+ end
14
+ end
15
+
16
+ def select_by(&blk)
17
+ identifiers = select(&blk)
18
+ items.select { identifiers.include?(blk.call(_1)) }
19
+ end
20
+
21
+ private
22
+
23
+ def selectorcmd
24
+ cmd = [ "fzf", "--multi" ]
25
+ cmd += [ "--preview", previewcmd] if previewcmd
26
+ cmd
27
+ end
28
+
29
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dcm
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Mueller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-05 00:00:00.000000000 Z
11
+ date: 2025-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: automotive-ecu
@@ -178,8 +178,8 @@ files:
178
178
  - lib/core_ext.rb
179
179
  - lib/diff_viewer.rb
180
180
  - lib/file_reader.rb
181
+ - lib/fuzzy_selector.rb
181
182
  - lib/list_colorizer.rb
182
- - lib/live_selector.rb
183
183
  - lib/tempfile_handler.rb
184
184
  - lib/variant_filter.rb
185
185
  - lib/version.rb
data/lib/live_selector.rb DELETED
@@ -1,38 +0,0 @@
1
- class LiveSelector
2
- attr_reader :list
3
- def initialize(list)
4
- @list = list
5
- end
6
-
7
- def select
8
- IO.popen(selectorcmd, "r+") do |pipe|
9
- list.each { pipe.puts _1.name }
10
- pipe.close_write
11
- pipe.read.chomp
12
- end
13
- end
14
-
15
- def call
16
- select
17
- .then { find_by_name(_1) }
18
- end
19
-
20
- private
21
-
22
- def tmpfile
23
- TempfileHandler.create(list.to_json)
24
- end
25
-
26
- def selectorcmd
27
- [
28
- "fzf",
29
- "--preview",
30
- %Q{jq -C '.[] | select(.name == "{}")' #{tmpfile}},
31
- ]
32
- end
33
-
34
- def find_by_name(name)
35
- list.find { _1.name == name }
36
- end
37
-
38
- end