gunwale 0.5.0

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.
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RowBoat
4
+ # @api private
5
+ module Helpers
6
+ CSV_OPTION_KEYS = %i[
7
+ chunk_size
8
+ col_sep
9
+ comment_regexp
10
+ convert_values_to_numeric
11
+ downcase_header
12
+ file_encoding
13
+ force_simple_split
14
+ force_utf8
15
+ headers_in_file
16
+ invalid_byte_sequence
17
+ keep_original_headers
18
+ key_mapping
19
+ quote_char
20
+ remove_empty_hashes
21
+ remove_empty_values
22
+ remove_unmapped_keys
23
+ remove_values_matching
24
+ remove_zero_values
25
+ row_sep
26
+ skip_lines
27
+ strings_as_keys
28
+ strip_chars_from_headers
29
+ strip_whitespace
30
+ user_provided_headers
31
+ value_converters
32
+ verbose
33
+ ].freeze
34
+
35
+ IMPORT_OPTION_KEYS = %i[
36
+ batch_size
37
+ ignore
38
+ on_duplicate_key_ignore
39
+ recursive
40
+ synchronize
41
+ timestamps
42
+ validate
43
+ ].freeze
44
+
45
+ class << self
46
+ def extract_csv_options(options)
47
+ options.slice(*CSV_OPTION_KEYS)
48
+ end
49
+
50
+ def extract_import_options(options)
51
+ options.slice(*IMPORT_OPTION_KEYS)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RowBoat
4
+ # @api private
5
+ class ValueConverter
6
+ attr_reader :converter
7
+
8
+ def initialize(&block)
9
+ @converter = block
10
+ end
11
+
12
+ def convert(value)
13
+ converter.call(value)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RowBoat
4
+ VERSION = "0.5.0"
5
+ end
data/lib/row_boat.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "row_boat/version"
4
+ require "row_boat/helpers"
5
+ require "row_boat/value_converter"
6
+ require "row_boat/base"
7
+
8
+ module RowBoat
9
+ end
data/row_boat.gemspec ADDED
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path("../lib", __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require "row_boat/version"
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "gunwale"
10
+ spec.version = RowBoat::VERSION
11
+ spec.authors = ["Charlton Trezevant"]
12
+ spec.email = ["charlton@packfiles.io"]
13
+
14
+ spec.summary = "Turn the rows of your CSV into rows in your database"
15
+ spec.description = "Turn the rows of your CSV into rows in your database"
16
+ spec.homepage = "https://github.com/packfiles/gunwale"
17
+ spec.license = "MIT"
18
+
19
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
+ f.match(%r{^(test|spec|features)/})
21
+ end
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_dependency "activerecord", '~> 7.1', '>= 7.1.3.2'
27
+ spec.add_dependency 'activerecord-import', '~> 1.6'
28
+ spec.add_dependency "smarter_csv", '~> 1.10', '>= 1.10.3'
29
+
30
+ spec.add_development_dependency "appraisal", '~> 2.5'
31
+ spec.add_development_dependency "awesome_print"
32
+ spec.add_development_dependency "bundler", "~> 2.5.9"
33
+ spec.add_development_dependency "database_cleaner", '~> 2.0', '>= 2.0.2'
34
+ spec.add_development_dependency "pg"
35
+ spec.add_development_dependency "pry"
36
+ spec.add_development_dependency "pry-doc"
37
+ spec.add_development_dependency "pry-nav"
38
+ spec.add_development_dependency "rake", '~> 13.2', '>= 13.2.1'
39
+ spec.add_development_dependency "rspec", '~> 3.13'
40
+ spec.add_development_dependency "rubocop", '~> 1.63', '>= 1.63.5'
41
+ spec.add_development_dependency "standalone_migrations", '~> 7.1', '>= 7.1.3'
42
+ spec.add_development_dependency "yard", '~> 0.9.36'
43
+ end
metadata ADDED
@@ -0,0 +1,329 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gunwale
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Charlton Trezevant
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-05-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '7.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 7.1.3.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '7.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 7.1.3.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: activerecord-import
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.6'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.6'
47
+ - !ruby/object:Gem::Dependency
48
+ name: smarter_csv
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.10'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.10.3
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.10'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.10.3
67
+ - !ruby/object:Gem::Dependency
68
+ name: appraisal
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.5'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.5'
81
+ - !ruby/object:Gem::Dependency
82
+ name: awesome_print
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: bundler
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 2.5.9
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 2.5.9
109
+ - !ruby/object:Gem::Dependency
110
+ name: database_cleaner
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '2.0'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 2.0.2
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '2.0'
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 2.0.2
129
+ - !ruby/object:Gem::Dependency
130
+ name: pg
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: pry
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ - !ruby/object:Gem::Dependency
158
+ name: pry-doc
159
+ requirement: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ type: :development
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ - !ruby/object:Gem::Dependency
172
+ name: pry-nav
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ - !ruby/object:Gem::Dependency
186
+ name: rake
187
+ requirement: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - "~>"
190
+ - !ruby/object:Gem::Version
191
+ version: '13.2'
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: 13.2.1
195
+ type: :development
196
+ prerelease: false
197
+ version_requirements: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '13.2'
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: 13.2.1
205
+ - !ruby/object:Gem::Dependency
206
+ name: rspec
207
+ requirement: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: '3.13'
212
+ type: :development
213
+ prerelease: false
214
+ version_requirements: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - "~>"
217
+ - !ruby/object:Gem::Version
218
+ version: '3.13'
219
+ - !ruby/object:Gem::Dependency
220
+ name: rubocop
221
+ requirement: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - "~>"
224
+ - !ruby/object:Gem::Version
225
+ version: '1.63'
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: 1.63.5
229
+ type: :development
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: '1.63'
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: 1.63.5
239
+ - !ruby/object:Gem::Dependency
240
+ name: standalone_migrations
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - "~>"
244
+ - !ruby/object:Gem::Version
245
+ version: '7.1'
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: 7.1.3
249
+ type: :development
250
+ prerelease: false
251
+ version_requirements: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - "~>"
254
+ - !ruby/object:Gem::Version
255
+ version: '7.1'
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: 7.1.3
259
+ - !ruby/object:Gem::Dependency
260
+ name: yard
261
+ requirement: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: 0.9.36
266
+ type: :development
267
+ prerelease: false
268
+ version_requirements: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: 0.9.36
273
+ description: Turn the rows of your CSV into rows in your database
274
+ email:
275
+ - charlton@packfiles.io
276
+ executables: []
277
+ extensions: []
278
+ extra_rdoc_files: []
279
+ files:
280
+ - ".gitignore"
281
+ - ".rspec"
282
+ - ".rubocop.yml"
283
+ - ".ruby-version"
284
+ - ".travis.yml"
285
+ - API.md
286
+ - Appraisals
287
+ - CODE_OF_CONDUCT.md
288
+ - Gemfile
289
+ - LICENSE.txt
290
+ - README.md
291
+ - Rakefile
292
+ - bin/console
293
+ - bin/setup
294
+ - db/config.yml
295
+ - db/migrate/20170511160154_create_products.rb
296
+ - db/schema.rb
297
+ - devmynd-logo.png
298
+ - gemfiles/csv_import_1.1_and_0.18.gemfile
299
+ - gemfiles/csv_import_1.1_and_0.18.gemfile.lock
300
+ - lib/row_boat.rb
301
+ - lib/row_boat/base.rb
302
+ - lib/row_boat/helpers.rb
303
+ - lib/row_boat/value_converter.rb
304
+ - lib/row_boat/version.rb
305
+ - row_boat.gemspec
306
+ homepage: https://github.com/packfiles/gunwale
307
+ licenses:
308
+ - MIT
309
+ metadata: {}
310
+ post_install_message:
311
+ rdoc_options: []
312
+ require_paths:
313
+ - lib
314
+ required_ruby_version: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - ">="
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
319
+ required_rubygems_version: !ruby/object:Gem::Requirement
320
+ requirements:
321
+ - - ">="
322
+ - !ruby/object:Gem::Version
323
+ version: '0'
324
+ requirements: []
325
+ rubygems_version: 3.5.6
326
+ signing_key:
327
+ specification_version: 4
328
+ summary: Turn the rows of your CSV into rows in your database
329
+ test_files: []