csvops 0.5.0.alpha → 0.7.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -7
  3. data/docs/architecture.md +119 -5
  4. data/docs/release-v0.6.0-alpha.md +84 -0
  5. data/docs/release-v0.7.0-alpha.md +87 -0
  6. data/lib/csvtool/application/use_cases/run_csv_parity.rb +70 -0
  7. data/lib/csvtool/application/use_cases/run_csv_split.rb +97 -0
  8. data/lib/csvtool/cli.rb +9 -1
  9. data/lib/csvtool/domain/csv_parity_session/parity_options.rb +22 -0
  10. data/lib/csvtool/domain/csv_parity_session/parity_session.rb +20 -0
  11. data/lib/csvtool/domain/csv_parity_session/source_pair.rb +19 -0
  12. data/lib/csvtool/domain/csv_split_session/split_options.rb +27 -0
  13. data/lib/csvtool/domain/csv_split_session/split_session.rb +20 -0
  14. data/lib/csvtool/domain/csv_split_session/split_source.rb +17 -0
  15. data/lib/csvtool/infrastructure/csv/csv_parity_comparator.rb +71 -0
  16. data/lib/csvtool/infrastructure/csv/csv_splitter.rb +64 -0
  17. data/lib/csvtool/infrastructure/output/csv_split_manifest_writer.rb +20 -0
  18. data/lib/csvtool/interface/cli/errors/presenter.rb +12 -0
  19. data/lib/csvtool/interface/cli/menu_loop.rb +8 -2
  20. data/lib/csvtool/interface/cli/prompts/chunk_size_prompt.rb +21 -0
  21. data/lib/csvtool/interface/cli/prompts/split_manifest_prompt.rb +30 -0
  22. data/lib/csvtool/interface/cli/prompts/split_output_prompt.rb +38 -0
  23. data/lib/csvtool/interface/cli/workflows/builders/csv_parity_session_builder.rb +33 -0
  24. data/lib/csvtool/interface/cli/workflows/builders/csv_split_session_builder.rb +44 -0
  25. data/lib/csvtool/interface/cli/workflows/presenters/csv_parity_presenter.rb +38 -0
  26. data/lib/csvtool/interface/cli/workflows/presenters/csv_split_presenter.rb +26 -0
  27. data/lib/csvtool/interface/cli/workflows/run_csv_parity_workflow.rb +66 -0
  28. data/lib/csvtool/interface/cli/workflows/run_csv_split_workflow.rb +89 -0
  29. data/lib/csvtool/interface/cli/workflows/steps/csv_split/build_session_step.rb +30 -0
  30. data/lib/csvtool/interface/cli/workflows/steps/csv_split/collect_inputs_step.rb +43 -0
  31. data/lib/csvtool/interface/cli/workflows/steps/csv_split/collect_manifest_step.rb +30 -0
  32. data/lib/csvtool/interface/cli/workflows/steps/csv_split/collect_output_step.rb +31 -0
  33. data/lib/csvtool/interface/cli/workflows/steps/csv_split/execute_step.rb +36 -0
  34. data/lib/csvtool/interface/cli/workflows/steps/parity/build_session_step.rb +25 -0
  35. data/lib/csvtool/interface/cli/workflows/steps/parity/collect_inputs_step.rb +32 -0
  36. data/lib/csvtool/interface/cli/workflows/steps/parity/execute_step.rb +26 -0
  37. data/lib/csvtool/version.rb +1 -1
  38. data/test/csvtool/application/use_cases/run_csv_parity_test.rb +160 -0
  39. data/test/csvtool/application/use_cases/run_csv_split_test.rb +124 -0
  40. data/test/csvtool/cli_test.rb +222 -21
  41. data/test/csvtool/cli_unit_test.rb +4 -4
  42. data/test/csvtool/domain/csv_parity_session/parity_options_test.rb +17 -0
  43. data/test/csvtool/domain/csv_parity_session/parity_session_test.rb +18 -0
  44. data/test/csvtool/domain/csv_parity_session/source_pair_test.rb +11 -0
  45. data/test/csvtool/infrastructure/csv/csv_parity_comparator_test.rb +78 -0
  46. data/test/csvtool/infrastructure/csv/csv_splitter_test.rb +68 -0
  47. data/test/csvtool/infrastructure/output/csv_split_manifest_writer_test.rb +25 -0
  48. data/test/csvtool/interface/cli/errors/presenter_test.rb +2 -0
  49. data/test/csvtool/interface/cli/menu_loop_test.rb +87 -93
  50. data/test/csvtool/interface/cli/prompts/chunk_size_prompt_test.rb +17 -0
  51. data/test/csvtool/interface/cli/prompts/split_manifest_prompt_test.rb +42 -0
  52. data/test/csvtool/interface/cli/prompts/split_output_prompt_test.rb +22 -0
  53. data/test/csvtool/interface/cli/workflows/builders/csv_parity_session_builder_test.rb +20 -0
  54. data/test/csvtool/interface/cli/workflows/builders/csv_split_session_builder_test.rb +30 -0
  55. data/test/csvtool/interface/cli/workflows/presenters/csv_parity_presenter_test.rb +43 -0
  56. data/test/csvtool/interface/cli/workflows/presenters/csv_split_presenter_test.rb +26 -0
  57. data/test/csvtool/interface/cli/workflows/run_csv_parity_workflow_test.rb +94 -0
  58. data/test/csvtool/interface/cli/workflows/run_csv_split_workflow_test.rb +200 -0
  59. data/test/csvtool/interface/cli/workflows/steps/csv_split/build_session_step_test.rb +40 -0
  60. data/test/csvtool/interface/cli/workflows/steps/csv_split/collect_inputs_step_test.rb +64 -0
  61. data/test/csvtool/interface/cli/workflows/steps/csv_split/collect_manifest_step_test.rb +30 -0
  62. data/test/csvtool/interface/cli/workflows/steps/csv_split/collect_output_step_test.rb +32 -0
  63. data/test/csvtool/interface/cli/workflows/steps/csv_split/execute_step_test.rb +83 -0
  64. data/test/csvtool/interface/cli/workflows/steps/parity/build_session_step_test.rb +41 -0
  65. data/test/csvtool/interface/cli/workflows/steps/parity/collect_inputs_step_test.rb +30 -0
  66. data/test/csvtool/interface/cli/workflows/steps/parity/execute_step_test.rb +40 -0
  67. data/test/fixtures/parity_duplicates_left.csv +4 -0
  68. data/test/fixtures/parity_duplicates_right.csv +3 -0
  69. data/test/fixtures/parity_people_header_mismatch.csv +4 -0
  70. data/test/fixtures/parity_people_many_reordered.csv +13 -0
  71. data/test/fixtures/parity_people_mismatch.csv +4 -0
  72. data/test/fixtures/parity_people_reordered.csv +4 -0
  73. data/test/fixtures/parity_people_reordered.tsv +4 -0
  74. data/test/fixtures/split_people_25.csv +26 -0
  75. metadata +64 -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csvops
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.alpha
4
+ version: 0.7.0.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Hall
@@ -73,8 +73,12 @@ files:
73
73
  - docs/release-v0.3.0-alpha.md
