git-multi 5.0.0 → 6.0.0

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: 5005557fa2d73eb4101db22dd204c876c6188f39a91325fca56610fe0174d399
4
- data.tar.gz: '08c86b9b8f3db86b7f9a1e13f9a7a649af8b586933a746f619c8e9d0fb3329ea'
3
+ metadata.gz: f9c0aa5b5dc19107281de9fe6c8dae2d956f77954b7f645f70102d2d693a69bd
4
+ data.tar.gz: b5033965b46ce4c2d4a7d781d3e1efa55a6b3f87f63563fde4e913461bcac1f1
5
5
  SHA512:
6
- metadata.gz: 864abb46e6adc5a22072b831631dcb1b5daedc45fcccbc8a0207ed47fb28896b183cca26efdb191771b5df7bc4c44265bb14af9c3cf6456bab6d05c4a708401c
7
- data.tar.gz: 4aba904daae482a352e7aef74ad47bcaa5ee56085ea59f092a52c0d0bf92294e0db7e901f1e0d9f10c4c201943afea151bfecf099475cb32e08d9979b1d29a97
6
+ metadata.gz: f76f76d736d13581e3a280118a4ec112cfeb8239a0ebb91d708ad22704b384d5ee0b85e1cd231af76e536ce0903953eaafc7d04e45073606d32b0f3d2ac6dd3a
7
+ data.tar.gz: 8b1fb3fe50001711983dbc9e998af763a6d5c8c57cdea814bb7bc2d5e7a1828e5291d0f0630f3cd69b30140334091fd318708fe2099bb50639f32d79c2303bbd
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /vendor/
10
+ Brewfile.lock.json
data/.pryrc CHANGED
@@ -4,11 +4,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'git/multi'
5
5
 
6
6
  # this loads all 'git multi' contribs
7
+ # rubocop:disable Lint/NonDeterministicRequireOrder
7
8
  Dir.glob File.join(__dir__, 'contrib', '**', '*.rb'), &method(:require)
9
+ # rubocop:enable Lint/NonDeterministicRequireOrder
8
10
 
9
11
  # configure a logger
10
12
  require 'logger'
11
- logger = Logger.new(STDOUT)
13
+ logger = Logger.new($stdout)
12
14
  logger.level = Logger::INFO
13
15
 
14
16
  # configure Octokit middleware with logger
data/.rubocop.yml CHANGED
@@ -6,6 +6,10 @@ AllCops:
6
6
  - 'tmp/*'
7
7
  - 'pkg/*'
8
8
 
9
+ require:
10
+ - rubocop-minitest
11
+ - rubocop-rake
12
+
9
13
  Layout/LineLength:
10
14
  Enabled: false
11
15
 
@@ -19,6 +23,9 @@ Metrics/MethodLength:
19
23
  Metrics/ModuleLength:
20
24
  Enabled: false
21
25
 
26
+ Rake/Desc:
27
+ Enabled: false
28
+
22
29
  Style/BlockDelimiters:
23
30
  Enabled: false
24
31
  Style/Documentation:
@@ -38,3 +45,7 @@ Style/TrailingCommaInArrayLiteral:
38
45
  Enabled: false
39
46
  Style/TrailingCommaInHashLiteral:
40
47
  Enabled: false
48
+
49
+ # https://github.com/rubocop/rubocop/issues/10394
50
+ Style/SwapValues:
51
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.6
1
+ 2.6.9
data/Gemfile.lock CHANGED
@@ -1,56 +1,82 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git-multi (5.0.0)
4
+ git-multi (6.0.0)
5
5
  faraday (~> 1)
6
6
  octokit (~> 4)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.7.0)
11
+ addressable (2.8.0)
12
12
  public_suffix (>= 2.0.2, < 5.0)
13
- ast (2.4.1)
13
+ ast (2.4.2)
14
14
  coderay (1.1.3)
