csvops 0.1.0.alpha

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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/README.md +209 -0
  4. data/Rakefile +10 -0
  5. data/bin/csvtool +8 -0
  6. data/bin/tool +8 -0
  7. data/csvops.gemspec +25 -0
  8. data/docs/release-v0.1.0-alpha.md +73 -0
  9. data/exe/csvtool +8 -0
  10. data/lib/csvtool/application/use_cases/run_extraction.rb +125 -0
  11. data/lib/csvtool/cli.rb +87 -0
  12. data/lib/csvtool/domain/extraction_session/column_selection.rb +17 -0
  13. data/lib/csvtool/domain/extraction_session/csv_source.rb +18 -0
  14. data/lib/csvtool/domain/extraction_session/extraction_options.rb +22 -0
  15. data/lib/csvtool/domain/extraction_session/extraction_session.rb +61 -0
  16. data/lib/csvtool/domain/extraction_session/extraction_value.rb +15 -0
  17. data/lib/csvtool/domain/extraction_session/output_destination.rb +35 -0
  18. data/lib/csvtool/domain/extraction_session/preview.rb +23 -0
  19. data/lib/csvtool/domain/extraction_session/separator.rb +17 -0
  20. data/lib/csvtool/infrastructure/csv/header_reader.rb +17 -0
  21. data/lib/csvtool/infrastructure/csv/value_streamer.rb +20 -0
  22. data/lib/csvtool/infrastructure/output/console_writer.rb +20 -0
  23. data/lib/csvtool/infrastructure/output/csv_file_writer.rb +30 -0
  24. data/lib/csvtool/interface/cli/errors/presenter.rb +59 -0
  25. data/lib/csvtool/interface/cli/menu_loop.rb +41 -0
  26. data/lib/csvtool/interface/cli/prompts/column_selector_prompt.rb +54 -0
  27. data/lib/csvtool/interface/cli/prompts/confirm_prompt.rb +29 -0
  28. data/lib/csvtool/interface/cli/prompts/file_path_prompt.rb +21 -0
  29. data/lib/csvtool/interface/cli/prompts/output_destination_prompt.rb +40 -0
  30. data/lib/csvtool/interface/cli/prompts/separator_prompt.rb +44 -0
  31. data/lib/csvtool/interface/cli/prompts/skip_blanks_prompt.rb +22 -0
  32. data/lib/csvtool/services/preview_builder.rb +20 -0
  33. data/lib/csvtool/version.rb +5 -0
  34. data/test/csvtool/application/use_cases/run_extraction_test.rb +31 -0
  35. data/test/csvtool/cli_test.rb +134 -0
  36. data/test/csvtool/cli_unit_test.rb +27 -0
  37. data/test/csvtool/domain/extraction_session/column_selection_test.rb +11 -0
  38. data/test/csvtool/domain/extraction_session/csv_source_test.rb +14 -0
  39. data/test/csvtool/domain/extraction_session/extraction_options_test.rb +18 -0
  40. data/test/csvtool/domain/extraction_session/extraction_session_test.rb +35 -0
  41. data/test/csvtool/domain/extraction_session/extraction_value_test.rb +11 -0
  42. data/test/csvtool/domain/extraction_session/output_destination_test.rb +18 -0
  43. data/test/csvtool/domain/extraction_session/preview_test.rb +18 -0
  44. data/test/csvtool/domain/extraction_session/separator_test.rb +15 -0
  45. data/test/csvtool/infrastructure/csv/header_reader_test.rb +16 -0
  46. data/test/csvtool/infrastructure/csv/value_streamer_test.rb +22 -0
  47. data/test/csvtool/infrastructure/output/console_writer_test.rb +19 -0
  48. data/test/csvtool/infrastructure/output/csv_file_writer_test.rb +35 -0
  49. data/test/csvtool/interface/cli/errors/presenter_test.rb +36 -0
  50. data/test/csvtool/interface/cli/menu_loop_test.rb +51 -0
  51. data/test/csvtool/interface/cli/prompts/column_selector_prompt_test.rb +23 -0
  52. data/test/csvtool/interface/cli/prompts/confirm_prompt_test.rb +23 -0
  53. data/test/csvtool/interface/cli/prompts/file_path_prompt_test.rb +11 -0
  54. data/test/csvtool/interface/cli/prompts/output_destination_prompt_test.rb +28 -0
  55. data/test/csvtool/interface/cli/prompts/separator_prompt_test.rb +31 -0
  56. data/test/csvtool/interface/cli/prompts/skip_blanks_prompt_test.rb +13 -0
  57. data/test/csvtool/services/preview_builder_test.rb +22 -0
  58. data/test/fixtures/empty.csv +0 -0
  59. data/test/fixtures/sample_people.csv +4 -0
  60. data/test/fixtures/sample_people.tsv +4 -0
  61. data/test/fixtures/sample_people_blanks.csv +6 -0
  62. data/test/fixtures/sample_people_colon.txt +4 -0
  63. data/test/fixtures/sample_people_many.csv +13 -0
  64. data/test/test_helper.rb +6 -0
  65. metadata +150 -0
@@ -0,0 +1,6 @@
1
+ name,city
2
+ Alice,London
3
+ ,Paris
4
+ ,Tokyo
5
+ Bob,
6
+ Cara,Berlin
@@ -0,0 +1,4 @@
1
+ name:city
2
+ Alice:London
3
+ Bob:Paris
4
+ Cara:Berlin
@@ -0,0 +1,13 @@
1
+ name
2
+ Name01
3
+ Name02
4
+ Name03
5
+ Name04
6
+ Name05
7
+ Name06
8
+ Name07
9
+ Name08
10
+ Name09
11
+ Name10
12
+ Name11
13
+ Name12
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require "stringio"
5
+
6
+ $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: csvops
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Robert Hall
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2026-02-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: csv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '6.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '6.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ description: A small Ruby CLI for extracting CSV columns interactively or via direct
56
+ command.
57
+ email:
58
+ - ''
59
+ executables:
60
+ - csvtool
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - Gemfile
65
+ - README.md
66
+ - Rakefile
67
+ - bin/csvtool
68
+ - bin/tool
69
+ - csvops.gemspec
70
+ - docs/release-v0.1.0-alpha.md
71
+ - exe/csvtool
72
+ - lib/csvtool/application/use_cases/run_extraction.rb
73
+ - lib/csvtool/cli.rb
74
+ - lib/csvtool/domain/extraction_session/column_selection.rb
75
+ - lib/csvtool/domain/extraction_session/csv_source.rb
76
+ - lib/csvtool/domain/extraction_session/extraction_options.rb
77
+ - lib/csvtool/domain/extraction_session/extraction_session.rb
78
+ - lib/csvtool/domain/extraction_session/extraction_value.rb
79
+ - lib/csvtool/domain/extraction_session/output_destination.rb
80
+ - lib/csvtool/domain/extraction_session/preview.rb
81
+ - lib/csvtool/domain/extraction_session/separator.rb
82
+ - lib/csvtool/infrastructure/csv/header_reader.rb
83
+ - lib/csvtool/infrastructure/csv/value_streamer.rb
84
+ - lib/csvtool/infrastructure/output/console_writer.rb
85
+ - lib/csvtool/infrastructure/output/csv_file_writer.rb
86
+ - lib/csvtool/interface/cli/errors/presenter.rb
87
+ - lib/csvtool/interface/cli/menu_loop.rb
88
+ - lib/csvtool/interface/cli/prompts/column_selector_prompt.rb
89
+ - lib/csvtool/interface/cli/prompts/confirm_prompt.rb
90
+ - lib/csvtool/interface/cli/prompts/file_path_prompt.rb
91
+ - lib/csvtool/interface/cli/prompts/output_destination_prompt.rb
92
+ - lib/csvtool/interface/cli/prompts/separator_prompt.rb
93
+ - lib/csvtool/interface/cli/prompts/skip_blanks_prompt.rb
94
+ - lib/csvtool/services/preview_builder.rb
95
+ - lib/csvtool/version.rb
96
+ - test/csvtool/application/use_cases/run_extraction_test.rb
97
+ - test/csvtool/cli_test.rb
98
+ - test/csvtool/cli_unit_test.rb
99
+ - test/csvtool/domain/extraction_session/column_selection_test.rb
100
+ - test/csvtool/domain/extraction_session/csv_source_test.rb
101
+ - test/csvtool/domain/extraction_session/extraction_options_test.rb
102
+ - test/csvtool/domain/extraction_session/extraction_session_test.rb
103
+ - test/csvtool/domain/extraction_session/extraction_value_test.rb
104
+ - test/csvtool/domain/extraction_session/output_destination_test.rb
105
+ - test/csvtool/domain/extraction_session/preview_test.rb
106
+ - test/csvtool/domain/extraction_session/separator_test.rb
107
+ - test/csvtool/infrastructure/csv/header_reader_test.rb
108
+ - test/csvtool/infrastructure/csv/value_streamer_test.rb
109
+ - test/csvtool/infrastructure/output/console_writer_test.rb
110
+ - test/csvtool/infrastructure/output/csv_file_writer_test.rb
111
+ - test/csvtool/interface/cli/errors/presenter_test.rb
112
+ - test/csvtool/interface/cli/menu_loop_test.rb
113
+ - test/csvtool/interface/cli/prompts/column_selector_prompt_test.rb
114
+ - test/csvtool/interface/cli/prompts/confirm_prompt_test.rb
115
+ - test/csvtool/interface/cli/prompts/file_path_prompt_test.rb
116
+ - test/csvtool/interface/cli/prompts/output_destination_prompt_test.rb
117
+ - test/csvtool/interface/cli/prompts/separator_prompt_test.rb
118
+ - test/csvtool/interface/cli/prompts/skip_blanks_prompt_test.rb
119
+ - test/csvtool/services/preview_builder_test.rb
120
+ - test/fixtures/empty.csv
121
+ - test/fixtures/sample_people.csv
122
+ - test/fixtures/sample_people.tsv
123
+ - test/fixtures/sample_people_blanks.csv
124
+ - test/fixtures/sample_people_colon.txt
125
+ - test/fixtures/sample_people_many.csv
126
+ - test/test_helper.rb
127
+ homepage: https://github.com/RobertAndrewHall/csvops
128
+ licenses:
129
+ - MIT
130
+ metadata: {}
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '3.3'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubygems_version: 3.5.18
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: Interactive CSV column extraction CLI
150
+ test_files: []