74
74
  - docs/release-v0.4.0-alpha.md
75
75
  - docs/release-v0.5.0-alpha.md
76
+ - docs/release-v0.6.0-alpha.md
77
+ - docs/release-v0.7.0-alpha.md
76
78
  - exe/csvtool
77
79
  - lib/csvtool/application/use_cases/run_cross_csv_dedupe.rb
80
+ - lib/csvtool/application/use_cases/run_csv_parity.rb
81
+ - lib/csvtool/application/use_cases/run_csv_split.rb
78
82
  - lib/csvtool/application/use_cases/run_extraction.rb
79
83
  - lib/csvtool/application/use_cases/run_row_extraction.rb
80
84
  - lib/csvtool/application/use_cases/run_row_randomization.rb
@@ -91,6 +95,12 @@ files:
91
95
  - lib/csvtool/domain/cross_csv_dedupe_session/csv_profile.rb
92
96
  - lib/csvtool/domain/cross_csv_dedupe_session/key_mapping.rb
93
97
  - lib/csvtool/domain/cross_csv_dedupe_session/match_options.rb
98
+ - lib/csvtool/domain/csv_parity_session/parity_options.rb
99
+ - lib/csvtool/domain/csv_parity_session/parity_session.rb
100
+ - lib/csvtool/domain/csv_parity_session/source_pair.rb
101
+ - lib/csvtool/domain/csv_split_session/split_options.rb
102
+ - lib/csvtool/domain/csv_split_session/split_session.rb
103
+ - lib/csvtool/domain/csv_split_session/split_source.rb
94
104
  - lib/csvtool/domain/row_randomization_session/randomization_options.rb