15
- faraday (1.0.1)
15
+ faraday (1.9.3)
16
+ faraday-em_http (~> 1.0)
17
+ faraday-em_synchrony (~> 1.0)
18
+ faraday-excon (~> 1.1)
19
+ faraday-httpclient (~> 1.0)
20
+ faraday-multipart (~> 1.0)
21
+ faraday-net_http (~> 1.0)
22
+ faraday-net_http_persistent (~> 1.0)
23
+ faraday-patron (~> 1.0)
24
+ faraday-rack (~> 1.0)
25
+ faraday-retry (~> 1.0)
26
+ ruby2_keywords (>= 0.0.4)
27
+ faraday-em_http (1.0.0)
28
+ faraday-em_synchrony (1.0.0)
29
+ faraday-excon (1.1.0)
30
+ faraday-httpclient (1.0.1)
31
+ faraday-multipart (1.0.3)
16
32
  multipart-post (>= 1.2, < 3)
33
+ faraday-net_http (1.0.1)
34
+ faraday-net_http_persistent (1.2.0)
35
+ faraday-patron (1.0.0)
36
+ faraday-rack (1.0.0)
37
+ faraday-retry (1.0.3)
17
38
  interception (0.5)
18
39
  method_source (1.0.0)
19
- minitest (5.14.1)
40
+ minitest (5.15.0)
20
41
  multipart-post (2.1.1)
21
- octokit (4.18.0)
42
+ octokit (4.22.0)
22
43
  faraday (>= 0.9)
23
44
  sawyer (~> 0.8.0, >= 0.5.3)
24
- parallel (1.19.2)
25
- parser (2.7.1.4)
45
+ parallel (1.21.0)
46
+ parser (3.1.0.0)
26
47
  ast (~> 2.4.1)
27
- pry (0.13.1)
48
+ pry (0.14.1)
28
49
  coderay (~> 1.1)
29
50
  method_source (~> 1.0)
30
- pry-rescue (1.5.1)
51
+ pry-rescue (1.5.2)
31
52
  interception (>= 0.5)
32
53
  pry (>= 0.12.0)
33
- public_suffix (4.0.5)
34
- rainbow (3.0.0)
35
- rake (13.0.1)
36
- regexp_parser (1.7.1)
37
- rexml (3.2.4)
38
- rubocop (0.85.1)
54
+ public_suffix (4.0.6)
55
+ rainbow (3.1.1)
56
+ rake (13.0.6)
57
+ regexp_parser (2.2.0)
58
+ rexml (3.2.5)
59
+ rubocop (1.25.0)
39
60
  parallel (~> 1.10)
40
- parser (>= 2.7.0.1)
61
+ parser (>= 3.1.0.0)
41
62
  rainbow (>= 2.2.2, < 4.0)
42
- regexp_parser (>= 1.7)
63
+ regexp_parser (>= 1.8, < 3.0)
43
64
  rexml
44
- rubocop-ast (>= 0.0.3)
65
+ rubocop-ast (>= 1.15.1, < 2.0)
45
66
  ruby-progressbar (~> 1.7)
46
- unicode-display_width (>= 1.4.0, < 2.0)
47
- rubocop-ast (0.0.3)
48
- parser (>= 2.7.0.1)
49
- ruby-progressbar (1.10.1)
67
+ unicode-display_width (>= 1.4.0, < 3.0)
68
+ rubocop-ast (1.15.1)
69
+ parser (>= 3.0.1.1)
70
+ rubocop-minitest (0.17.1)
71
+ rubocop (>= 0.90, < 2.0)
72
+ rubocop-rake (0.6.0)
73
+ rubocop (~> 1.0)
74
+ ruby-progressbar (1.11.0)
75
+ ruby2_keywords (0.0.5)
50
76
  sawyer (0.8.2)
51
77
  addressable (>= 2.3.5)
52
78
  faraday (> 0.8, < 2.0)
53
- unicode-display_width (1.7.0)
79
+ unicode-display_width (2.1.0)
54
80
 
55
81
  PLATFORMS
56
82
  ruby
@@ -63,6 +89,8 @@ DEPENDENCIES
63
89
  pry-rescue
64
90
  rake
65
91
  rubocop
92
+ rubocop-minitest
93
+ rubocop-rake
66
94
 
67
95
  BUNDLED WITH
68
- 2.1.4
96
+ 2.3.6
data/README.md CHANGED
@@ -35,6 +35,8 @@ There are plenty of other utilities out there that do something similar, but typ
35
35
 
36
36
  ## Usage
37
37
 
38
+ Installing the gem installs the `git-multi` executable on your system's `${PATH}`, which means it can be run as a so-called [git subcommand](https://git.github.io/htmldocs/howto/new-command.html#:~:text=Runtime%20environment), as follows: `git multi`; a good starting point is:
39
+
38
40
  $ git multi --help
