abbu 0.2.0 → 0.8.1

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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +281 -8
  3. data/bin/abbu +230 -53
  4. data/docs/ABBU.md +369 -7
  5. data/docs/API_STABILITY.md +189 -0
  6. data/docs/CHANGELOG.md +179 -0
  7. data/docs/CONTRIBUTING.md +25 -3
  8. data/docs/FORMAT_COMPATIBILITY.md +97 -0
  9. data/docs/RELEASING.md +75 -0
  10. data/docs/TODO.md +73 -62
  11. data/lib/abbu/archive.rb +80 -6
  12. data/lib/abbu/contact.rb +6 -3
  13. data/lib/abbu/diagnostic.rb +27 -0
  14. data/lib/abbu/exporters/csv_exporter.rb +2 -2
  15. data/lib/abbu/exporters/json_exporter.rb +7 -1
  16. data/lib/abbu/exporters/vcard_document.rb +54 -0
  17. data/lib/abbu/exporters/vcard_encoding.rb +54 -0
  18. data/lib/abbu/exporters/vcard_exporter.rb +44 -27
  19. data/lib/abbu/group.rb +28 -0
  20. data/lib/abbu/group_catalog.rb +32 -0
  21. data/lib/abbu/image_extractor.rb +134 -0
  22. data/lib/abbu/live_store.rb +117 -0
  23. data/lib/abbu/parse_error.rb +13 -0
  24. data/lib/abbu/parsers/plist_parser.rb +41 -11
  25. data/lib/abbu/parsers/sqlite_parser.rb +139 -65
  26. data/lib/abbu/query.rb +92 -0
  27. data/lib/abbu/schema_inspector.rb +133 -0
  28. data/lib/abbu/source.rb +53 -0
  29. data/lib/abbu/source_catalog.rb +32 -0
  30. data/lib/abbu/timestamp_range.rb +40 -0
  31. data/lib/abbu/utils/contact_identity.rb +97 -0
  32. data/lib/abbu/utils/deduplicator.rb +130 -2
  33. data/lib/abbu/utils/image_resolver.rb +59 -0
  34. data/lib/abbu/utils/label_normalizer.rb +15 -0
  35. data/lib/abbu/utils/source_descriptor.rb +35 -0
  36. data/lib/abbu/version.rb +1 -1
  37. data/lib/abbu.rb +15 -2
  38. data/sig/group.rbs +36 -0
  39. data/sig/query.rbs +21 -0
  40. data/sig/source.rbs +25 -0
  41. data/sig/vcard_exporter.rbs +10 -0
  42. data/tasks/abbu.rake +1 -1
  43. metadata +33 -15
  44. data/bin/cleanse +0 -7
  45. data/bin/console +0 -10
  46. data/bin/dev +0 -7
  47. data/bin/lint +0 -7
  48. data/bin/outdated +0 -7
  49. data/bin/test +0 -7
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abbu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Carver II
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-03 00:00:00.000000000 Z
11
+ date: 2026-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3
@@ -206,9 +206,9 @@ dependencies:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0.22'
209
- description: Parse Apple Address Book Archive (.abbu) files and export contacts to
210
- CSV, JSON, or vCard. Supports modern SQLite-backed archives and legacy plist-based
211
- records.
209
+ description: Read SQLite and legacy plist .abbu archives or opt into read-only live
210
+ macOS Contacts access. Query contacts, inspect schemas and diagnostics, compare
211
+ identity evidence, extract images, and export CSV, JSON, or vCard.
212
212
  email:
213
213
  - stan@a1webconsulting.com
214
214
  executables:
@@ -219,15 +219,12 @@ files:
219
219
  - LICENSE
220
220
  - README.md
221
221
  - bin/abbu
222
- - bin/cleanse
223
- - bin/console
224
- - bin/dev
225
- - bin/lint
226
- - bin/outdated
227
- - bin/test
228
222
  - docs/ABBU.md
223
+ - docs/API_STABILITY.md
229
224
  - docs/CHANGELOG.md
230
225
  - docs/CONTRIBUTING.md
226
+ - docs/FORMAT_COMPATIBILITY.md
227
+ - docs/RELEASING.md
231
228
  - docs/TODO.md
232
229
  - examples/deduplicate_contacts.rb
233
230
  - examples/export_to_api.rb
@@ -239,13 +236,34 @@ files:
239
236
  - lib/abbu.rb
240
237
  - lib/abbu/archive.rb
241
238
  - lib/abbu/contact.rb
239
+ - lib/abbu/diagnostic.rb
242
240
  - lib/abbu/exporters/csv_exporter.rb
243
241
  - lib/abbu/exporters/json_exporter.rb
242
+ - lib/abbu/exporters/vcard_document.rb
243
+ - lib/abbu/exporters/vcard_encoding.rb
244
244
  - lib/abbu/exporters/vcard_exporter.rb
245
+ - lib/abbu/group.rb
246
+ - lib/abbu/group_catalog.rb
247
+ - lib/abbu/image_extractor.rb
248
+ - lib/abbu/live_store.rb
249
+ - lib/abbu/parse_error.rb
245
250
  - lib/abbu/parsers/plist_parser.rb
246
251
  - lib/abbu/parsers/sqlite_parser.rb
252
+ - lib/abbu/query.rb
253
+ - lib/abbu/schema_inspector.rb
254
+ - lib/abbu/source.rb
255
+ - lib/abbu/source_catalog.rb
256
+ - lib/abbu/timestamp_range.rb
257
+ - lib/abbu/utils/contact_identity.rb
247
258
  - lib/abbu/utils/deduplicator.rb
259
+ - lib/abbu/utils/image_resolver.rb
260
+ - lib/abbu/utils/label_normalizer.rb
261
+ - lib/abbu/utils/source_descriptor.rb
248
262
  - lib/abbu/version.rb
263
+ - sig/group.rbs
264
+ - sig/query.rbs
265
+ - sig/source.rbs
266
+ - sig/vcard_exporter.rbs
249
267
  - tasks/abbu.rake
250
268
  homepage: https://github.com/scarver2/abbu
251
269
  licenses:
@@ -254,7 +272,7 @@ metadata:
254
272
  allowed_push_host: https://rubygems.org
255
273
  homepage_uri: https://github.com/scarver2/abbu
256
274
  source_code_uri: https://github.com/scarver2/abbu
257
- changelog_uri: https://github.com/scarver2/abbu/blob/master/docs/CHANGELOG.md
275
+ changelog_uri: https://github.com/scarver2/abbu/blob/main/docs/CHANGELOG.md
258
276
  rubygems_mfa_required: 'true'
259
277
  post_install_message:
260
278
  rdoc_options: []
@@ -264,15 +282,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
264
282
  requirements:
265
283
  - - ">="
266
284
  - !ruby/object:Gem::Version
267
- version: '3.2'
285
+ version: '3.3'
268
286
  required_rubygems_version: !ruby/object:Gem::Requirement
269
287
  requirements:
270
288
  - - ">="
271
289
  - !ruby/object:Gem::Version
272
290
  version: '0'
273
291
  requirements: []
274
- rubygems_version: 3.4.19
292
+ rubygems_version: 3.5.22
275
293
  signing_key:
276
294
  specification_version: 4
277
- summary: Read and process Apple Contacts .abbu archives in Ruby.
295
+ summary: Read-only Apple Contacts toolkit for archives and live macOS stores.
278
296
  test_files: []
data/bin/cleanse DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- # bin/cleanse
3
- set -euo pipefail
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- exec bundle exec rubocop -A "$@"
data/bin/console DELETED
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # bin/console
3
- # frozen_string_literal: true
4
-
5
- $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
6
-
7
- require "irb"
8
- require "abbu"
9
-
10
- IRB.start(__FILE__)
data/bin/dev DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- # bin/dev
3
- set -euo pipefail
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- exec bundle exec guard
data/bin/lint DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- # bin/lint
3
- set -euo pipefail
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- exec bundle exec rubocop "$@"
data/bin/outdated DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- # bin/outdated
3
- set -euo pipefail
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- exec bundle outdated "$@"
data/bin/test DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- # bin/test
3
- set -euo pipefail
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- exec bundle exec rspec "$@"