95
105
  - lib/csvtool/domain/row_randomization_session/randomization_session.rb
96
106
  - lib/csvtool/domain/row_randomization_session/randomization_source.rb
@@ -99,6 +109,8 @@ files:
99
109
  - lib/csvtool/domain/row_session/row_source.rb
100
110
  - lib/csvtool/domain/shared/output_destination.rb
101
111
  - lib/csvtool/infrastructure/csv/cross_csv_deduper.rb
112
+ - lib/csvtool/infrastructure/csv/csv_parity_comparator.rb
113
+ - lib/csvtool/infrastructure/csv/csv_splitter.rb
102
114
  - lib/csvtool/infrastructure/csv/header_reader.rb
103
115
  - lib/csvtool/infrastructure/csv/row_randomizer.rb
104
116
  - lib/csvtool/infrastructure/csv/row_streamer.rb
@@ -110,8 +122,10 @@ files:
110
122
  - lib/csvtool/infrastructure/output/csv_randomized_row_file_writer.rb
111
123
  - lib/csvtool/infrastructure/output/csv_row_console_writer.rb
112
124
  - lib/csvtool/infrastructure/output/csv_row_file_writer.rb
125
+ - lib/csvtool/infrastructure/output/csv_split_manifest_writer.rb
113
126
  - lib/csvtool/interface/cli/errors/presenter.rb
114
127
  - lib/csvtool/interface/cli/menu_loop.rb
128
+ - lib/csvtool/interface/cli/prompts/chunk_size_prompt.rb
115
129
  - lib/csvtool/interface/cli/prompts/column_selector_prompt.rb
116
130
  - lib/csvtool/interface/cli/prompts/confirm_prompt.rb
117
131
  - lib/csvtool/interface/cli/prompts/dedupe_key_selector_prompt.rb
@@ -121,26 +135,42 @@ files:
121
135
  - lib/csvtool/interface/cli/prompts/seed_prompt.rb
122
136
  - lib/csvtool/interface/cli/prompts/separator_prompt.rb
123
137
  - lib/csvtool/interface/cli/prompts/skip_blanks_prompt.rb
138
+ - lib/csvtool/interface/cli/prompts/split_manifest_prompt.rb
139
+ - lib/csvtool/interface/cli/prompts/split_output_prompt.rb
124
140
  - lib/csvtool/interface/cli/prompts/yes_no_prompt.rb
125
141
  - lib/csvtool/interface/cli/workflows/builders/column_session_builder.rb
126
142
  - lib/csvtool/interface/cli/workflows/builders/cross_csv_dedupe_session_builder.rb
143
+ - lib/csvtool/interface/cli/workflows/builders/csv_parity_session_builder.rb
144
+ - lib/csvtool/interface/cli/workflows/builders/csv_split_session_builder.rb
127
145
  - lib/csvtool/interface/cli/workflows/builders/row_extraction_session_builder.rb