39
41
 
40
42
  ## Known Issues
data/bin/console CHANGED
@@ -6,4 +6,7 @@ require 'git/multi'
6
6
  require 'pry'
7
7
  Pry.start
8
8
 
9
+ # require "irb"
10
+ # IRB.start(__FILE__)
11
+
9
12
  # That's all Folks!
data/exe/git-multi CHANGED
@@ -6,11 +6,11 @@ require 'git/multi'
6
6
 
7
7
  multi_repo = command = nil
8
8
 
9
- if !STDIN.tty?
10
- # read list of repo full names from STDIN (~pseudo multi-repo)
11
- multi_repo = STDIN.readlines.map(&:strip).map(&:freeze).freeze
12
- # reopen STDIN (to ensure all `Kernel.system` based cmds work)
13
- STDIN.reopen('/dev/tty')
9
+ if !$stdin.tty?
10
+ # read list of repo full names from $stdin (~pseudo multi-repo)
11
+ multi_repo = $stdin.readlines.map(&:strip).map(&:freeze).freeze
12
+ # reopen $stdin (to ensure all `Kernel.system` based cmds work)
13
+ $stdin.reopen('/dev/tty')
14
14
  elsif (command = ARGV.shift)&.start_with?('++')
15
15
  multi_repo = command.delete('++')
16
16
  command = nil
data/git-multi.gemspec CHANGED
@@ -14,7 +14,17 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/pvdb/git-multi'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
+ spec.required_ruby_version = ['>= 2.6.0', '< 2.7.0']
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = spec.homepage
21
+ spec.metadata['changelog_uri'] = File.join(spec.homepage, 'blob', 'master', 'README.md')
22
+
23
+ spec.metadata['rubygems_mfa_required'] = 'true'
24
+
25
+ # Specify which files should be added to the gem when it is released.
26
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
27
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
28
  `git ls-files -z`
19
29
  .split("\x0")
20
30
  .reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -34,4 +44,6 @@ Gem::Specification.new do |spec|
34
44
  spec.add_development_dependency 'pry-rescue'
35
45
  spec.add_development_dependency 'rake'
36
46
  spec.add_development_dependency 'rubocop'
47
+ spec.add_development_dependency 'rubocop-minitest'
48
+ spec.add_development_dependency 'rubocop-rake'
37
49
  end
data/lib/ext/string.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  class String
2
- # rubocop:disable Layout/EmptyLineBetweenDefs
3
2
  # rubocop:disable Style/SingleLineMethods
4
3
  def colorize(color_code) "\e[#{color_code}m#{self}\e[0m"; end
5
4
 
@@ -12,5 +11,4 @@ class String
12
11
 
