ruby/tool/fetch-bundled_gems.rb
Hiroshi SHIBATA 99f8bb1331
Fetch tags with test-bundled-gems
make test-bundled-gems failed when default branch didn't have tag ref at target repository.

  ```
  updating rbs ...
  From ssh://github.com/ruby/rbs
   - [deleted]           (none)                             -> origin/dependabot/bundler/steep/rbs-3.4.0
  remote: Enumerating objects: 68, done.
  remote: Counting objects: 100% (68/68), done.
  remote: Compressing objects: 100% (43/43), done.
  remote: Total 68 (delta 19), reused 61 (delta 18), pack-reused 0
  Unpacking objects: 100% (68/68), 204.84 KiB | 633.00 KiB/s, done.
   * [new branch]        aaa-3.4.x                          -> origin/aaa-3.4.x
   * [new branch]        dependabot/bundler/steep/rbs-3.4.1 -> origin/dependabot/bundler/steep/rbs-3.4.1
     01371463..fea0932b  master                             -> origin/master
  checking out v3.4.1 (v=3.4.1, r=) ...
  fatal: invalid reference: v3.4.1
  fatal: invalid reference: 3.4.1
  make: *** [uncommon.mk:1553: yes-test-bundled-gems-fetch] Error 1
  ```
2023-12-27 10:30:38 +09:00

41 lines
815 B
Ruby
Executable file

#!ruby -an
BEGIN {
require 'fileutils'
dir = ARGV.shift
ARGF.eof?
FileUtils.mkdir_p(dir)
Dir.chdir(dir)
}
n, v, u, r = $F
next unless n
next if n =~ /^#/
if File.directory?(n)
puts "updating #{n} ..."
system("git", "fetch", "--all", chdir: n) or abort
else
puts "retrieving #{n} ..."
system(*%W"git clone #{u} #{n}") or abort
end
if r
puts "fetching #{r} ..."
system("git", "fetch", "origin", r, chdir: n) or abort
end
c = r || "v#{v}"
checkout = %w"git -c advice.detachedHead=false checkout"
puts "checking out #{c} (v=#{v}, r=#{r}) ..."
unless system(*checkout, c, "--", chdir: n)
abort if r or !system(*checkout, v, "--", chdir: n)
end
if r
unless File.exist? "#{n}/#{n}.gemspec"
require_relative "lib/bundled_gem"
BundledGem.dummy_gemspec("#{n}/#{n}.gemspec")
end
end