128
146
  - lib/csvtool/interface/cli/workflows/builders/row_randomization_session_builder.rb
129
147
  - lib/csvtool/interface/cli/workflows/presenters/column_extraction_presenter.rb
130
148
  - lib/csvtool/interface/cli/workflows/presenters/cross_csv_dedupe_presenter.rb
149
+ - lib/csvtool/interface/cli/workflows/presenters/csv_parity_presenter.rb
150
+ - lib/csvtool/interface/cli/workflows/presenters/csv_split_presenter.rb
131
151
  - lib/csvtool/interface/cli/workflows/presenters/row_extraction_presenter.rb
132
152
  - lib/csvtool/interface/cli/workflows/presenters/row_randomization_presenter.rb
133
153
  - lib/csvtool/interface/cli/workflows/run_cross_csv_dedupe_workflow.rb
154
+ - lib/csvtool/interface/cli/workflows/run_csv_parity_workflow.rb
155
+ - lib/csvtool/interface/cli/workflows/run_csv_split_workflow.rb
134
156
  - lib/csvtool/interface/cli/workflows/run_extraction_workflow.rb
135
157
  - lib/csvtool/interface/cli/workflows/run_row_extraction_workflow.rb
136
158
  - lib/csvtool/interface/cli/workflows/run_row_randomization_workflow.rb
137
159
  - lib/csvtool/interface/cli/workflows/steps/cross_csv_dedupe/collect_options_step.rb
138
160
  - lib/csvtool/interface/cli/workflows/steps/cross_csv_dedupe/collect_profiles_step.rb
139
161
  - lib/csvtool/interface/cli/workflows/steps/cross_csv_dedupe/execute_step.rb
162
+ - lib/csvtool/interface/cli/workflows/steps/csv_split/build_session_step.rb
163
+ - lib/csvtool/interface/cli/workflows/steps/csv_split/collect_inputs_step.rb
164
+ - lib/csvtool/interface/cli/workflows/steps/csv_split/collect_manifest_step.rb
165
+ - lib/csvtool/interface/cli/workflows/steps/csv_split/collect_output_step.rb
166
+ - lib/csvtool/interface/cli/workflows/steps/csv_split/execute_step.rb
140
167
  - lib/csvtool/interface/cli/workflows/steps/extraction/build_preview_step.rb
141
168
  - lib/csvtool/interface/cli/workflows/steps/extraction/collect_destination_step.rb
142
169
  - lib/csvtool/interface/cli/workflows/steps/extraction/collect_inputs_step.rb
143
170
  - lib/csvtool/interface/cli/workflows/steps/extraction/execute_step.rb
171
+ - lib/csvtool/interface/cli/workflows/steps/parity/build_session_step.rb
172
+ - lib/csvtool/interface/cli/workflows/steps/parity/collect_inputs_step.rb
173
+ - lib/csvtool/interface/cli/workflows/steps/parity/execute_step.rb
144
174
  - lib/csvtool/interface/cli/workflows/steps/row_extraction/collect_destination_step.rb
145
175
  - lib/csvtool/interface/cli/workflows/steps/row_extraction/collect_range_step.rb
146
176
  - lib/csvtool/interface/cli/workflows/steps/row_extraction/collect_source_step.rb
@@ -156,6 +186,8 @@ files:
156
186
  - lib/csvtool/version.rb
157
187
  - test/csvtool/application/use_cases/io_boundary_test.rb
158
188
  - test/csvtool/application/use_cases/run_cross_csv_dedupe_test.rb
189
+ - test/csvtool/application/use_cases/run_csv_parity_test.rb
190
+ - test/csvtool/application/use_cases/run_csv_split_test.rb
159
191
  - test/csvtool/application/use_cases/run_extraction_test.rb
160
192
  - test/csvtool/application/use_cases/run_row_extraction_test.rb
