gemvault 0.1.5 → 0.2.2

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.containerignore +10 -0
  3. data/.rubocop.yml +9 -1
  4. data/CHANGELOG.md +61 -0
  5. data/CLAUDE.md +70 -11
  6. data/Dockerfile.test +65 -10
  7. data/README.md +3 -11
  8. data/Rakefile +26 -2
  9. data/_claude/archives/issue-13-root-cause.md +197 -0
  10. data/docs/Rakefile.vault_example +76 -0
  11. data/issues.rec +614 -15
  12. data/lib/bundler/plugin/vault_source.rb +48 -73
  13. data/lib/bundler/plugin/vaulted_gem.rb +66 -0
  14. data/lib/gemvault/archive_entry.rb +6 -0
  15. data/lib/gemvault/cli/command.rb +9 -5
  16. data/lib/gemvault/cli/commands/extract.rb +11 -11
  17. data/lib/gemvault/cli/commands/new.rb +3 -2
  18. data/lib/gemvault/cli/commands/remove.rb +15 -5
  19. data/lib/gemvault/cli/commands/upgrade.rb +37 -13
  20. data/lib/gemvault/dbvault.rb +12 -9
  21. data/lib/gemvault/deprecation.rb +26 -24
  22. data/lib/gemvault/gem_entry.rb +20 -24
  23. data/lib/gemvault/gem_extraction.rb +19 -23
  24. data/lib/gemvault/gem_reference/any_version.rb +6 -2
  25. data/lib/gemvault/gem_reference/parser.rb +44 -0
  26. data/lib/gemvault/gem_reference/specific_version.rb +9 -25
  27. data/lib/gemvault/gem_reference.rb +13 -45
  28. data/lib/gemvault/manifest.rb +44 -42
  29. data/lib/gemvault/tarball.rb +53 -0
  30. data/lib/gemvault/tarvault.rb +47 -56
  31. data/lib/gemvault/vault.rb +17 -13
  32. data/lib/gemvault/vault_path.rb +33 -0
  33. data/lib/gemvault/vault_upgrade.rb +31 -24
  34. data/lib/gemvault/version.rb +1 -1
  35. data/lib/gemvault.rb +1 -0
  36. data/lib/rubygems/resolver/vault_set.rb +5 -7
  37. data/lib/rubygems/source/vault.rb +28 -32
  38. data/lib/rubygems_plugin.rb +8 -6
  39. metadata +23 -17
  40. data/LICENSE +0 -21
  41. data/lib/gemvault/tar_archive.rb +0 -66
  42. /data/{ASSESSMENT.md → _claude/archives/ASSESSMENT.md} +0 -0
  43. /data/{MACROPLAN.md → _claude/archives/MACROPLAN.md} +0 -0
  44. /data/{docs/superpowers → _claude/archives}/plans/2026-04-16-container-integration-tests.md +0 -0
  45. /data/{docs → _claude/archives}/tarvault-findings.md +0 -0
  46. /data/{docs → _claude/archives}/tarvault.md +0 -0
@@ -0,0 +1,76 @@
1
+ require "rake/clean"
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+ require "rubocop/rake_task"
5
+ require "open3"
6
+
7
+ def gemvault_contains?(gemvault_file, gem)
8
+ response, status = Open3.capture2e("gemvault", "list", gemvault_file)
9
+ unless status.success?
10
+ warn "Failed to list gems in vault:"
11
+ warn response
12
+ exit 1
13
+ end
14
+ gems = response.lines(chomp: true)
15
+ gemname_and_version = Pathname(gem).basename.sub_ext("").to_s
16
+ gems.include?(gemname_and_version)
17
+ end
18
+
19
+ def in_root_dir(&)
20
+ chdir(Bundler.root, &)
21
+ end
22
+
23
+ def gemvault(*, **)
24
+ sh "gemvault", *, **
25
+ end
26
+
27
+ RSpec::Core::RakeTask.new(:spec) do |spec|
28
+ spec.pattern = FileList["spec/**/*_spec.rb"]
29
+ end
30
+
31
+ RuboCop::RakeTask.new
32
+ CLOBBER.include "dist"
33
+
34
+ desc "Generate a new cop with a template"
35
+ task :new_cop, [:cop] do |_task, args|
36
+ require "rubocop"
37
+
38
+ cop_name = args.fetch(:cop) do
39
+ warn "usage: bundle exec rake new_cop[Department/Name]"
40
+ exit!
41
+ end
42
+
43
+ generator = RuboCop::Cop::Generator.new(cop_name)
44
+ generator.write_source
45
+ generator.write_spec
46
+ generator.inject_require(root_file_path: "lib/rubocop/cop/kaizo_cops.rb")
47
+ generator.inject_config(config_file_path: "config/default.yml")
48
+
49
+ puts generator.todo
50
+ end
51
+
52
+ directory "dist" do
53
+ mkdir "dist"
54
+ end
55
+
56
+ file "dist/vault.gemv" => "dist" do
57
+ in_root_dir do
58
+ gemvault "new", "dist/vault.gemv"
59
+ end
60
+ end
61
+
62
+ ENV["gem_push"] = "0"
63
+ namespace :release do
64
+ desc "release to a vault"
65
+ task vault: ["dist/vault.gemv", :build] do
66
+ FileList["pkg/*.gem"].each do |v|
67
+ in_root_dir do
68
+ gemvault "add", "dist/vault.gemv", v unless gemvault_contains? "dist/vault.gemv", v
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ Rake::Task[:release].enhance ["release:vault"]
75
+
76
+ task default: [:spec, :rubocop]