13
12
  def undent() gsub(/^.{#{slice(/^ +/).length}}/, ''); end
14
13
  # rubocop:enable Style/SingleLineMethods
15
- # rubocop:enable Layout/EmptyLineBetweenDefs
16
14
  end
data/lib/git/hub.rb CHANGED
@@ -4,7 +4,7 @@ begin
4
4
  require 'net/http/persistent'
5
5
  if Octokit.middleware.adapter == Faraday::Adapter::NetHttp
6
6
  adapter = Faraday::RackBuilder::Handler.new(Faraday::Adapter::NetHttpPersistent)
7
- Octokit.middleware.instance_variable_set(:'@adapter', adapter)
7
+ Octokit.middleware.instance_variable_set(:@adapter, adapter)
8
8
  end
9
9
  rescue LoadError
10
10
  # NOOP - `Net::HTTP::Persistent` is optional, so
@@ -29,31 +29,31 @@ module Git
29
29
 
30
30
  def connected?
31
31
  @connected ||= begin
32
- client.validate_credentials
33
- true
34
- rescue Faraday::ConnectionFailed
35
- false
36
- end
32
+ client.validate_credentials
33
+ true
34
+ rescue Faraday::ConnectionFailed
35
+ false
36
+ end
37
37
  end
38
38
 
39
39
  # FIXME: update login as part of `--refresh`
40
40
 
41
41
  def login
42
42
  @login ||= begin
43
- client.user.login
44
- rescue Octokit::Unauthorized, Faraday::ConnectionFailed
45
- nil
46
- end
43
+ client.user.login
44
+ rescue Octokit::Unauthorized, Faraday::ConnectionFailed
45
+ nil
46
+ end
47
47
  end
48
48
 
49
49
  # FIXME: update orgs as part of `--refresh`
50
50
 
51
51
  def orgs
52
52
  @orgs ||= begin
53
- client.organizations.map(&:login)
54
- rescue Octokit::Unauthorized, Faraday::ConnectionFailed
55
- []
56
- end
53
+ client.organizations.map(&:login)
54
+ rescue Octokit::Unauthorized, Faraday::ConnectionFailed
55
+ []
56
+ end
57
57
  end
58
58
 
59
59
  # pick a (semi-)random repo from GitHub
@@ -76,10 +76,10 @@ module Git
76
76
 
77
77
  @user_repositories = Hash.new { |repos, (user, type)|
78
78
  repos[[user, type]] = begin
79
- client
80
- .repositories(user, type: type)
81
- .sort_by { |repo| repo[:name].downcase }
82
- end
79
+ client
80
+ .repositories(user, type: type)
81
+ .sort_by { |repo| repo[:name].downcase }
82
+ end
83
83
  }
84
84
 
85
85
  def user_repositories(user, type = :owner)
@@ -93,10 +93,10 @@ module Git
93
93
 
94
94
  @org_repositories = Hash.new { |repos, (org, type)|
95
95
  repos[[org, type]] = begin
96
- client
97
- .org_repositories(org, type: type)
98
- .sort_by { |repo| repo[:name].downcase }
99
- end
96
+ client
97
+ .org_repositories(org, type: type)
98
+ .sort_by { |repo| repo[:name].downcase }
99
+ end
100
100
  }
101
101
 
102
102
  def org_repositories(org, type = :owner)
@@ -133,7 +133,7 @@ module Git
133
133
  begin
134
134
  if repository.instance_eval(commands.join(' && '))
135
135
  repository.just_do_it(
136
- ->(_repo) { nil },
136
+ ->(_repo) {}, # empty lambda: nil
137
137
  ->(repo) { puts repo.full_name },
138
138
  )
139
139
  end
@@ -33,7 +33,7 @@ module Git
33
33
  setting_status(["\tGitHub ", "#{github_count} repositories"])
34
34
  setting_status(["\tcloned ", cloned_count, "(#{missing_count} missing)"])
35
35
  Git::Multi.missing_repositories_for(owner).each do |missing|
36
- setting_status(["\tmissing", missing.full_name], false, false)
36
+ setting_status(["\tmissing", missing.full_name], valid: false, optional: false)
37
37
  end
38
38
  setting_status(["\tsubdirs", subdir_count, "(#{surplus_count} surplus)"])
39
39
  end
@@ -42,14 +42,14 @@ module Git
42
42
  github_count = Git::Multi.repositories_for(superproject).count
43
43
 
44
44
  if github_count.zero?
45
- setting_status([message, 'listed but not configured'], false, false)
45
+ setting_status([message, 'listed but not configured'], valid: false, optional: false)
46
46
  else
47
47
  setting_status([message], true)
48
48
  Git::Multi.repositories_for(superproject).each do |repo|
49
49
  if File.directory? repo.local_path
50
- setting_status(["\tcloned ", repo.full_name], true)
50
+ setting_status(["\tcloned ", repo.full_name], valid: true)
51
51
  else
52
- setting_status(["\tmissing", repo.full_name], false, false)
52
+ setting_status(["\tmissing", repo.full_name], valid: false, optional: false)
53
53
  end
54
54
  end
55
55
  end
@@ -102,7 +102,7 @@ module Git
102
102
  end
103
103
  end
104
104
 
105
- private_class_method def setting_status(messages, valid = false, optional = true)
105
+ private_class_method def setting_status(messages, valid: false, optional: true)
106
106
  fields = messages.compact.join(' - ')
107
107
  icon = valid ? TICK : optional ? ARROW : CROSS
108
108
  puts "#{icon} #{fields}"
@@ -115,16 +115,16 @@ module Git
115
115
  abbreviate(file),
116
116
  File.file?(file) ? "#{File.size(file).commify} bytes" : nil,
117
117
  ],
118
- file && !file.empty? && File.file?(file),
119
- false
118
+ valid: file && !file.empty? && File.file?(file),
119
+ optional: false,
120
120
  )