161
193
  - test/csvtool/application/use_cases/run_row_randomization_test.rb
@@ -173,6 +205,9 @@ files:
173
205
  - test/csvtool/domain/cross_csv_dedupe_session/csv_profile_test.rb
174
206
  - test/csvtool/domain/cross_csv_dedupe_session/key_mapping_test.rb
175
207
  - test/csvtool/domain/cross_csv_dedupe_session/match_options_test.rb
208
+ - test/csvtool/domain/csv_parity_session/parity_options_test.rb
209
+ - test/csvtool/domain/csv_parity_session/parity_session_test.rb
210
+ - test/csvtool/domain/csv_parity_session/source_pair_test.rb
176
211
  - test/csvtool/domain/row_randomization_session/randomization_options_test.rb
177
212
  - test/csvtool/domain/row_randomization_session/randomization_session_test.rb
178
213
  - test/csvtool/domain/row_randomization_session/randomization_source_test.rb
@@ -181,6 +216,8 @@ files:
181
216
  - test/csvtool/domain/row_session/row_source_test.rb
182
217
  - test/csvtool/domain/shared/output_destination_test.rb
183
218
  - test/csvtool/infrastructure/csv/cross_csv_deduper_test.rb
219
+ - test/csvtool/infrastructure/csv/csv_parity_comparator_test.rb
220
+ - test/csvtool/infrastructure/csv/csv_splitter_test.rb
184
221
  - test/csvtool/infrastructure/csv/header_reader_test.rb
185
222
  - test/csvtool/infrastructure/csv/row_randomizer_test.rb
186
223
  - test/csvtool/infrastructure/csv/row_streamer_test.rb
@@ -192,8 +229,10 @@ files:
192
229
  - test/csvtool/infrastructure/output/csv_randomized_row_file_writer_test.rb
193
230
  - test/csvtool/infrastructure/output/csv_row_console_writer_test.rb
194
231
  - test/csvtool/infrastructure/output/csv_row_file_writer_test.rb
232
+ - test/csvtool/infrastructure/output/csv_split_manifest_writer_test.rb
195
233
  - test/csvtool/interface/cli/errors/presenter_test.rb
196
234
  - test/csvtool/interface/cli/menu_loop_test.rb
235
+ - test/csvtool/interface/cli/prompts/chunk_size_prompt_test.rb
197
236
  - test/csvtool/interface/cli/prompts/column_selector_prompt_test.rb
198
237
  - test/csvtool/interface/cli/prompts/confirm_prompt_test.rb
199
238
  - test/csvtool/interface/cli/prompts/dedupe_key_selector_prompt_test.rb
@@ -203,21 +242,37 @@ files:
203
242
  - test/csvtool/interface/cli/prompts/seed_prompt_test.rb
204
243
  - test/csvtool/interface/cli/prompts/separator_prompt_test.rb
205
244
  - test/csvtool/interface/cli/prompts/skip_blanks_prompt_test.rb
245
+ - test/csvtool/interface/cli/prompts/split_manifest_prompt_test.rb
246
+ - test/csvtool/interface/cli/prompts/split_output_prompt_test.rb
206
247
  - test/csvtool/interface/cli/prompts/yes_no_prompt_test.rb
207
248
  - test/csvtool/interface/cli/workflows/builders/column_session_builder_test.rb
208
249
  - test/csvtool/interface/cli/workflows/builders/cross_csv_dedupe_session_builder_test.rb
250
+ - test/csvtool/interface/cli/workflows/builders/csv_parity_session_builder_test.rb
251
+ - test/csvtool/interface/cli/workflows/builders/csv_split_session_builder_test.rb
209
252
  - test/csvtool/interface/cli/workflows/builders/row_extraction_session_builder_test.rb
210
253
  - test/csvtool/interface/cli/workflows/builders/row_randomization_session_builder_test.rb
211
254
  - test/csvtool/interface/cli/workflows/presenters/column_extraction_presenter_test.rb
212
255
  - test/csvtool/interface/cli/workflows/presenters/cross_csv_dedupe_presenter_test.rb
256
+ - test/csvtool/interface/cli/workflows/presenters/csv_parity_presenter_test.rb
257
+ - test/csvtool/interface/cli/workflows/presenters/csv_split_presenter_test.rb
213
258
  - test/csvtool/interface/cli/workflows/presenters/row_extraction_presenter_test.rb
214
259
  - test/csvtool/interface/cli/workflows/presenters/row_randomization_presenter_test.rb
215
260
  - test/csvtool/interface/cli/workflows/run_cross_csv_dedupe_workflow_test.rb
261
+ - test/csvtool/interface/cli/workflows/run_csv_parity_workflow_test.rb
262
+ - test/csvtool/interface/cli/workflows/run_csv_split_workflow_test.rb
216
263
  - test/csvtool/interface/cli/workflows/run_extraction_workflow_test.rb
217
264
  - test/csvtool/interface/cli/workflows/run_row_extraction_workflow_test.rb
218
265
  - test/csvtool/interface/cli/workflows/run_row_randomization_workflow_test.rb
219
266
  - test/csvtool/interface/cli/workflows/steps/cross_csv_dedupe/collect_options_step_test.rb
267
+ - test/csvtool/interface/cli/workflows/steps/csv_split/build_session_step_test.rb
268
+ - test/csvtool/interface/cli/workflows/steps/csv_split/collect_inputs_step_test.rb
269
+ - test/csvtool/interface/cli/workflows/steps/csv_split/collect_manifest_step_test.rb
270
+ - test/csvtool/interface/cli/workflows/steps/csv_split/collect_output_step_test.rb
271
+ - test/csvtool/interface/cli/workflows/steps/csv_split/execute_step_test.rb
220
272
  - test/csvtool/interface/cli/workflows/steps/extraction/collect_inputs_step_test.rb
273
+ - test/csvtool/interface/cli/workflows/steps/parity/build_session_step_test.rb
274
+ - test/csvtool/interface/cli/workflows/steps/parity/collect_inputs_step_test.rb
275
+ - test/csvtool/interface/cli/workflows/steps/parity/execute_step_test.rb
221
276
  - test/csvtool/interface/cli/workflows/steps/row_extraction/collect_source_step_test.rb
222
277
  - test/csvtool/interface/cli/workflows/steps/row_extraction/execute_step_test.rb
223
278
  - test/csvtool/interface/cli/workflows/steps/row_extraction/read_headers_step_test.rb
@@ -237,6 +292,13 @@ files:
237
292
  - test/fixtures/dedupe_source_no_headers.csv
238
293
  - test/fixtures/dedupe_source_normalization.csv
239
294
  - test/fixtures/empty.csv
295
+ - test/fixtures/parity_duplicates_left.csv
296
+ - test/fixtures/parity_duplicates_right.csv
297
+ - test/fixtures/parity_people_header_mismatch.csv
298
+ - test/fixtures/parity_people_many_reordered.csv
299
+ - test/fixtures/parity_people_mismatch.csv
300
+ - test/fixtures/parity_people_reordered.csv
301
+ - test/fixtures/parity_people_reordered.tsv
240
302
  - test/fixtures/sample_people.csv
241
303
  - test/fixtures/sample_people.tsv
242
304
  - test/fixtures/sample_people_bad_tail.csv
@@ -244,6 +306,7 @@ files:
244
306
  - test/fixtures/sample_people_colon.txt
245
307
  - test/fixtures/sample_people_many.csv
246
308
  - test/fixtures/sample_people_no_headers.csv
309
+ - test/fixtures/split_people_25.csv
247
310
  - test/test_helper.rb
248
311
  homepage: https://github.com/RobertAndrewHall/csvops
249
312
  licenses: