Module: Git::Multi::Commands
- Defined in:
- lib/git/multi/commands.rb
Class Method Summary collapse
- .archived(multi_repo = nil) ⇒ Object
- .clone(multi_repo = nil) ⇒ Object
- .count ⇒ Object
- .eval(commands, multi_repo) ⇒ Object
- .excess(multi_repo = nil) ⇒ Object
- .exec(command, args = [], multi_repo = nil) ⇒ Object
- .find(commands, multi_repo = nil) ⇒ Object
- .forked(multi_repo = nil) ⇒ Object
- .help ⇒ Object
- .html ⇒ Object
- .json(multi_repo = nil) ⇒ Object
- .list(multi_repo = nil) ⇒ Object
- .missing(multi_repo = nil) ⇒ Object
- .paths(multi_repo = nil) ⇒ Object
- .private(multi_repo = nil) ⇒ Object
- .query(args = [], multi_repo = nil) ⇒ Object
- .raw(args, multi_repo = nil) ⇒ Object
- .refresh ⇒ Object
- .report(multi_repo = nil) ⇒ Object
- .shell(args, multi_repo) ⇒ Object
- .spurious(multi_repo = nil) ⇒ Object
- .stale(multi_repo = nil) ⇒ Object
- .version ⇒ Object
Class Method Details
.archived(multi_repo = nil) ⇒ Object
67 68 69 |
# File 'lib/git/multi/commands.rb', line 67 def archived(multi_repo = nil) puts Git::Multi.archived_repositories_for(multi_repo).map(&:full_name) end |
.clone(multi_repo = nil) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/git/multi/commands.rb', line 87 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 ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/git/multi/commands.rb', line 40 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) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/git/multi/commands.rb', line 149 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) ⇒ Object
107 108 109 |
# File 'lib/git/multi/commands.rb', line 107 def excess(multi_repo = nil) puts Git::Multi.excess_repositories_for(multi_repo).map(&:full_name) end |
.exec(command, args = [], multi_repo = nil) ⇒ Object
172 173 174 175 |
# File 'lib/git/multi/commands.rb', line 172 def exec(command, args = [], multi_repo = nil) args.unshift ['git', '--no-pager', command] system(args.flatten, multi_repo) end |
.find(commands, multi_repo = nil) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/git/multi/commands.rb', line 131 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) ⇒ Object
71 72 73 |
# File 'lib/git/multi/commands.rb', line 71 def forked(multi_repo = nil) puts Git::Multi.forked_repositories_for(multi_repo).map(&:full_name) end |
.help ⇒ Object
19 20 21 |
# File 'lib/git/multi/commands.rb', line 19 def help Kernel.exec "man #{Git::Multi::MAN_PAGE}" end |
.html ⇒ Object
23 24 25 |
# File 'lib/git/multi/commands.rb', line 23 def html Kernel.exec "open #{Git::Multi::HTML_PAGE}" end |
.json(multi_repo = nil) ⇒ Object
59 60 61 |
# File 'lib/git/multi/commands.rb', line 59 def json(multi_repo = nil) puts Git::Multi.repositories_for(multi_repo).to_json end |
.list(multi_repo = nil) ⇒ Object
63 64 65 |
# File 'lib/git/multi/commands.rb', line 63 def list(multi_repo = nil) puts Git::Multi.repositories_for(multi_repo).map(&:full_name) end |
.missing(multi_repo = nil) ⇒ Object
83 84 85 |
# File 'lib/git/multi/commands.rb', line 83 def missing(multi_repo = nil) puts Git::Multi.missing_repositories_for(multi_repo).map(&:full_name) end |
.paths(multi_repo = nil) ⇒ Object
79 80 81 |
# File 'lib/git/multi/commands.rb', line 79 def paths(multi_repo = nil) puts Git::Multi.repositories_for(multi_repo).map(&:local_path) end |
.private(multi_repo = nil) ⇒ Object
75 76 77 |
# File 'lib/git/multi/commands.rb', line 75 def private(multi_repo = nil) puts Git::Multi.private_repositories_for(multi_repo).map(&:full_name) end |
.query(args = [], multi_repo = nil) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/git/multi/commands.rb', line 115 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) ⇒ Object
167 168 169 170 |
# File 'lib/git/multi/commands.rb', line 167 def raw(args, multi_repo = nil) args.unshift ['sh', '-c'] system(args.flatten, multi_repo) end |
.refresh ⇒ Object
55 56 57 |
# File 'lib/git/multi/commands.rb', line 55 def refresh Git::Multi.refresh_repositories end |
.report(multi_repo = nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/git/multi/commands.rb', line 27 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) ⇒ Object
162 163 164 165 |
# File 'lib/git/multi/commands.rb', line 162 def shell(args, multi_repo) args.unshift [ENV.fetch('SHELL', '/bin/sh'), '-l'] system(args.flatten, multi_repo) end |
.spurious(multi_repo = nil) ⇒ Object
111 112 113 |
# File 'lib/git/multi/commands.rb', line 111 def spurious(multi_repo = nil) puts Git::Multi.spurious_repositories_for(multi_repo).map(&:full_name) end |
.stale(multi_repo = nil) ⇒ Object
103 104 105 |
# File 'lib/git/multi/commands.rb', line 103 def stale(multi_repo = nil) puts Git::Multi.stale_repositories_for(multi_repo).map(&:full_name) end |
.version ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/git/multi/commands.rb', line 7 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 |