121
121
  end
122
122
 
123
123
  private_class_method def directory_status(messages, directory)
124
124
  setting_status(
125
125
  messages,
126
- directory && !directory.empty? && File.directory?(directory),
127
- false
126
+ valid: directory && !directory.empty? && File.directory?(directory),
127
+ optional: false,
128
128
  )
129
129
  end
130
130
  end
@@ -1,7 +1,7 @@
1
1
  module Git
2
2
  module Multi
3
3
  NAME = 'git-multi'.freeze
4
- VERSION = '5.0.0'.freeze
4
+ VERSION = '6.0.0'.freeze
5
5
 
6
6
  def self.version
7
7
  "#{NAME} v#{VERSION}"
data/lib/git/multi.rb CHANGED
@@ -148,15 +148,15 @@ module Git
148
148
  else Dir.pwd
149
149
  end
150
150
  Dir.chdir(working_dir) do
151
- if STDOUT.tty? && STDERR.tty?
152
- STDOUT.puts "#{full_name.invert} (#{fractional_index})"
151
+ if $stdout.tty? && $stderr.tty?
152
+ $stdout.puts "#{full_name.invert} (#{fractional_index})"
153
153
  interactive.call(self)
154
- elsif STDERR.tty? && captured
154
+ elsif $stderr.tty? && captured
155
155
  errors = File.join(ENV['TMPDIR'], "git-multi.#{$PID}")
156
156
  captured.call(self, errors)
157
157
  if File.exist?(errors) && !File.zero?(errors)
158
158
  # rubocop:disable Style/StderrPuts
159
- STDERR.puts "#{full_name.invert} (#{fractional_index})"
159
+ $stderr.puts "#{full_name.invert} (#{fractional_index})"
160
160
  Kernel.system "cat #{errors} > /dev/tty ;"
161
161
  # rubocop:enable Style/StderrPuts
162
162
  end
@@ -195,7 +195,7 @@ module Git
195
195
  repo.local_path = Pathname.new(File.join(WORKAREA, repo.full_name))
196
196
  repo.fractional_index = "#{index + 1}/#{repos.count}"
197
197
  # fix 'repo' => https://github.com/octokit/octokit.rb/issues/727
198
- repo.compliant_ssh_url = 'ssh://' + repo.ssh_url.split(':', 2).join('/')
198
+ repo.compliant_ssh_url = "ssh://#{repo.ssh_url.split(':', 2).join('/')}"
199
199
  # remove optional '.git' suffix from 'git@github.com:pvdb/git-multi.git'
200
200
  repo.abbreviated_ssh_url = repo.ssh_url.chomp('.git')
201
201
  # extend 'repo' with 'just do it' capabilities
data/man/git-multi.1 CHANGED
@@ -2,12 +2,12 @@
2
2
  .\" Title: git-multi
3
3
  .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4
4
  .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
5
- .\" Date: 06/20/2020
5
+ .\" Date: 02/02/2022
6
6
  .\" Manual: Git Manual
7
- .\" Source: Git 2.27.0.112.g101b3204f3.dirty
7
+ .\" Source: Git 2.35.1.4.g5d01301f2b.dirty
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "GIT\-MULTI" "1" "06/20/2020" "Git 2\&.27\&.0\&.112\&.g101b32" "Git Manual"
10
+ .TH "GIT\-MULTI" "1" "02/02/2022" "Git 2\&.35\&.1\&.4\&.g5d01301f" "Git Manual"
11
11
  .\" -----------------------------------------------------------------
12
12
  .\" * Define some portability stuff
13
13
  .\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
31
31
  git-multi \- execute the same git command in multiple repositories
32
32
  .SH "VERSION"
33
33
  .sp
34
- This is \fBv5\&.0\&.0\fR of \fIgit multi\fR \&... hooray!
34
+ This is \fBv6\&.0\&.0\fR of \fIgit multi\fR \&... hooray!
35
35
  .SH "SYNOPSIS"
36
36
  .sp
37
37
  There are some options for \fBgit multi\fR itself, in which case it is invoked as follows:
@@ -490,32 +490,34 @@ The following is a list of valid arguments for the \fBgit multi \-\-query\fR opt
490
490
  .RS 4
491
491
  .\}
492
492
  .nf
493
- archive_url archived assignees_url
494
- blobs_url branches_url clone_url
495
- collaborators_url comments_url commits_url
496
- compare_url contents_url contributors_url
497
- created_at default_branch deployments_url
498
- description disabled downloads_url
499
- events_url fork forks
500
- forks_count forks_url full_name
501
- git_commits_url git_refs_url git_tags_url
502
- git_url has_downloads has_issues
503
- has_pages has_projects has_wiki
504
- homepage hooks_url html_url
505
- id issue_comment_url issue_events_url
506
- issues_url keys_url labels_url
507
- language languages_url license
508
- merges_url milestones_url mirror_url
509
- name network_count node_id
510
- notifications_url open_issues open_issues_count
511
- organization owner permissions
512
- private pulls_url pushed_at
513
- releases_url size ssh_url
514
- stargazers_count stargazers_url statuses_url
515
- subscribers_count subscribers_url subscription_url
516
- svn_url tags_url teams_url
517
- temp_clone_token trees_url updated_at
518
- url watchers watchers_count
493
+ allow_forking archive_url archived
494
+ assignees_url blobs_url branches_url
495
+ clone_url collaborators_url comments_url
496
+ commits_url compare_url contents_url
497
+ contributors_url created_at default_branch
498
+ deployments_url description disabled
499
+ downloads_url events_url fork
500
+ forks forks_count forks_url
501
+ full_name git_commits_url git_refs_url
502
+ git_tags_url git_url has_downloads
503
+ has_issues has_pages has_projects
504
+ has_wiki homepage hooks_url
505
+ html_url id is_template
506
+ issue_comment_url issue_events_url issues_url
507
+ keys_url labels_url language
508
+ languages_url license merges_url
509
+ milestones_url mirror_url name
510
+ network_count node_id notifications_url
511
+ open_issues open_issues_count organization
512
+ owner permissions private
513
+ pulls_url pushed_at releases_url
514
+ size ssh_url stargazers_count
515
+ stargazers_url statuses_url subscribers_count
516
+ subscribers_url subscription_url svn_url
517
+ tags_url teams_url temp_clone_token
518
+ topics trees_url updated_at
519
+ url visibility watchers
520
+ watchers_count
519
521
  .fi
