git-multi 1.1.0 → 1.2.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 +4 -4
- data/exe/git-multi +2 -3
- data/git-multi.gemspec +1 -1
- data/lib/git/hub.rb +8 -10
- data/lib/git/multi.rb +0 -2
- data/lib/git/multi/commands.rb +1 -14
- data/lib/git/multi/settings.rb +14 -2
- data/lib/git/multi/version.rb +1 -1
- data/man/git-multi.1 +3 -3
- data/man/git-multi.erb +2 -2
- data/man/git-multi.html +4 -4
- metadata +3 -4
- data/lib/ext/notify.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13f924a6a3aad4601b2fd83d11b92f628756ba43bfaaa0d9a968754cd94ee67f
|
4
|
+
data.tar.gz: e75c6fe671c96eedb1c9b0c0c2c545e13ac86ae95dd7225dad99ee75a95728f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5ccee6a83810fd1dbfa637d2e083695b31e8449dc76fb66829e642adab2fd42e73b013f220a40fc7889d4b6c308abf549d2cb6e15a1553370b99a82377d359f
|
7
|
+
data.tar.gz: 9aa769c201d6be15ef71b08d4120ba8129c3bfe319fefaf513503161c34e674c93bd7533ba24330e999caa82e928c1dd1f49d3e34fb21cfd8d917f68b3a74807
|
data/exe/git-multi
CHANGED
@@ -11,7 +11,7 @@ if (command = ARGV.shift).start_with? '++'
|
|
11
11
|
else
|
12
12
|
abort \
|
13
13
|
"Unknown multi repo: #{multi_repo}\n\n" \
|
14
|
-
'(use --
|
14
|
+
'(use --report to list all known multi repos)'
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -21,7 +21,7 @@ when /\A--/
|
|
21
21
|
when '--version' then Git::Multi::Commands.version
|
22
22
|
when '--help' then Git::Multi::Commands.help
|
23
23
|
when '--html' then Git::Multi::Commands.html
|
24
|
-
when '--
|
24
|
+
when '--report' then Git::Multi::Commands.report
|
25
25
|
when '--count' then Git::Multi::Commands.count
|
26
26
|
when '--refresh' then Git::Multi::Commands.refresh
|
27
27
|
when '--json' then Git::Multi::Commands.json(multi_repo)
|
@@ -47,7 +47,6 @@ when /\A--/
|
|
47
47
|
when nil, '', '-h'
|
48
48
|
Git::Multi::Commands.help
|
49
49
|
else
|
50
|
-
Git::Multi::Commands.report(multi_repo)
|
51
50
|
Git::Multi::Commands.exec(command, ARGV, multi_repo)
|
52
51
|
end
|
53
52
|
|
data/git-multi.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.post_install_message = Git::Multi::PIM
|
27
27
|
|
28
|
-
spec.add_dependency 'octokit', '~> 4.
|
28
|
+
spec.add_dependency 'octokit', '~> 4.13'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler'
|
31
31
|
spec.add_development_dependency 'pry'
|
data/lib/git/hub.rb
CHANGED
@@ -77,11 +77,10 @@ module Git
|
|
77
77
|
|
78
78
|
@user_repositories = Hash.new { |repos, (user, type)|
|
79
79
|
repos[[user, type]] = begin
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
end
|
80
|
+
client
|
81
|
+
.repositories(user, type: type)
|
82
|
+
.sort_by { |repo| repo[:name].downcase }
|
83
|
+
end
|
85
84
|
}
|
86
85
|
|
87
86
|
def user_repositories(user, type = :owner)
|
@@ -95,11 +94,10 @@ module Git
|
|
95
94
|
|
96
95
|
@org_repositories = Hash.new { |repos, (org, type)|
|
97
96
|
repos[[org, type]] = begin
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
end
|
97
|
+
client
|
98
|
+
.org_repositories(org, type: type)
|
99
|
+
.sort_by { |repo| repo[:name].downcase }
|
100
|
+
end
|
103
101
|
}
|
104
102
|
|
105
103
|
def org_repositories(org, type = :owner)
|
data/lib/git/multi.rb
CHANGED
@@ -9,7 +9,6 @@ require 'sawyer'
|
|
9
9
|
|
10
10
|
require 'ext/dir'
|
11
11
|
require 'ext/string'
|
12
|
-
require 'ext/notify'
|
13
12
|
require 'ext/kernel'
|
14
13
|
require 'ext/commify'
|
15
14
|
require 'ext/sawyer/resource'
|
@@ -155,7 +154,6 @@ module Git
|
|
155
154
|
if File.size?(REPOSITORIES)
|
156
155
|
# rubocop:disable Security/MarshalLoad
|
157
156
|
@repositories ||= Marshal.load(File.read(REPOSITORIES)).tap do |projects|
|
158
|
-
notify "Finished loading #{REPOSITORIES}"
|
159
157
|
projects.each_with_index do |project, index|
|
160
158
|
# ensure 'project' has handle on an Octokit client
|
161
159
|
project.client = Git::Hub.send(:client)
|
data/lib/git/multi/commands.rb
CHANGED
@@ -16,15 +16,11 @@ module Git
|
|
16
16
|
Kernel.exec "open #{Git::Multi::HTML_PAGE}"
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
# Settings.user_status(Git::Multi::USER)
|
21
|
-
# Settings.organization_status(Git::Multi::ORGANIZATIONS)
|
22
|
-
# Settings.token_status(Git::Multi::TOKEN)
|
19
|
+
def report
|
23
20
|
Settings.home_status(Git::Multi::HOME)
|
24
21
|
Settings.main_workarea_status(Git::Multi::WORKAREA)
|
25
22
|
Settings.user_workarea_status(Git::Multi::USERS)
|
26
23
|
Settings.organization_workarea_status(Git::Multi::ORGANIZATIONS)
|
27
|
-
# Settings.file_status(Git::Multi::REPOSITORIES)
|
28
24
|
end
|
29
25
|
|
30
26
|
def count
|
@@ -79,7 +75,6 @@ module Git
|
|
79
75
|
FileUtils.mkdir_p repo.parent_dir
|
80
76
|
repo.just_do_it(
|
81
77
|
->(project) {
|
82
|
-
notify "Cloning '#{repo.full_name}' repo into #{repo.parent_dir.parent}"
|
83
78
|
Kernel.system "git clone -q #{project.rels[:ssh].href.shellescape}"
|
84
79
|
},
|
85
80
|
->(project) {
|
@@ -150,14 +145,6 @@ module Git
|
|
150
145
|
system(args.flatten, multi_repo)
|
151
146
|
end
|
152
147
|
|
153
|
-
def report(multi_repo = nil)
|
154
|
-
(missing = Git::Multi.missing_repositories_for(multi_repo)).any? &&
|
155
|
-
notify(
|
156
|
-
missing.map(&:full_name),
|
157
|
-
subtitle: "#{missing.count} missing repos"
|
158
|
-
)
|
159
|
-
end
|
160
|
-
|
161
148
|
def exec(command, args = [], multi_repo = nil)
|
162
149
|
args.unshift ['git', '--no-pager', command]
|
163
150
|
system(args.flatten, multi_repo)
|
data/lib/git/multi/settings.rb
CHANGED
@@ -8,7 +8,7 @@ module Git
|
|
8
8
|
|
9
9
|
module_function
|
10
10
|
|
11
|
-
def setting_status(messages, valid, optional =
|
11
|
+
def setting_status(messages, valid = false, optional = true)
|
12
12
|
fields = messages.compact.join(' - ')
|
13
13
|
icon = valid ? TICK : optional ? ARROW : CROSS
|
14
14
|
if interactive?
|
@@ -45,10 +45,22 @@ module Git
|
|
45
45
|
[
|
46
46
|
message,
|
47
47
|
File.join(abbreviate(workarea, :workarea), owner),
|
48
|
-
File.directory?(workarea) ? "#{Dir.new(workarea).git_repos(owner).count.commify} repos" : nil
|
49
48
|
],
|
50
49
|
workarea
|
51
50
|
)
|
51
|
+
|
52
|
+
github_count = Git::Multi.repositories_for(owner).count
|
53
|
+
cloned_count = Git::Multi.cloned_repositories_for(owner).count
|
54
|
+
missing_count = (github_count - cloned_count)
|
55
|
+
subdir_count = Dir.new(workarea).git_repos(owner).count
|
56
|
+
surplus_count = (subdir_count - cloned_count)
|
57
|
+
|
58
|
+
setting_status(["\tGitHub ", github_count])
|
59
|
+
setting_status(["\tcloned ", cloned_count, "(#{missing_count} missing)"])
|
60
|
+
Git::Multi.missing_repositories_for(owner).each do |missing|
|
61
|
+
setting_status(["\tmissing", missing.full_name], false, false)
|
62
|
+
end
|
63
|
+
setting_status(["\tsubdirs", subdir_count, "(#{surplus_count} surplus)"])
|
52
64
|
end
|
53
65
|
|
54
66
|
def user_status(user)
|
data/lib/git/multi/version.rb
CHANGED
data/man/git-multi.1
CHANGED
@@ -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 \fBv1\&.
|
34
|
+
This is \fBv1\&.2\&.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:
|
@@ -85,9 +85,9 @@ you\(cqre looking at it: show the man page
|
|
85
85
|
open the HTML version of the man page
|
86
86
|
.RE
|
87
87
|
.PP
|
88
|
-
\-\-
|
88
|
+
\-\-report
|
89
89
|
.RS 4
|
90
|
-
|
90
|
+
report on various repository stats and metrics
|
91
91
|
.RE
|
92
92
|
.PP
|
93
93
|
\-\-count
|
data/man/git-multi.erb
CHANGED
data/man/git-multi.html
CHANGED
@@ -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>v1.
|
751
|
+
<div class="paragraph"><p>This is <code>v1.2.0</code> of <em>git multi</em> … hooray!</p></div>
|
752
752
|
</div>
|
753
753
|
</div>
|
754
754
|
<div class="sect1">
|
@@ -822,11 +822,11 @@ a single organization, the optional <code>++<multi_repo></code> argument c
|
|
822
822
|
</p>
|
823
823
|
</dd>
|
824
824
|
<dt class="hdlist1">
|
825
|
-
--
|
825
|
+
--report
|
826
826
|
</dt>
|
827
827
|
<dd>
|
828
828
|
<p>
|
829
|
-
|
829
|
+
report on various repository stats and metrics
|
830
830
|
</p>
|
831
831
|
</dd>
|
832
832
|
<dt class="hdlist1">
|
@@ -1200,7 +1200,7 @@ the <code>jq</code> command-line utility:
|
|
1200
1200
|
<div id="footer">
|
1201
1201
|
<div id="footer-text">
|
1202
1202
|
Last updated
|
1203
|
-
2018-11-09
|
1203
|
+
2018-11-09 16:23:25 GMT
|
1204
1204
|
</div>
|
1205
1205
|
</div>
|
1206
1206
|
</body>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-multi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Vandenberk
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '4.
|
19
|
+
version: '4.13'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '4.
|
26
|
+
version: '4.13'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,7 +92,6 @@ files:
|
|
92
92
|
- lib/ext/commify.rb
|
93
93
|
- lib/ext/dir.rb
|
94
94
|
- lib/ext/kernel.rb
|
95
|
-
- lib/ext/notify.rb
|
96
95
|
- lib/ext/sawyer/resource.rb
|
97
96
|
- lib/ext/string.rb
|
98
97
|
- lib/git/hub.rb
|
data/lib/ext/notify.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'terminal-notifier'
|
3
|
-
rescue LoadError
|
4
|
-
# NOOP - "TerminalNotifier" is optional
|
5
|
-
# will only be used if it is installed!
|
6
|
-
end
|
7
|
-
|
8
|
-
def notify(message, options = {}, verbose = false)
|
9
|
-
# print the given message to STDERR, if the
|
10
|
-
# script is running with "--verbose" option
|
11
|
-
subtitle = options[:subtitle]
|
12
|
-
warn(subtitle ? "#{subtitle}: #{message}" : message) if $VERBOSE
|
13
|
-
# send a given message to the Mac OS X Notification Center
|
14
|
-
# but only if the git-multi script is running interactively
|
15
|
-
# and if the "terminal-notifier" gem has been installed...
|
16
|
-
interactive? && defined?(TerminalNotifier) && begin
|
17
|
-
options[:title] ||= 'git-multi'
|
18
|
-
TerminalNotifier.notify(message, options, verbose)
|
19
|
-
end
|
20
|
-
end
|