kdep 0.4.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '09613eb122fcc0b4963a04b0d2d982dbd3b4a6d7c3325aebebdfad3875eb6d69'
4
- data.tar.gz: 1d844ed77f42b6b50fdbdeaf3aece71e78658223571f827d5c31a9713361c4f5
3
+ metadata.gz: ee2680e612b4007a54cec958d0f982d74b2de12d89296d048f645f6295c149cc
4
+ data.tar.gz: 180b30cda68c2fbb07a47df714a2ae68152cf347036e44b6c9c66e58a48df6d8
5
5
  SHA512:
6
- metadata.gz: 15743ca9ed3ced89956e3b83535629d127f0c7b51378b54653d3dc4c62b4c799f63e5c28fdf760ac1c327173656741a69a8efe10b8821c4a4536e9ba06c8b11e
7
- data.tar.gz: edfc8dae8a811f72fc12563f5832c253b4637e6da02bfe134b1aed19ed0ce2e830697d8631b74e18cb63d6e811b9941e5598ff915e33ac58928cb2304cf19863
6
+ metadata.gz: 3e1b5ecaa5ad6047d5a3ad4ccb278998c6a5f96f0d5e8b05a1f3e522ead560eea49df307e968fa45b1c4459eed5811ae76b7b9e7cd69d9755c8f4ccd8cfb9d3a
7
+ data.tar.gz: de99f97d34c48673390376eacd74bdde28f209dde7f471a6202eff300f72232bcf711f013d2746a9d81b0f4a2ade58c898c7ec0cfc612e11bc82079054d31dac
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+ # Update a gem (default: kdep) in every installed rbenv Ruby.
3
+ # Iterates `rbenv versions --bare`, skips `system`, and `gem install`s into each.
4
+ #
5
+ # Usage:
6
+ # kdep-update-all-rubies # latest kdep into every rbenv ruby
7
+ # kdep-update-all-rubies kdep 0.4.1 # pin to a version
8
+ # kdep-update-all-rubies rubocop # works for any gem
9
+
10
+ require "open3"
11
+
12
+ gem_name = ARGV[0] || "kdep"
13
+ gem_version = ARGV[1] # optional
14
+
15
+ def rbenv_available?
16
+ out, _err, status = Open3.capture3("sh", "-c", "rbenv --version")
17
+ status.success? && !out.strip.empty?
18
+ end
19
+
20
+ def list_rubies
21
+ out, _err, status = Open3.capture3("rbenv", "versions", "--bare")
22
+ return [] unless status.success?
23
+ out.lines.map(&:strip).reject(&:empty?)
24
+ end
25
+
26
+ def run_in_ruby(ruby, cmd)
27
+ # Resolve the target Ruby's bin dir via rbenv prefix, then exec commands
28
+ # from there. Avoids needing `eval "$(rbenv init -)"` in this script.
29
+ prefix, _err, status = Open3.capture3({ "RBENV_VERSION" => ruby }, "rbenv", "prefix")
30
+ return [nil, "rbenv prefix failed", status] unless status.success?
31
+ bin_dir = File.join(prefix.strip, "bin")
32
+ env = { "PATH" => "#{bin_dir}:#{ENV["PATH"]}", "RBENV_VERSION" => ruby }
33
+ Open3.capture3(env, *cmd)
34
+ end
35
+
36
+ unless rbenv_available?
37
+ warn "rbenv not found on PATH — this script requires rbenv"
38
+ exit 1
39
+ end
40
+
41
+ rubies = list_rubies
42
+ rubies.delete("system") # not managed by rbenv
43
+ if rubies.empty?
44
+ warn "no rbenv rubies installed"
45
+ exit 1
46
+ end
47
+
48
+ label = gem_version ? "#{gem_name} #{gem_version}" : gem_name
49
+ puts "== updating #{label} across rbenv rubies =="
50
+ puts
51
+
52
+ ok = []
53
+ failed = []
54
+
55
+ rubies.each do |ruby|
56
+ puts "---- #{ruby} ----"
57
+ cmd = ["gem", "install", "--no-document", gem_name]
58
+ cmd += ["-v", gem_version] if gem_version
59
+
60
+ stdout, stderr, status = run_in_ruby(ruby, cmd)
61
+ print stdout
62
+ $stderr.print stderr unless stderr.strip.empty?
63
+
64
+ if status&.success?
65
+ list_stdout, _ls, _lst = run_in_ruby(ruby, ["gem", "list", gem_name])
66
+ version_line = list_stdout.lines.find { |l| l =~ /^#{Regexp.escape(gem_name)}\s+/ } if list_stdout
67
+ installed = version_line ? version_line[/\(([^)]+)\)/, 1]&.split(",")&.first&.strip : "?"
68
+ ok << "#{ruby} -> #{installed}"
69
+ else
70
+ failed << ruby
71
+ end
72
+ puts
73
+ end
74
+
75
+ puts "== summary =="
76
+ ok.each { |line| puts " ok: #{line}" }
77
+ failed.each { |line| puts " FAILED: #{line}" }
78
+
79
+ exit(failed.empty? ? 0 : 1)
@@ -19,7 +19,9 @@ module Kdep
19
19
  File.write(CACHE_FILE, Time.now.to_i.to_s)
20
20
 
21
21
  if newer?(latest, Kdep::VERSION)
22
- $stderr.puts "\e[33mupdate available: kdep #{Kdep::VERSION} → #{latest} (gem update kdep)\e[0m"
22
+ $stderr.puts "\e[33mupdate available: kdep #{Kdep::VERSION} → #{latest}\e[0m"
23
+ $stderr.puts "\e[33m single Ruby: gem update kdep\e[0m"
24
+ $stderr.puts "\e[33m rbenv users: kdep-update-all-rubies (updates every installed Ruby)\e[0m"
23
25
  end
24
26
  rescue StandardError
25
27
  # never break the user's workflow
data/lib/kdep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kdep
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kdep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leadfy
@@ -57,11 +57,13 @@ email:
57
57
  - dev@leadfy.com
58
58
  executables:
59
59
  - kdep
60
+ - kdep-update-all-rubies
60
61
  extensions: []
61
62
  extra_rdoc_files: []
62
63
  files:
63
64
  - LICENSE.txt
64
65
  - exe/kdep
66
+ - exe/kdep-update-all-rubies
65
67
  - lib/kdep.rb
66
68
  - lib/kdep/check_runner.rb
67
69
  - lib/kdep/cli.rb