520
522
  .if n \{\
521
523
  .RE
@@ -545,6 +547,33 @@ git multi \-\-json | jq \-r \*(Aq\&.[] | select(\&.fork == true) | \&.full_name\
545
547
  .if n \{\
546
548
  .RE
547
549
  .\}
550
+ .SH "CHAINED INVOCATION"
551
+ .sp
552
+ When \fBgit multi\fR gets its input from a Unix pipeline \fI(as opposed to from a TTY)\fR, it constructs an "implicit" multi repo comprised of the "full" repo names it reads from \fBSTDIN\fR \fI(one full repo name per line)\fR\&.
553
+ .sp
554
+ This allows multiple \fBgit multi\fR invocations to be chained, for example by using the \fB\-\-json\fR or \fB\-\-find\fR options as follows:
555
+ .sp
556
+ .if n \{\
557
+ .RS 4
558
+ .\}
559
+ .nf
560
+ # run a git query or subcommand on repos that aren\*(Aqt archived (on GitHub)
561
+ git multi ++<multi_repo> \-\-json | jq \-r \*(Aq\&.[] | select(\&."archived" == false) | \&."full_name"\*(Aq | git multi <git_command>
562
+ .fi
563
+ .if n \{\
564
+ .RE
565
+ .\}
566
+ .sp
567
+ .if n \{\
568
+ .RS 4
569
+ .\}
570
+ .nf
571
+ # run a shell command inside repos that have Ruby as their main language
572
+ git multi ++<multi_repo> \-\-find \*(Aqlanguage == "Ruby"\*(Aq | git multi \-\-raw \*(Aqcat \&.ruby\-version\*(Aq
573
+ .fi
574
+ .if n \{\
575
+ .RE
576
+ .\}
548
577
  .SH "FILES"
549
578
  .PP
550
579
  \fB${HOME}/Workarea\fR
data/man/git-multi.erb CHANGED
@@ -246,6 +246,19 @@ are some examples:
246
246
  # print out the name of all "forked" repositories
247
247
  git multi --json | jq -r '.[] | select(.fork == true) | .full_name'
248
248
 
249
+ CHAINED INVOCATION
250
+ ------------------
251
+
252
+ When `git multi` gets its input from a Unix pipeline _(as opposed to from a TTY)_, it constructs an "implicit" multi repo comprised of the "full" repo names it reads from `STDIN` _(one full repo name per line)_.
253
+
254
+ This allows multiple `git multi` invocations to be chained, for example by using the `--json` or `--find` options as follows:
255
+
256
+ # run a git query or subcommand on repos that aren't archived (on GitHub)
257
+ git multi ++<multi_repo> --json | jq -r '.[] | select(."archived" == false) | ."full_name"' | git multi <git_command>
258
+
259
+ # run a shell command inside repos that have Ruby as their main language
260
+ git multi ++<multi_repo> --find 'language == "Ruby"' | git multi --raw 'cat .ruby-version'
261
+
249
262
  FILES
250
263
  -----
251
264
 
data/man/git-multi.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
7
- <meta name="generator" content="AsciiDoc 9.0.0" />
7
+ <meta name="generator" content="AsciiDoc 10.1.1" />
8
8
  <title>git-multi(1)</title>
9
9
  <style type="text/css">
10
10
  /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
@@ -748,7 +748,7 @@ git-multi(1) Manual Page
748
748
  <div class="sect1">
749
749
  <h2 id="_version">VERSION</h2>
750
750
  <div class="sectionbody">
751
- <div class="paragraph"><p>This is <code>v5.0.0</code> of <em>git multi</em> &#8230; hooray!</p></div>
751
+ <div class="paragraph"><p>This is <code>v6.0.0</code> of <em>git multi</em> &#8230; hooray!</p></div>
752
752
  </div>
753
753
  </div>
754
754
  <div class="sect1">
@@ -1113,32 +1113,34 @@ and cached locally <em>(in binary format)</em> for performance and offline usage
1113
1113
  <div class="paragraph"><p>The following is a list of valid arguments for the <code>git multi --query</code> option:</p></div>
1114
1114
  <div class="literalblock">
1115
1115
  <div class="content">
1116
- <pre><code>archive_url archived assignees_url
1117
- blobs_url branches_url clone_url
1118
- collaborators_url comments_url commits_url
1119
- compare_url contents_url contributors_url
1120
- created_at default_branch deployments_url
1121
- description disabled downloads_url
1122
- events_url fork forks
1123
- forks_count forks_url full_name
1124
- git_commits_url git_refs_url git_tags_url
1125
- git_url has_downloads has_issues
1126
- has_pages has_projects has_wiki
1127
- homepage hooks_url html_url
1128
- id issue_comment_url issue_events_url
1129
- issues_url keys_url labels_url
1130
- language languages_url license
1131
- merges_url milestones_url mirror_url
1132
- name network_count node_id
1133
- notifications_url open_issues open_issues_count
1134
- organization owner permissions
1135
- private pulls_url pushed_at
1136
- releases_url size ssh_url
1137
- stargazers_count stargazers_url statuses_url
1138
- subscribers_count subscribers_url subscription_url
1139
- svn_url tags_url teams_url
1140
- temp_clone_token trees_url updated_at
1141
- url watchers watchers_count</code></pre>
1116
+ <pre><code>allow_forking archive_url archived
1117
+ assignees_url blobs_url branches_url
1118
+ clone_url collaborators_url comments_url
1119
+ commits_url compare_url contents_url
1120
+ contributors_url created_at default_branch
1121
+ deployments_url description disabled
1122
+ downloads_url events_url fork
1123
+ forks forks_count forks_url
1124
+ full_name git_commits_url git_refs_url
1125
+ git_tags_url git_url has_downloads
1126
+ has_issues has_pages has_projects
1127
+ has_wiki homepage hooks_url
1128
+ html_url id is_template
1129
+ issue_comment_url issue_events_url issues_url
1130
+ keys_url labels_url language
1131
+ languages_url license merges_url
1132
+ milestones_url mirror_url name
1133
+ network_count node_id notifications_url
1134
+ open_issues open_issues_count organization
1135
+ owner permissions private
1136
+ pulls_url pushed_at releases_url
1137
+ size ssh_url stargazers_count
1138
+ stargazers_url statuses_url subscribers_count
1139
+ subscribers_url subscription_url svn_url
1140
+ tags_url teams_url temp_clone_token
1141
+ topics trees_url updated_at
1142
+ url visibility watchers
1143
+ watchers_count</code></pre>
1142
1144
  </div></div>
1143
1145
  </div>
1144
1146
  </div>
@@ -1162,6 +1164,23 @@ git multi --json | jq -r '.[] | select(.fork == true) | .full_name'</code></pre>
1162
1164
  </div>
1163
1165
  </div>
1164
1166
  <div class="sect1">
1167
+ <h2 id="_chained_invocation">CHAINED INVOCATION</h2>
1168
+ <div class="sectionbody">
1169
+ <div class="paragraph"><p>When <code>git multi</code> gets its input from a Unix pipeline <em>(as opposed to from a TTY)</em>, it constructs an "implicit" multi repo comprised of the "full" repo names it reads from <code>STDIN</code> <em>(one full repo name per line)</em>.</p></div>
1170
+ <div class="paragraph"><p>This allows multiple <code>git multi</code> invocations to be chained, for example by using the <code>--json</code> or <code>--find</code> options as follows:</p></div>
1171
+ <div class="literalblock">
1172
+ <div class="content">
1173
+ <pre><code># run a git query or subcommand on repos that aren't archived (on GitHub)
1174
+ git multi ++&lt;multi_repo&gt; --json | jq -r '.[] | select(."archived" == false) | ."full_name"' | git multi &lt;git_command&gt;</code></pre>
1175
+ </div></div>
1176
+ <div class="literalblock">
1177
+ <div class="content">
1178
+ <pre><code># run a shell command inside repos that have Ruby as their main language
1179
+ git multi ++&lt;multi_repo&gt; --find 'language == "Ruby"' | git multi --raw 'cat .ruby-version'</code></pre>
1180
+ </div></div>
1181
+ </div>
1182
+ </div>
1183
+ <div class="sect1">
1165
1184
  <h2 id="_files">FILES</h2>
1166
1185
  <div class="sectionbody">
1167
1186
  <div class="dlist"><dl>
@@ -1222,7 +1241,7 @@ the <code>jq</code> command-line utility:
1222
1241
  <div id="footer">
1223
1242
  <div id="footer-text">
1224
1243
  Last updated
1225
- 2020-06-20 07:51:21 BST
1244
+ 2022-02-02 12:24:05 GMT
1226
1245
  </div>
1227
1246
  </div>
1228
1247
  </body>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-multi
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Vandenberk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-20 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-minitest
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  description: Run the same git command in a set of related repos
126
154
  email:
127
155
  - pvandenberk@mac.com
@@ -165,7 +193,11 @@ files:
165
193
  homepage: https://github.com/pvdb/git-multi
166
194
  licenses:
167
195
  - MIT
168
- metadata: {}
196
+ metadata:
197
+ homepage_uri: https://github.com/pvdb/git-multi
198
+ source_code_uri: https://github.com/pvdb/git-multi
199
+ changelog_uri: https://github.com/pvdb/git-multi/blob/master/README.md
200
+ rubygems_mfa_required: 'true'
169
201
  post_install_message: "\nThe only required setting for \e[1mgit multi\e[0m is:\n\n\tgit
170
202
  config --global --add \e[1mgithub.token\e[0m <your_github_oauth_token>\n\nThe following
171
203
  settings for \e[1mgit multi\e[0m are\noptional, and take 0, 1 or more values:\n\n\tgit
@@ -181,14 +213,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
213
  requirements:
182
214
  - - ">="
183
215
  - !ruby/object:Gem::Version
184
- version: '0'
216
+ version: 2.6.0
217
+ - - "<"
218
+ - !ruby/object:Gem::Version
219
+ version: 2.7.0
185
220
  required_rubygems_version: !ruby/object:Gem::Requirement
186
221
  requirements:
187
222
  - - ">="
188
223
  - !ruby/object:Gem::Version
189
224
  version: '0'
190
225
  requirements: []
191
- rubygems_version: 3.0.3
226
+ rubygems_version: 3.0.3.1
192
227
  signing_key:
193
228
  specification_version: 4
194
229
  summary: The ultimate multi-repo utility for git!