kdep 0.4.1 → 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: 450b677af3690ea40e247b8d68f1c368dc111022188672592c17225b4e5845be
4
- data.tar.gz: 90a0f5d3d879ecc76a86a8f10948a5b3a4ebe3a30a291043231a15df4186d771
3
+ metadata.gz: ee2680e612b4007a54cec958d0f982d74b2de12d89296d048f645f6295c149cc
4
+ data.tar.gz: 180b30cda68c2fbb07a47df714a2ae68152cf347036e44b6c9c66e58a48df6d8
5
5
  SHA512:
6
- metadata.gz: c6dd760c8f39d27b1ac34d1778703ac1135aac8cedb815a5c7447f9b7a7eaca7927021c349b7afe32055169bd7cc956af88473f6ea0a1103ea8bb7e9e599a143
7
- data.tar.gz: ae26cf5e39c5eafefcb90ca5c3d3b952c912a54ea424a0239db2c64a64b5015941f0df5a743550dce56c0b581bb70b79b41eb59a4442d36e3fd4b6320ada5ba1
6
+ metadata.gz: 3e1b5ecaa5ad6047d5a3ad4ccb278998c6a5f96f0d5e8b05a1f3e522ead560eea49df307e968fa45b1c4459eed5811ae76b7b9e7cd69d9755c8f4ccd8cfb9d3a
7
+ data.tar.gz: de99f97d34c48673390376eacd74bdde28f209dde7f471a6202eff300f72232bcf711f013d2746a9d81b0f4a2ade58c898c7ec0cfc612e11bc82079054d31dac
@@ -1,53 +1,79 @@
1
- #!/usr/bin/env bash
2
- # Update kdep in every installed rbenv Ruby.
3
- # Skips 'system' (not managed by rbenv) and any Ruby that can't install the
4
- # current kdep gem (e.g. because it's below kdep's minimum Ruby requirement).
5
-
6
- set -eo pipefail
7
-
8
- eval "$(rbenv init -)"
9
-
10
- target_gem="${1:-kdep}"
11
- want_version="${2:-}" # optional — defaults to latest on rubygems
12
-
13
- echo "== updating $target_gem${want_version:+ to $want_version} across rbenv rubies =="
14
- echo
15
-
16
- ok=()
17
- fail=()
18
- skipped=()
19
-
20
- for ruby in $(rbenv versions --bare); do
21
- # Skip 'system' and non-MRI builds you probably don't care about by default.
22
- if [[ "$ruby" == "system" ]]; then
23
- skipped+=("$ruby (system ruby)")
24
- continue
25
- fi
26
-
27
- printf -- "---- %s ----\n" "$ruby"
28
- if ! RBENV_VERSION="$ruby" ruby -v >/dev/null 2>&1; then
29
- echo " ruby binary missing, skipping"
30
- skipped+=("$ruby (binary missing)")
31
- echo
32
- continue
33
- fi
34
-
35
- cmd=(gem install --no-document "$target_gem")
36
- [[ -n "$want_version" ]] && cmd+=(-v "$want_version")
37
-
38
- if RBENV_VERSION="$ruby" "${cmd[@]}"; then
39
- installed_ver=$(RBENV_VERSION="$ruby" gem list -i "$target_gem" -e --silent >/dev/null 2>&1 && \
40
- RBENV_VERSION="$ruby" gem list "$target_gem" | awk -v g="$target_gem" '$1==g {print $2}' | tr -d '(),' | head -1)
41
- ok+=("$ruby -> $installed_ver")
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}"
42
69
  else
43
- fail+=("$ruby")
44
- fi
45
- echo
46
- done
70
+ failed << ruby
71
+ end
72
+ puts
73
+ end
47
74
 
48
- echo "== summary =="
49
- for line in "${ok[@]-}"; do [[ -n "$line" ]] && echo " ok: $line"; done
50
- for line in "${skipped[@]-}"; do [[ -n "$line" ]] && echo " skipped: $line"; done
51
- for line in "${fail[@]-}"; do [[ -n "$line" ]] && echo " FAILED: $line"; done
75
+ puts "== summary =="
76
+ ok.each { |line| puts " ok: #{line}" }
77
+ failed.each { |line| puts " FAILED: #{line}" }
52
78
 
53
- exit $(( ${#fail[@]} > 0 ? 1 : 0 ))
79
+ exit(failed.empty? ? 0 : 1)
data/lib/kdep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kdep
2
- VERSION = "0.4.1"
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.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leadfy