dorian-json-pluck 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/json-pluck +37 -6
  3. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a18873bab6ad1f3be03a448bb75022dc0e9e3245391f07d7953ab90d73a1945
4
- data.tar.gz: 6d230039697f286fea476c31e4f067fa518ff95874f89e487e787c07c72cd2aa
3
+ metadata.gz: cd4f9adab33cdf86520b9914b8cca3751b48db0baa99a6865c5517b9ca534097
4
+ data.tar.gz: 7e0a7de7a70c3eadb63ce5d26e6196c7a857e6f702352543074cc009b917e6f6
5
5
  SHA512:
6
- metadata.gz: daa81b7064bf1a198ee72e3086a51ffca33733798527d99385ac8f73b76142ddf935ca37561c02a5de8cf7763bf62a2a6bda02d4cdcf94d0f0fd19b6a0cb99b2
7
- data.tar.gz: a77354a32613416085727037837b9bc4c9824682da112d1018d780c58e210818bb950a0777a495bbd46bcd0783a957dc0222e88991d9516705395b8a14a48ba1
6
+ metadata.gz: f99220ae07c1f912bcda81eeffe6e188bfedb0758dca9bc2b521946eb318753ff868db767311cdb7b1e9e51937d7edfb83195205f11fbdb373605906f7c034b4
7
+ data.tar.gz: 59eec3da772848e32c6d1d3f63d945c733e51eb278ba7bf9f89cf70ba52c042ea0ba6c7f37cca26b779bccee1b077a42c298b850ea3184d194d755ff8f654562
data/bin/json-pluck CHANGED
@@ -1,12 +1,43 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- if ARGV.size != 1 || ARGV[0] == "--help" || ARGV[0] == "-h"
5
- puts "USAGE: ... | each CODE"
6
- exit
4
+ require "dorian/arguments"
5
+ require "json"
6
+
7
+ parsed =
8
+ Dorian::Arguments.parse(
9
+ json: {
10
+ alias: :j
11
+ },
12
+ ruby: {
13
+ alias: :r
14
+ },
15
+ version: {
16
+ alias: :v
17
+ },
18
+ help: {
19
+ alias: :h
20
+ }
21
+ )
22
+
23
+ abort parsed.help if parsed.options.help
24
+
25
+ if parsed.options.version
26
+ abort File.read(File.expand_path("../../VERSION", __FILE__))
7
27
  end
8
28
 
9
- $stdin.each_line do |it|
10
- it.strip!
11
- eval(ARGV.first)
29
+ inputs = parsed.files.map { |file| File.read(file) }
30
+ inputs = [$stdin.each_line.to_a.map(&:strip).join("\n")] if inputs.empty?
31
+ keys = parsed.arguments.map { |key| key.to_i.to_s == key ? key.to_i : key }
32
+
33
+ inputs.each do |input|
34
+ result = JSON.parse(input).dig(*keys)
35
+
36
+ if parsed.options.json
37
+ puts JSON.pretty_generate(result)
38
+ elsif parsed.options.ruby
39
+ p result
40
+ else
41
+ puts result
42
+ end
12
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-json-pluck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-18 00:00:00.000000000 Z
11
+ date: 2024-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dorian-arguments
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: plucks values from json by json path
28
42
  email: dorian@dorianmarie.com
29
43
  executables: