amalgalite 1.9.4-x86-mingw32 → 2.0.0-x86-mingw32
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.
- checksums.yaml +4 -4
- data/HISTORY.md +19 -2
- data/Manifest.txt +4 -54
- data/README.md +1 -1
- data/TODO.md +4 -3
- data/amalgalite.gemspec +39 -0
- data/ext/amalgalite/c/amalgalite.c +0 -1
- data/ext/amalgalite/c/amalgalite_constants.c +155 -10
- data/ext/amalgalite/c/extconf.rb +5 -2
- data/ext/amalgalite/c/gen_constants.rb +32 -1
- data/ext/amalgalite/c/sqlite3.c +19308 -9112
- data/ext/amalgalite/c/sqlite3.h +909 -296
- data/ext/amalgalite/c/sqlite3ext.h +11 -0
- data/lib/amalgalite/2.7/amalgalite.so +0 -0
- data/lib/amalgalite/3.0/amalgalite.so +0 -0
- data/lib/amalgalite/3.1/amalgalite.so +0 -0
- data/lib/amalgalite/3.2/amalgalite.so +0 -0
- data/lib/amalgalite/3.3/amalgalite.so +0 -0
- data/lib/amalgalite/3.4/amalgalite.so +0 -0
- data/lib/amalgalite/column.rb +20 -2
- data/lib/amalgalite/result/row.rb +83 -0
- data/lib/amalgalite/result.rb +15 -0
- data/lib/amalgalite/statement.rb +32 -24
- data/lib/amalgalite/type_maps/default_map.rb +48 -56
- data/lib/amalgalite/version.rb +1 -1
- metadata +36 -123
- data/Rakefile +0 -27
- data/bin/amalgalite-pack +0 -147
- data/examples/a.rb +0 -9
- data/examples/blob.rb +0 -88
- data/examples/bootstrap.rb +0 -36
- data/examples/define_aggregate.rb +0 -75
- data/examples/define_function.rb +0 -104
- data/examples/fts5.rb +0 -152
- data/examples/gem-db.rb +0 -94
- data/examples/require_me.rb +0 -11
- data/examples/requires.rb +0 -42
- data/examples/schema-info.rb +0 -34
- data/ext/amalgalite/c/amalgalite_requires_bootstrap.c +0 -283
- data/lib/amalgalite/2.4/amalgalite.so +0 -0
- data/lib/amalgalite/2.5/amalgalite.so +0 -0
- data/lib/amalgalite/2.6/amalgalite.so +0 -0
- data/lib/amalgalite/core_ext/kernel/require.rb +0 -21
- data/lib/amalgalite/packer.rb +0 -231
- data/lib/amalgalite/requires.rb +0 -151
- data/spec/aggregate_spec.rb +0 -158
- data/spec/amalgalite_spec.rb +0 -4
- data/spec/blob_spec.rb +0 -78
- data/spec/boolean_spec.rb +0 -24
- data/spec/busy_handler.rb +0 -157
- data/spec/data/iso-3166-country.txt +0 -242
- data/spec/data/iso-3166-schema.sql +0 -22
- data/spec/data/iso-3166-subcountry.txt +0 -3995
- data/spec/data/make-iso-db.sh +0 -12
- data/spec/database_spec.rb +0 -505
- data/spec/default_map_spec.rb +0 -92
- data/spec/function_spec.rb +0 -78
- data/spec/integeration_spec.rb +0 -97
- data/spec/iso_3166_database.rb +0 -58
- data/spec/json_spec.rb +0 -24
- data/spec/packer_spec.rb +0 -60
- data/spec/paths_spec.rb +0 -28
- data/spec/progress_handler_spec.rb +0 -91
- data/spec/requires_spec.rb +0 -54
- data/spec/rtree_spec.rb +0 -66
- data/spec/schema_spec.rb +0 -131
- data/spec/spec_helper.rb +0 -48
- data/spec/sqlite3/constants_spec.rb +0 -108
- data/spec/sqlite3/database_status_spec.rb +0 -36
- data/spec/sqlite3/status_spec.rb +0 -22
- data/spec/sqlite3/version_spec.rb +0 -28
- data/spec/sqlite3_spec.rb +0 -53
- data/spec/statement_spec.rb +0 -168
- data/spec/storage_map_spec.rb +0 -38
- data/spec/tap_spec.rb +0 -57
- data/spec/text_map_spec.rb +0 -20
- data/spec/type_map_spec.rb +0 -14
- data/spec/version_spec.rb +0 -8
- data/tasks/custom.rake +0 -101
- data/tasks/default.rake +0 -257
- data/tasks/extension.rake +0 -28
- data/tasks/this.rb +0 -208
- /data/{LICENSE → LICENSE.txt} +0 -0
metadata
CHANGED
|
@@ -1,43 +1,42 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: amalgalite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: x86-mingw32
|
|
6
6
|
authors:
|
|
7
7
|
- Jeremy Hinegardner
|
|
8
|
-
|
|
9
|
-
bindir: bin
|
|
8
|
+
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-11-16 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
13
|
+
name: csv
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
18
|
+
version: '3.3'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
25
|
+
version: '3.3'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: rspec
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
30
|
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '3.
|
|
32
|
+
version: '3.13'
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '3.
|
|
39
|
+
version: '3.13'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: rspec_junit_formatter
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,124 +57,111 @@ dependencies:
|
|
|
58
57
|
requirements:
|
|
59
58
|
- - "~>"
|
|
60
59
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '13.
|
|
60
|
+
version: '13.3'
|
|
62
61
|
type: :development
|
|
63
62
|
prerelease: false
|
|
64
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
64
|
requirements:
|
|
66
65
|
- - "~>"
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '13.
|
|
67
|
+
version: '13.3'
|
|
69
68
|
- !ruby/object:Gem::Dependency
|
|
70
69
|
name: rake-compiler
|
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
|
72
71
|
requirements:
|
|
73
72
|
- - "~>"
|
|
74
73
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '1.
|
|
74
|
+
version: '1.3'
|
|
76
75
|
type: :development
|
|
77
76
|
prerelease: false
|
|
78
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
78
|
requirements:
|
|
80
79
|
- - "~>"
|
|
81
80
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '1.
|
|
81
|
+
version: '1.3'
|
|
83
82
|
- !ruby/object:Gem::Dependency
|
|
84
83
|
name: rake-compiler-dock
|
|
85
84
|
requirement: !ruby/object:Gem::Requirement
|
|
86
85
|
requirements:
|
|
87
86
|
- - "~>"
|
|
88
87
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.
|
|
88
|
+
version: '1.10'
|
|
90
89
|
type: :development
|
|
91
90
|
prerelease: false
|
|
92
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
92
|
requirements:
|
|
94
93
|
- - "~>"
|
|
95
94
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '1.
|
|
95
|
+
version: '1.10'
|
|
97
96
|
- !ruby/object:Gem::Dependency
|
|
98
97
|
name: rdoc
|
|
99
98
|
requirement: !ruby/object:Gem::Requirement
|
|
100
99
|
requirements:
|
|
101
100
|
- - "~>"
|
|
102
101
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '6.
|
|
102
|
+
version: '6.15'
|
|
104
103
|
type: :development
|
|
105
104
|
prerelease: false
|
|
106
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
106
|
requirements:
|
|
108
107
|
- - "~>"
|
|
109
108
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '6.
|
|
109
|
+
version: '6.15'
|
|
111
110
|
- !ruby/object:Gem::Dependency
|
|
112
111
|
name: simplecov
|
|
113
112
|
requirement: !ruby/object:Gem::Requirement
|
|
114
113
|
requirements:
|
|
115
114
|
- - "~>"
|
|
116
115
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0.
|
|
116
|
+
version: '0.22'
|
|
118
117
|
type: :development
|
|
119
118
|
prerelease: false
|
|
120
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
120
|
requirements:
|
|
122
121
|
- - "~>"
|
|
123
122
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0.
|
|
123
|
+
version: '0.22'
|
|
125
124
|
- !ruby/object:Gem::Dependency
|
|
126
125
|
name: archive-zip
|
|
127
126
|
requirement: !ruby/object:Gem::Requirement
|
|
128
127
|
requirements:
|
|
129
128
|
- - "~>"
|
|
130
129
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '0.
|
|
130
|
+
version: '0.13'
|
|
132
131
|
type: :development
|
|
133
132
|
prerelease: false
|
|
134
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
134
|
requirements:
|
|
136
135
|
- - "~>"
|
|
137
136
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '0.
|
|
139
|
-
description:
|
|
140
|
-
|
|
137
|
+
version: '0.13'
|
|
138
|
+
description: |-
|
|
139
|
+
Amalgalite embeds the SQLite database engine as a ruby extension. There is no
|
|
140
|
+
need to install SQLite separately.
|
|
141
141
|
email: jeremy@copiousfreetime.org
|
|
142
|
-
executables:
|
|
143
|
-
- amalgalite-pack
|
|
142
|
+
executables: []
|
|
144
143
|
extensions: []
|
|
145
144
|
extra_rdoc_files:
|
|
146
145
|
- CONTRIBUTING.md
|
|
147
146
|
- HISTORY.md
|
|
147
|
+
- LICENSE.txt
|
|
148
148
|
- Manifest.txt
|
|
149
149
|
- README.md
|
|
150
150
|
- TODO.md
|
|
151
151
|
- ext/amalgalite/c/notes.txt
|
|
152
|
-
- spec/data/iso-3166-country.txt
|
|
153
|
-
- spec/data/iso-3166-subcountry.txt
|
|
154
152
|
files:
|
|
155
153
|
- CONTRIBUTING.md
|
|
156
154
|
- HISTORY.md
|
|
157
|
-
- LICENSE
|
|
155
|
+
- LICENSE.txt
|
|
158
156
|
- Manifest.txt
|
|
159
157
|
- README.md
|
|
160
|
-
- Rakefile
|
|
161
158
|
- TODO.md
|
|
162
|
-
-
|
|
163
|
-
- examples/a.rb
|
|
164
|
-
- examples/blob.rb
|
|
165
|
-
- examples/bootstrap.rb
|
|
166
|
-
- examples/define_aggregate.rb
|
|
167
|
-
- examples/define_function.rb
|
|
168
|
-
- examples/fts5.rb
|
|
169
|
-
- examples/gem-db.rb
|
|
170
|
-
- examples/require_me.rb
|
|
171
|
-
- examples/requires.rb
|
|
172
|
-
- examples/schema-info.rb
|
|
159
|
+
- amalgalite.gemspec
|
|
173
160
|
- ext/amalgalite/c/amalgalite.c
|
|
174
161
|
- ext/amalgalite/c/amalgalite.h
|
|
175
162
|
- ext/amalgalite/c/amalgalite_blob.c
|
|
176
163
|
- ext/amalgalite/c/amalgalite_constants.c
|
|
177
164
|
- ext/amalgalite/c/amalgalite_database.c
|
|
178
|
-
- ext/amalgalite/c/amalgalite_requires_bootstrap.c
|
|
179
165
|
- ext/amalgalite/c/amalgalite_statement.c
|
|
180
166
|
- ext/amalgalite/c/extconf.rb
|
|
181
167
|
- ext/amalgalite/c/gen_constants.rb
|
|
@@ -185,28 +171,27 @@ files:
|
|
|
185
171
|
- ext/amalgalite/c/sqlite3_options.h
|
|
186
172
|
- ext/amalgalite/c/sqlite3ext.h
|
|
187
173
|
- lib/amalgalite.rb
|
|
188
|
-
- lib/amalgalite/2.4/amalgalite.so
|
|
189
|
-
- lib/amalgalite/2.5/amalgalite.so
|
|
190
|
-
- lib/amalgalite/2.6/amalgalite.so
|
|
191
174
|
- lib/amalgalite/2.7/amalgalite.so
|
|
192
175
|
- lib/amalgalite/3.0/amalgalite.so
|
|
193
176
|
- lib/amalgalite/3.1/amalgalite.so
|
|
177
|
+
- lib/amalgalite/3.2/amalgalite.so
|
|
178
|
+
- lib/amalgalite/3.3/amalgalite.so
|
|
179
|
+
- lib/amalgalite/3.4/amalgalite.so
|
|
194
180
|
- lib/amalgalite/aggregate.rb
|
|
195
181
|
- lib/amalgalite/blob.rb
|
|
196
182
|
- lib/amalgalite/boolean.rb
|
|
197
183
|
- lib/amalgalite/busy_timeout.rb
|
|
198
184
|
- lib/amalgalite/column.rb
|
|
199
|
-
- lib/amalgalite/core_ext/kernel/require.rb
|
|
200
185
|
- lib/amalgalite/csv_table_importer.rb
|
|
201
186
|
- lib/amalgalite/database.rb
|
|
202
187
|
- lib/amalgalite/function.rb
|
|
203
188
|
- lib/amalgalite/index.rb
|
|
204
189
|
- lib/amalgalite/memory_database.rb
|
|
205
|
-
- lib/amalgalite/packer.rb
|
|
206
190
|
- lib/amalgalite/paths.rb
|
|
207
191
|
- lib/amalgalite/profile_tap.rb
|
|
208
192
|
- lib/amalgalite/progress_handler.rb
|
|
209
|
-
- lib/amalgalite/
|
|
193
|
+
- lib/amalgalite/result.rb
|
|
194
|
+
- lib/amalgalite/result/row.rb
|
|
210
195
|
- lib/amalgalite/schema.rb
|
|
211
196
|
- lib/amalgalite/sqlite3.rb
|
|
212
197
|
- lib/amalgalite/sqlite3/constants.rb
|
|
@@ -226,48 +211,10 @@ files:
|
|
|
226
211
|
- lib/amalgalite/type_maps/text_map.rb
|
|
227
212
|
- lib/amalgalite/version.rb
|
|
228
213
|
- lib/amalgalite/view.rb
|
|
229
|
-
- spec/aggregate_spec.rb
|
|
230
|
-
- spec/amalgalite_spec.rb
|
|
231
|
-
- spec/blob_spec.rb
|
|
232
|
-
- spec/boolean_spec.rb
|
|
233
|
-
- spec/busy_handler.rb
|
|
234
|
-
- spec/data/iso-3166-country.txt
|
|
235
|
-
- spec/data/iso-3166-schema.sql
|
|
236
|
-
- spec/data/iso-3166-subcountry.txt
|
|
237
|
-
- spec/data/make-iso-db.sh
|
|
238
|
-
- spec/database_spec.rb
|
|
239
|
-
- spec/default_map_spec.rb
|
|
240
|
-
- spec/function_spec.rb
|
|
241
|
-
- spec/integeration_spec.rb
|
|
242
|
-
- spec/iso_3166_database.rb
|
|
243
|
-
- spec/json_spec.rb
|
|
244
|
-
- spec/packer_spec.rb
|
|
245
|
-
- spec/paths_spec.rb
|
|
246
|
-
- spec/progress_handler_spec.rb
|
|
247
|
-
- spec/requires_spec.rb
|
|
248
|
-
- spec/rtree_spec.rb
|
|
249
|
-
- spec/schema_spec.rb
|
|
250
|
-
- spec/spec_helper.rb
|
|
251
|
-
- spec/sqlite3/constants_spec.rb
|
|
252
|
-
- spec/sqlite3/database_status_spec.rb
|
|
253
|
-
- spec/sqlite3/status_spec.rb
|
|
254
|
-
- spec/sqlite3/version_spec.rb
|
|
255
|
-
- spec/sqlite3_spec.rb
|
|
256
|
-
- spec/statement_spec.rb
|
|
257
|
-
- spec/storage_map_spec.rb
|
|
258
|
-
- spec/tap_spec.rb
|
|
259
|
-
- spec/text_map_spec.rb
|
|
260
|
-
- spec/type_map_spec.rb
|
|
261
|
-
- spec/version_spec.rb
|
|
262
|
-
- tasks/custom.rake
|
|
263
|
-
- tasks/default.rake
|
|
264
|
-
- tasks/extension.rake
|
|
265
|
-
- tasks/this.rb
|
|
266
214
|
homepage: http://github.com/copiousfreetime/amalgalite
|
|
267
215
|
licenses:
|
|
268
216
|
- BSD-3-Clause
|
|
269
217
|
metadata: {}
|
|
270
|
-
post_install_message:
|
|
271
218
|
rdoc_options:
|
|
272
219
|
- "--main"
|
|
273
220
|
- README.md
|
|
@@ -279,52 +226,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
279
226
|
requirements:
|
|
280
227
|
- - ">="
|
|
281
228
|
- !ruby/object:Gem::Version
|
|
282
|
-
version: '2.
|
|
229
|
+
version: '2.7'
|
|
283
230
|
- - "<"
|
|
284
231
|
- !ruby/object:Gem::Version
|
|
285
|
-
version: 3.
|
|
232
|
+
version: 3.5.dev
|
|
286
233
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
287
234
|
requirements:
|
|
288
235
|
- - ">="
|
|
289
236
|
- !ruby/object:Gem::Version
|
|
290
237
|
version: '0'
|
|
291
238
|
requirements: []
|
|
292
|
-
rubygems_version: 3.
|
|
293
|
-
signing_key:
|
|
239
|
+
rubygems_version: 3.6.9
|
|
294
240
|
specification_version: 4
|
|
295
241
|
summary: Amalgalite embeds the SQLite database engine as a ruby extension. There is
|
|
296
242
|
no need to install SQLite separately.
|
|
297
|
-
test_files:
|
|
298
|
-
- spec/aggregate_spec.rb
|
|
299
|
-
- spec/amalgalite_spec.rb
|
|
300
|
-
- spec/blob_spec.rb
|
|
301
|
-
- spec/boolean_spec.rb
|
|
302
|
-
- spec/busy_handler.rb
|
|
303
|
-
- spec/data/iso-3166-country.txt
|
|
304
|
-
- spec/data/iso-3166-schema.sql
|
|
305
|
-
- spec/data/iso-3166-subcountry.txt
|
|
306
|
-
- spec/data/make-iso-db.sh
|
|
307
|
-
- spec/database_spec.rb
|
|
308
|
-
- spec/default_map_spec.rb
|
|
309
|
-
- spec/function_spec.rb
|
|
310
|
-
- spec/integeration_spec.rb
|
|
311
|
-
- spec/iso_3166_database.rb
|
|
312
|
-
- spec/json_spec.rb
|
|
313
|
-
- spec/packer_spec.rb
|
|
314
|
-
- spec/paths_spec.rb
|
|
315
|
-
- spec/progress_handler_spec.rb
|
|
316
|
-
- spec/requires_spec.rb
|
|
317
|
-
- spec/rtree_spec.rb
|
|
318
|
-
- spec/schema_spec.rb
|
|
319
|
-
- spec/spec_helper.rb
|
|
320
|
-
- spec/sqlite3/constants_spec.rb
|
|
321
|
-
- spec/sqlite3/database_status_spec.rb
|
|
322
|
-
- spec/sqlite3/status_spec.rb
|
|
323
|
-
- spec/sqlite3/version_spec.rb
|
|
324
|
-
- spec/sqlite3_spec.rb
|
|
325
|
-
- spec/statement_spec.rb
|
|
326
|
-
- spec/storage_map_spec.rb
|
|
327
|
-
- spec/tap_spec.rb
|
|
328
|
-
- spec/text_map_spec.rb
|
|
329
|
-
- spec/type_map_spec.rb
|
|
330
|
-
- spec/version_spec.rb
|
|
243
|
+
test_files: []
|
data/Rakefile
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# vim: syntax=ruby
|
|
2
|
-
load 'tasks/this.rb'
|
|
3
|
-
|
|
4
|
-
This.name = "amalgalite"
|
|
5
|
-
This.author = "Jeremy Hinegardner"
|
|
6
|
-
This.email = "jeremy@copiousfreetime.org"
|
|
7
|
-
This.homepage = "http://github.com/copiousfreetime/#{ This.name }"
|
|
8
|
-
|
|
9
|
-
This.ruby_gemspec do |spec|
|
|
10
|
-
spec.add_dependency( 'arrayfields', '~> 4.9' )
|
|
11
|
-
|
|
12
|
-
spec.add_development_dependency( 'rspec', '~> 3.12' )
|
|
13
|
-
spec.add_development_dependency( 'rspec_junit_formatter','~> 0.6' )
|
|
14
|
-
spec.add_development_dependency( 'rake', '~> 13.0' )
|
|
15
|
-
spec.add_development_dependency( 'rake-compiler', '~> 1.2' )
|
|
16
|
-
spec.add_development_dependency( 'rake-compiler-dock', '~> 1.2' )
|
|
17
|
-
spec.add_development_dependency( 'rdoc', '~> 6.5' )
|
|
18
|
-
spec.add_development_dependency( 'simplecov', '~> 0.21' )
|
|
19
|
-
spec.add_development_dependency( 'archive-zip', '~> 0.12' )
|
|
20
|
-
|
|
21
|
-
spec.extensions.concat This.extension_conf_files
|
|
22
|
-
spec.license = "BSD-3-Clause"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
load 'tasks/default.rake'
|
|
26
|
-
load 'tasks/extension.rake'
|
|
27
|
-
load 'tasks/custom.rake'
|
data/bin/amalgalite-pack
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
require 'optparse'
|
|
3
|
-
require 'pathname'
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
# add relative paths to the load path if we are not a gem and calculate what the
|
|
7
|
-
# strip path will be if we decide to pack --self
|
|
8
|
-
#
|
|
9
|
-
this_path = Pathname.new( File.expand_path( __FILE__ ) )
|
|
10
|
-
gem_path = Pathname.new( Gem.dir )
|
|
11
|
-
rel_path = this_path.relative_path_from( gem_path )
|
|
12
|
-
if ".." == rel_path.to_s.split( File::SEPARATOR ).first then
|
|
13
|
-
lib_path = File.join( File.dirname( __FILE__ ), "../lib" )
|
|
14
|
-
$:.unshift lib_path
|
|
15
|
-
$:.unshift File.join( File.dirname( __FILE__ ), "../ext" )
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
#
|
|
19
|
-
# snapshot of what is needed for amalgalite requires, this info may only be used
|
|
20
|
-
# when packing amalgalite itself
|
|
21
|
-
#
|
|
22
|
-
loaded_features_before = $LOADED_FEATURES.dup
|
|
23
|
-
require 'amalgalite/packer'
|
|
24
|
-
loaded_features_after = $LOADED_FEATURES.dup
|
|
25
|
-
load_diff = loaded_features_after - loaded_features_before
|
|
26
|
-
|
|
27
|
-
#
|
|
28
|
-
# strip off any LOAD_PATH elements from the front of load_diff since that
|
|
29
|
-
# will conflict with Amalgalite::Packer.amalgalite_require_order. Also
|
|
30
|
-
# strip out any 'rubygems' items since those are not used by Amalgalite
|
|
31
|
-
# and show as a side effect fo the "require 'amalgalite/packer'"
|
|
32
|
-
#
|
|
33
|
-
strip_paths = $LOAD_PATH.sort.reverse
|
|
34
|
-
amalgalite_needs = []
|
|
35
|
-
load_diff.each do |f|
|
|
36
|
-
next if f.split( File::SEPARATOR ).include?( "rubygems" )
|
|
37
|
-
appended = false
|
|
38
|
-
strip_paths.each do |path|
|
|
39
|
-
if 0 == f.index(path ) then
|
|
40
|
-
rel_path = f.sub( path, '' ).sub(%r{\A#{File::SEPARATOR}},'')
|
|
41
|
-
amalgalite_needs << rel_path
|
|
42
|
-
appended = true
|
|
43
|
-
break
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
amalgalite_needs << f unless appended
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
#
|
|
50
|
-
# Commandline parser
|
|
51
|
-
#
|
|
52
|
-
options = {}
|
|
53
|
-
begin
|
|
54
|
-
parser = OptionParser.new do |op|
|
|
55
|
-
op.banner = "Usage: #{op.program_name} [options] <files>"
|
|
56
|
-
op.separator ""
|
|
57
|
-
|
|
58
|
-
op.on("--dbfile DB", "The Database file in which to pack files") do |d|
|
|
59
|
-
options[:dbfile] = d
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
op.on("--drop-table", "Drop the table before inserting rows") do |t|
|
|
63
|
-
options[:drop_table] = t
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
op.on("-m", "--merge", "Merge these files into the existing table overwriting rows that conflict") do |m|
|
|
67
|
-
options[:merge] = true
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
op.on("--require-order", "Dump Amalgalite's require order" ) do |m|
|
|
71
|
-
puts amalgalite_needs
|
|
72
|
-
exit 0
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
op.on("--self", "pack amalgalite itself into the database") do |d|
|
|
76
|
-
options[:self] = true
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
op.on("--strip-prefix PREFIX", "strip this path prefix off the front of each file") do |p|
|
|
80
|
-
options[:strip_prefix] = File.expand_path( p )
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
op.on("-t", "--table TABLE", "the table name to pack into") do |t|
|
|
84
|
-
options[:table_name] = t
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
op.on("--verbose", "Be verbose about output") do |v|
|
|
88
|
-
options[:verbose] = v
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
op.on("-z", "--compressed", "compress the file contents on storage") do |z|
|
|
92
|
-
options[:compressed] = true
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
parser.parse!
|
|
98
|
-
require 'amalgalite/packer'
|
|
99
|
-
file_list = ARGV.dup
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if options[:self] then
|
|
103
|
-
options[:table_name] = Amalgalite::Requires::Bootstrap::DEFAULT_BOOTSTRAP_TABLE
|
|
104
|
-
core_libs = (amalgalite_needs - Amalgalite::Packer.amalgalite_require_order).delete_if { |l| l.index(".rb").nil? }
|
|
105
|
-
|
|
106
|
-
#
|
|
107
|
-
# check and make sure nothing is missed
|
|
108
|
-
#
|
|
109
|
-
core_libs.each do |l|
|
|
110
|
-
if l.index("amalgalite") then
|
|
111
|
-
STDERR.puts "ERROR! require_order needs an update #{l}"
|
|
112
|
-
exit 2
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
file_list = core_libs.concat( Amalgalite::Packer.amalgalite_require_order )
|
|
116
|
-
if options[:compressed] then
|
|
117
|
-
STDERR.puts "Compressing --self is not allowed, reverting to uncompressed"
|
|
118
|
-
options[:compressed] = false
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
STDERR.puts parser if file_list.empty?
|
|
122
|
-
|
|
123
|
-
packer = Amalgalite::Packer.new( options )
|
|
124
|
-
packer.pack( file_list )
|
|
125
|
-
|
|
126
|
-
rescue OptionParser::ParseError => pe
|
|
127
|
-
STDERR.puts "ERROR : #{pe}"
|
|
128
|
-
STDERR.puts parser
|
|
129
|
-
exit 1
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
__END__
|
|
133
|
-
|
|
134
|
-
puts <<-text
|
|
135
|
-
|
|
136
|
-
Packing complete. To utilize the bootstrapping in #{dbfile} you must do
|
|
137
|
-
one of the following:
|
|
138
|
-
|
|
139
|
-
* statically compile the amalgalite C extension into your application
|
|
140
|
-
* require 'amalgalite/#{RUBY_VERSION.sub(/\.\d$/,'')}/amalgalite3'
|
|
141
|
-
|
|
142
|
-
Once one of those is working you can boostrap the Amalgalite library with
|
|
143
|
-
this line in your code:
|
|
144
|
-
|
|
145
|
-
Amalgalite::Requries::Boostrap.lift( 'dbfile' => '#{dbfile}' )
|
|
146
|
-
|
|
147
|
-
text
|
data/examples/a.rb
DELETED
data/examples/blob.rb
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
# An Amalgalite example showing how Blob's can be utilized
|
|
5
|
-
#
|
|
6
|
-
# We'll make a database with one table, that we store files in. We'll use the
|
|
7
|
-
# Blob incremental IO to store the files and retrieve them from the database
|
|
8
|
-
#
|
|
9
|
-
# This little program will store 1 or more files in the sqlite3 database when
|
|
10
|
-
# the 'store' action is given, and cat a file to stdout on 'retrieve'
|
|
11
|
-
#
|
|
12
|
-
# e.g.
|
|
13
|
-
#
|
|
14
|
-
# ruby blob.rb store a.rb b.rb c.rb # => stores a.rb b.rb and c.rb in the db
|
|
15
|
-
#
|
|
16
|
-
# ruby blob.rb retrieve a.rb # => dumps a.rb to stdout
|
|
17
|
-
#
|
|
18
|
-
|
|
19
|
-
require 'rubygems'
|
|
20
|
-
$: << "../lib"
|
|
21
|
-
$: << "../ext"
|
|
22
|
-
require 'amalgalite'
|
|
23
|
-
require 'amalgalite/packer'
|
|
24
|
-
VALID_ACTIONS = %w[ list retrieve store ]
|
|
25
|
-
def usage
|
|
26
|
-
STDERR.puts "Usage: #{File.basename($0)} ( #{VALID_ACTIONS.join(' | ')} ) file(s)"
|
|
27
|
-
exit 1
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
# This does the basic command line parsing
|
|
32
|
-
#
|
|
33
|
-
usage if ARGV.size < 1
|
|
34
|
-
action = ARGV.shift
|
|
35
|
-
usage unless VALID_ACTIONS.include? action
|
|
36
|
-
file_list = ARGV
|
|
37
|
-
|
|
38
|
-
#
|
|
39
|
-
# create the database if it doesn't exist
|
|
40
|
-
#
|
|
41
|
-
db = Amalgalite::Database.new( "filestore.db" )
|
|
42
|
-
|
|
43
|
-
case action
|
|
44
|
-
#
|
|
45
|
-
# list all the files that are stored in the database
|
|
46
|
-
#
|
|
47
|
-
when 'list'
|
|
48
|
-
db.execute("SELECT filename FROM rubylibs") do |row|
|
|
49
|
-
puts row['filename']
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
#
|
|
53
|
-
# if we are doing the store action, then loop over the files and store them in
|
|
54
|
-
# the database. This will use incremental IO to store the files directly from
|
|
55
|
-
# the file names.
|
|
56
|
-
#
|
|
57
|
-
# It is slightly strange in that you have to tell the Blob object what column
|
|
58
|
-
# it is going to, but that is necessary at this point to be able to hook
|
|
59
|
-
# automatically into the lower level incremental blob IO api.
|
|
60
|
-
#
|
|
61
|
-
# This also shows using the $var syntax for binding name sql values in a
|
|
62
|
-
# prepared statement.
|
|
63
|
-
#
|
|
64
|
-
when 'store'
|
|
65
|
-
usage if file_list.empty?
|
|
66
|
-
require 'amalgalite/packer'
|
|
67
|
-
|
|
68
|
-
packer = Amalgalite::Packer.new( :dbfile => 'filestore.db',
|
|
69
|
-
:compressed => false )
|
|
70
|
-
packer.pack( file_list )
|
|
71
|
-
|
|
72
|
-
#
|
|
73
|
-
# dump the file that matches the right path to stdout. This also shows
|
|
74
|
-
# positional sql varible binding using the '?' syntax.
|
|
75
|
-
#
|
|
76
|
-
when 'retrieve'
|
|
77
|
-
usage if file_list.empty?
|
|
78
|
-
db.execute("SELECT id, compressed, filename, contents FROM rubylibs WHERE filename = ?", file_list.first) do |row|
|
|
79
|
-
STDERR.puts "Dumping #{row['filename']} to stdout"
|
|
80
|
-
if row['compressed'] then
|
|
81
|
-
s = row['contents'].to_s
|
|
82
|
-
STDOUT.puts Amalgalite::Packer.gunzip( s )
|
|
83
|
-
else
|
|
84
|
-
row['contents'].write_to_io( STDOUT )
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
db.close
|
data/examples/bootstrap.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
# An example of requiring all the files in a table via the Bootstrap::lift
|
|
4
|
-
# method.
|
|
5
|
-
#
|
|
6
|
-
# First use the blob.rb example in this same directory to load the a.rb file
|
|
7
|
-
# into an example database:
|
|
8
|
-
#
|
|
9
|
-
# ruby blob.rb store a.rb
|
|
10
|
-
#
|
|
11
|
-
# Then run this example.
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
# Require "ONLY" then binary extension, do not +require+ the ruby based code
|
|
15
|
-
$: << "../ext"
|
|
16
|
-
require 'amalgalite/amalgalite3'
|
|
17
|
-
|
|
18
|
-
# See what the load path is, notice that it is very small
|
|
19
|
-
puts "Before $\" : #{$LOADED_FEATURES.inspect}"
|
|
20
|
-
|
|
21
|
-
# tell the binary extension to "require" every file in the filestore.db in the
|
|
22
|
-
# table 'files' orderd by column 'id'. The 'path' column is added to $LOADED_FEATURES and the
|
|
23
|
-
# code in 'data' is evaled.
|
|
24
|
-
Amalgalite::Requires::Bootstrap.lift( "dbfile" => "filestore.db",
|
|
25
|
-
"table_name" => "rubylibs",
|
|
26
|
-
"rowid_column" => "id",
|
|
27
|
-
"filename_column" => "filename",
|
|
28
|
-
"contents_column" => "contents" )
|
|
29
|
-
|
|
30
|
-
# Notice that a.rb is in the list of files that has been required
|
|
31
|
-
puts "After $\" : #{$LOADED_FEATURES.inspect}"
|
|
32
|
-
|
|
33
|
-
# and look we prove that the code was eval'd appropriately
|
|
34
|
-
a = A.new
|
|
35
|
-
a.a
|
|
36
|
-
|