dorian-csv-each 0.4.3 → 0.4.4

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/csv-each +25 -19
  3. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 440e5a06b361853b93805090439f123723b4e82b8e64d0a66c50f90ec352f8ad
4
- data.tar.gz: 92863c9542f2b3372d5e223ca8dccb65f21cba4ba0f8c1cf592194c9cc167396
3
+ metadata.gz: f27d3eae10864d5379948fb8a20ecfd92c66f9e46aadf568726d75e49f7150c9
4
+ data.tar.gz: 16c411587fb1851eb0690f1ed56d6d2d47e8b14ceed0b73a94480909e53ef422
5
5
  SHA512:
6
- metadata.gz: 1d97ef1b51b168c8feeb42fd951365cedb85f0c1d2bc0003a3e2f413aac185b1da3b459434b5bb72e474f98ccb0844af56b1a15d75562321002f67400c39b86c
7
- data.tar.gz: e0997468eba3092217cc1159c1b97e5590c23a72df0bb6ab66726d6a7c23bae54968d128caffcd95f5b433be0caaa212f70a9b5664af19b04a82ad0278694b4d
6
+ metadata.gz: edc80646bcb469ad7be9eb4c038ead0548ff389f341af7b88c89f5715d5aa09a78b98eb46c5918e23ccd381bf1f399793fcc4bc915c541cfdc0a71a4dbe4715c
7
+ data.tar.gz: b35acd4c5dc87b72eda7489c979fd0a1dec076221301e7e7fd48448856b5b0e9f8fb6b2923e155bcff9a39207071991908fb3e55e32275988901f60acc2086e4
data/bin/csv-each CHANGED
@@ -2,28 +2,34 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "csv"
5
- require "optparse"
6
- require "active_support"
7
- require "active_support/core_ext/hash/indifferent_access"
5
+ require "dorian/to_struct"
6
+ require "dorian/arguments"
8
7
 
9
- options = { headers: false }
8
+ parsed =
9
+ Dorian::Arguments.parse(
10
+ headers: :boolean,
11
+ version: {
12
+ alias: :v
13
+ },
14
+ help: {
15
+ alias: :h
16
+ }
17
+ )
10
18
 
11
- argv =
12
- OptionParser
13
- .new do |opts|
14
- opts.banner = "Usage: cat ... | csv-each [-h|--headers] RUBY\n\n"
19
+ abort parsed.help if parsed.options.help
15
20
 
16
- opts.on("-h", "--headers", "with headers") do |parse|
17
- options[:headers] = true
18
- end
19
- end
20
- .parse!
21
+ if parsed.options.version
22
+ abort File.read(File.expand_path("../../VERSION", __FILE__))
23
+ end
21
24
 
22
- abort "See --help" if argv.size != 1
25
+ inputs = parsed.files.map { |file| File.read(file) }
26
+ inputs = [$stdin.each_line.to_a.map(&:strip).join("\n")] if inputs.empty?
27
+ headers = parsed.options.headers
23
28
 
24
- CSV
25
- .parse($stdin.each_line.to_a.join, headers: options[:headers])
26
- .each do |it|
27
- it = options[:headers] ? it.to_h.with_indifferent_access : it.to_a
28
- eval(argv.first)
29
+ inputs.each do |input|
30
+ CSV.parse(input, headers:).each do |it|
31
+ it = headers ? it.to_h.to_struct : it.to_a
32
+
33
+ eval(parsed.arguments.join(" "))
29
34
  end
35
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-csv-each
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
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-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: csv
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dorian-arguments
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: evaluates some ruby code on each line of the csv input
42
56
  email: dorian@dorianmarie.com
43
57
  executables: