module Git::Multi::Commands
Public Instance Methods
archived(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 66 def archived(multi_repo = nil) puts Git::Multi.archived_repositories_for(multi_repo).map(&:full_name) end
clone(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 86 def clone(multi_repo = nil) Git::Multi.missing_repositories_for(multi_repo).each do |repository| FileUtils.mkdir_p repository.parent_dir # create multi-repo workarea repository.just_do_it( ->(repo) { Kernel.system "git clone -q #{repo.rels[:ssh].href.shellescape}" }, ->(repo) { Kernel.system "git clone -q #{repo.rels[:ssh].href.shellescape}" }, nil, # captured in: 'parent_dir' ) end end
count()
click to toggle source
# File lib/git/multi/commands.rb, line 39 def count # https://developer.github.com/v3/repos/#list-user-repositories Git::Multi::USERS.each do |user| %w[all owner member].each { |type| puts ["#{user}/#{type}", Git::Hub.user_repositories(user, type).count].join("\t") } end # https://developer.github.com/v3/repos/#list-organization-repositories Git::Multi::ORGANIZATIONS.each do |org| %w[all public private forks sources member].each { |type| puts ["#{org}/#{type}", Git::Hub.org_repositories(org, type).count].join("\t") } end end
eval(commands, multi_repo)
click to toggle source
# File lib/git/multi/commands.rb, line 148 def eval(commands, multi_repo) Git::Multi.cloned_repositories_for(multi_repo).each do |repo| Dir.chdir(repo.local_path) do begin repo.instance_eval(commands.join(' ; ')) rescue Octokit::NotFound # repository no longer exists on GitHub # consider running "git multi --stale"! end end end end
excess(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 106 def excess(multi_repo = nil) puts Git::Multi.excess_repositories_for(multi_repo).map(&:full_name) end
exec(command, args = [], multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 171 def exec(command, args = [], multi_repo = nil) args.unshift ['git', '--no-pager', command] system(args.flatten, multi_repo) end
find(commands, multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 130 def find(commands, multi_repo = nil) Git::Multi.cloned_repositories_for(multi_repo).each do |repository| Dir.chdir(repository.local_path) do begin if repository.instance_eval(commands.join(' && ')) repository.just_do_it( ->(_repo) { nil }, ->(repo) { puts repo.full_name }, ) end rescue Octokit::NotFound # repository no longer exists on GitHub # consider running "git multi --stale"! end end end end
forked(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 70 def forked(multi_repo = nil) puts Git::Multi.forked_repositories_for(multi_repo).map(&:full_name) end
help()
click to toggle source
# File lib/git/multi/commands.rb, line 18 def help Kernel.exec "man #{Git::Multi::MAN_PAGE}" end
html()
click to toggle source
# File lib/git/multi/commands.rb, line 22 def html Kernel.exec "open #{Git::Multi::HTML_PAGE}" end
json(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 58 def json(multi_repo = nil) puts Git::Multi.repositories_for(multi_repo).to_json end
list(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 62 def list(multi_repo = nil) puts Git::Multi.repositories_for(multi_repo).map(&:full_name) end
missing(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 82 def missing(multi_repo = nil) puts Git::Multi.missing_repositories_for(multi_repo).map(&:full_name) end
paths(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 78 def paths(multi_repo = nil) puts Git::Multi.repositories_for(multi_repo).map(&:local_path) end
private(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 74 def private(multi_repo = nil) puts Git::Multi.private_repositories_for(multi_repo).map(&:full_name) end
query(args = [], multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 114 def query(args = [], multi_repo = nil) Git::Multi.repositories_for(multi_repo).each do |repository| repository.just_do_it( ->(repo) { args.each do |attribute| puts "#{attribute}: #{repo[attribute]}" end }, ->(repo) { print "#{repo.full_name}: " puts args.map { |attribute| repo[attribute] }.join(' ') }, ) end end
raw(args, multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 166 def raw(args, multi_repo = nil) args.unshift ['sh', '-c'] system(args.flatten, multi_repo) end
refresh()
click to toggle source
# File lib/git/multi/commands.rb, line 54 def refresh Git::Multi.refresh_repositories end
report(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 26 def report(multi_repo = nil) case multi_repo when nil Report.home_status(Git::Multi::HOME) Report.workarea_status(Git::Multi::WORKAREA) Report.for(*MULTI_REPOS) when *MULTI_REPOS Report.for(multi_repo) else raise ArgumentError, multi_repo end end
shell(args, multi_repo)
click to toggle source
# File lib/git/multi/commands.rb, line 161 def shell(args, multi_repo) args.unshift [ENV.fetch('SHELL', '/bin/sh'), '-l'] system(args.flatten, multi_repo) end
spurious(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 110 def spurious(multi_repo = nil) puts Git::Multi.spurious_repositories_for(multi_repo).map(&:full_name) end
stale(multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 102 def stale(multi_repo = nil) puts Git::Multi.stale_repositories_for(multi_repo).map(&:full_name) end
system(args = [], multi_repo = nil)
click to toggle source
# File lib/git/multi/commands.rb, line 176 def system(args = [], multi_repo = nil) cmd = args.map!(&:shellescape).join(' ') Git::Multi.cloned_repositories_for(multi_repo).each do |repository| repository.just_do_it( ->(_repo) { Kernel.system cmd }, ->(repo) { prefix = "sed -e 's#^##{repo.full_name.shellescape}: #'" Kernel.system "#{cmd} 2>&1 | #{prefix} ;" }, ->(repo, errors) { # # because `Kernel.system()` uses the standard shell, # which always means "/bin/sh" on Unix-like systems, # the following version using "process substitution" # doesn't work: # # Kernel.system "#{cmd} 2> >(#{prefix}) | #{prefix} ;" # prefix = "sed -e 's#^##{repo.full_name.shellescape}: #'" Kernel.system "#{cmd} 2> #{errors} | #{prefix} ;" }, in: 'local_path' ) end end
version()
click to toggle source
# File lib/git/multi/commands.rb, line 6 def version dependencies = [ "octokit.rb v#{Octokit::VERSION}", "sawyer v#{Sawyer::VERSION}", "faraday v#{Faraday::VERSION}", "addressable v#{Addressable::VERSION::STRING}", "#{RUBY_ENGINE} #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}", ].join(', ') puts "#{Git::Multi::NAME} v#{Git::Multi::VERSION} (#{dependencies})" end