dcm 0.1.7 → 0.1.9

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: b3219675cd120492c7a2d2f40e5c0cae0e46a200df20491838b9685059473bf6
4
- data.tar.gz: 24c0f58474bf73d2c9a9f29231a8f2eadf52a496955cd8b5e878033b20a85c19
3
+ metadata.gz: b6c0104f9036728263112fd4ffaa62b080eb20ee049244ea960a78fb6302e012
4
+ data.tar.gz: 359482581dd86df30c5b26f5a6d3a9446fae49cf1c49987ac3e8c09bdfe79688
5
5
  SHA512:
6
- metadata.gz: 5420539c142de65a699d57766fe335452087b9f207e59e68823a9fbfbe138d057b17e9a0d2231488c06f1cdbc608adedbf75faeeb007d29fd701a7c1e5f98d04
7
- data.tar.gz: 1ac00c8a0f683effe46397f0ce792bf847fbe4b5c86ad5a9a757514d4d36eaf1db47a190780c267ed8d7b3fb7226a6298977b0598c3c6b58f5e5b37ff25ce08c
6
+ metadata.gz: b13537c0dc21317d6825887c00bfdaed32c52b9140a2a8aac5458836c4b7b73c1fe55d2dc6936d32ffb70a5a62813ee0597d547537f7765a07ae46b17252cdf5
7
+ data.tar.gz: d4846aa9d68934cd283e3318874119be8a65feeeac71c20c015794f86769606721bc0af0d4a465d6e00e091d9e8a5cbe2b1c3ae2131402b5186be618ffec0059
data/lib/cli.rb CHANGED
@@ -11,6 +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 "fuzzy_selector"
14
15
  require_relative "list_colorizer"
15
16
  require_relative "core_ext"
16
17
  require_relative "version"
@@ -118,9 +119,9 @@ module Dcm
118
119
  if options[:include] != ".*" || options[:reject] != "(?!x)x"
119
120
  selector = Regexp.new(options[:include], true)
120
121
  rejector = Regexp.new(options[:reject], true)
121
- list = list.
122
- select { |l| l.match(selector) }.
123
- reject { |l| l.match(rejector) }
122
+ list = list
123
+ .select { |l| l.match(selector) }
124
+ .reject { |l| l.match(rejector) }
124
125
  end
125
126
  if options[:inlab].present?
126
127
  labfile = Ecu::LabelList.from_lab(File.read(options[:inlab]))
@@ -139,6 +140,16 @@ module Dcm
139
140
  end
140
141
  end
141
142
 
143
+ desc "select FILE", "Fuzzy select labels in FILE (requires fzf, jq)"
144
+ option :indented, aliases: ["-i"], type: :boolean, default: false
145
+ def select(file=nil)
146
+ previewcmd = %Q{jq --color-output '.[] | select(.name == "{}")' {tmpfile}}
147
+ list = parse_file(file)
148
+ puts FuzzySelector.new(list, previewcmd)
149
+ .then { _1.select_by(&:name) }
150
+ .then { _1.to_dcm(options[:indented]) }
151
+ end
152
+
142
153
  desc "rename MAPPING FILE", "Rename dcm content"
143
154
  def rename(mapping=nil, file=nil)
144
155
  list = parse_file(file)
@@ -0,0 +1,37 @@
1
+ require_relative "tempfile_handler"
2
+
3
+ class FuzzySelector
4
+ attr_reader :items, :previewcmd
5
+ def initialize(items, previewcmd=nil)
6
+ @items = items
7
+ @previewcmd = previewcmd
8
+ end
9
+
10
+ def select(&blk)
11
+ IO.popen(selectorcmd, "r+") do |pipe|
12
+ items.each { pipe.puts blk.call(_1) }
13
+ pipe.close_write
14
+ pipe.readlines(chomp: true)
15
+ end
16
+ end
17
+
18
+ def select_by(&blk)
19
+ identifiers = select(&blk)
20
+ items.select { identifiers.include?(blk.call(_1)) }
21
+ end
22
+
23
+ private
24
+
25
+ def tmpfile
26
+ TempfileHandler.create(items.to_json)
27
+ end
28
+
29
+ def selectorcmd
30
+ [ "fzf", "--multi" ].tap do |cmd|
31
+ if previewcmd
32
+ cmd << "--preview" << previewcmd.sub("{tmpfile}", tmpfile)
33
+ end
34
+ end
35
+ end
36
+
37
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dcm
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.9"
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.7
4
+ version: 0.1.9
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-04-30 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
@@ -169,17 +169,16 @@ email:
169
169
  - jonas@tigger.cloud
170
170
  executables:
171
171
  - dcm
172
- - fdcm
173
172
  extensions: []
174
173
  extra_rdoc_files: []
175
174
  files:
176
175
  - bin/dcm
177
- - bin/fdcm
178
176
  - lib/cli.rb
179
177
  - lib/codinginfo.rb
180
178
  - lib/core_ext.rb
181
179
  - lib/diff_viewer.rb
182
180
  - lib/file_reader.rb
181
+ - lib/fuzzy_selector.rb
183
182
  - lib/list_colorizer.rb
184
183
  - lib/tempfile_handler.rb
185
184
  - lib/variant_filter.rb
data/bin/fdcm DELETED
@@ -1,9 +0,0 @@
1
- #!/bin/sh
2
-
3
- TMPFILE=$(mktemp /tmp/dcm-tmp-XXXXXX.json)
4
-
5
- dcm json $1 > $TMPFILE
6
-
7
- name=$(cat $TMPFILE | jq -r .[].name | fzf --preview "jq -C '.[] | select(.name == \"{}\")' $TMPFILE")
8
-
9
- jq ".[] | select(.name == \"$name\")" $TMPFILE