git-superproject 0.1.0 → 0.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/.gitignore +1 -0
- data/bin/setup +8 -2
- data/exe/git-superproject +2 -2
- data/lib/git/superproject/version.rb +1 -1
- data/lib/git/superproject.rb +34 -22
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75cae9609ec54fe4995a92b362a638e116449cc1
|
4
|
+
data.tar.gz: 4fb1400df0a73442693593c51816af85b9c68c7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36777c3684f35cc9dc5b055122396ebfdf65ac62de58e22c6dcdfb8c3722dc907c1be5aff7d1238f1bd24abf2f4d40c8f3a9b72304fb7ec15d105de4f35f18a0
|
7
|
+
data.tar.gz: '08e03c351a822a72fb316af0700d8a96419685e3d863f78210e429892b5ebe3946bce199c26e17c41f9dbe9524822169bf1c07cb0e613031c595f626380f6a44'
|
data/.gitignore
CHANGED
data/bin/setup
CHANGED
@@ -3,6 +3,12 @@ set -euo pipefail
|
|
3
3
|
IFS=$'\n\t'
|
4
4
|
set -vx
|
5
5
|
|
6
|
-
bundle
|
6
|
+
[ -f Brewfile ] && brew bundle
|
7
|
+
[ -f .ruby-version ] && rbenv install -s
|
8
|
+
gem install --conservative bundler
|
9
|
+
[ -f Gemfile ] && bundle install
|
7
10
|
|
8
|
-
|
11
|
+
set +vxeu
|
12
|
+
echo
|
13
|
+
|
14
|
+
# That's all Folks!
|
data/exe/git-superproject
CHANGED
@@ -27,8 +27,8 @@ when /\A--/
|
|
27
27
|
end
|
28
28
|
case command
|
29
29
|
when '--list' then puts config.list(name).to_json
|
30
|
-
when '--add' then puts config.add(name, ARGV).to_json
|
31
|
-
when '--remove' then puts config.remove(name, ARGV).to_json
|
30
|
+
when '--add' then puts config.add(name, *ARGV).to_json
|
31
|
+
when '--remove' then puts config.remove(name, *ARGV).to_json
|
32
32
|
else
|
33
33
|
abort \
|
34
34
|
"Unknown 'git superproject' command: #{command}\n\n" \
|
data/lib/git/superproject.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'git/superproject/version'
|
2
2
|
|
3
|
+
require 'set'
|
3
4
|
require 'json'
|
4
5
|
require 'English'
|
5
6
|
require 'pathname'
|
@@ -26,50 +27,41 @@ module Git
|
|
26
27
|
|
27
28
|
def initialize(key_value_pairs)
|
28
29
|
@superprojects = Hash.new do |superprojects, name|
|
29
|
-
superprojects[name] =
|
30
|
+
superprojects[name] = Set.new # guarantee uniqueness
|
30
31
|
end
|
31
32
|
|
32
33
|
key_value_pairs.each do |key_value|
|
33
34
|
key, value = key_value.split('=')
|
34
|
-
|
35
|
-
key =~ /\Asuperproject\.(?<name>.*)\.repo\z/
|
36
|
-
raise "Invalid superproject key: #{key}" unless $LAST_MATCH_INFO
|
37
|
-
|
38
|
-
name = $LAST_MATCH_INFO[:name]
|
39
|
-
|
40
|
-
value =~ %r{\A[-\w]+/[-\w]+\z}
|
41
|
-
raise "Invalid repo name: #{value}" unless $LAST_MATCH_INFO
|
42
|
-
|
43
|
-
@superprojects[name] << value
|
35
|
+
process(key, value)
|
44
36
|
end
|
45
37
|
end
|
46
38
|
|
47
39
|
def list(name)
|
48
|
-
@superprojects[name]
|
40
|
+
@superprojects[name].to_a.sort
|
49
41
|
end
|
50
42
|
|
51
|
-
def add(name, repos)
|
43
|
+
def add(name, *repos)
|
52
44
|
repos.each do |repo|
|
53
|
-
|
45
|
+
add_to(name, repo)
|
54
46
|
end
|
55
|
-
|
47
|
+
list(name)
|
56
48
|
end
|
57
49
|
|
58
|
-
def remove(name, repos)
|
50
|
+
def remove(name, *repos)
|
59
51
|
repos.each do |repo|
|
60
|
-
|
52
|
+
remove_from(name, repo)
|
61
53
|
end
|
62
|
-
|
54
|
+
list(name)
|
63
55
|
end
|
64
56
|
|
65
57
|
def write_to(file)
|
66
58
|
# create backup of original file
|
67
59
|
FileUtils.mv(file, "#{file}~") if File.exist? file
|
68
60
|
|
69
|
-
@superprojects.each do |name
|
70
|
-
|
71
|
-
|
72
|
-
`git config --file #{file} --add #{
|
61
|
+
@superprojects.keys.each do |name|
|
62
|
+
key = "superproject.#{name}.repo"
|
63
|
+
list(name).each do |repo|
|
64
|
+
`git config --file #{file} --add #{key} #{repo}`
|
73
65
|
end
|
74
66
|
end
|
75
67
|
|
@@ -81,6 +73,26 @@ module Git
|
|
81
73
|
@superprojects.to_json
|
82
74
|
end
|
83
75
|
|
76
|
+
private
|
77
|
+
|
78
|
+
def process(key, repo)
|
79
|
+
key =~ /\Asuperproject\.(?<name>.*)\.repo\z/
|
80
|
+
raise "Invalid superproject key: #{key}" unless $LAST_MATCH_INFO
|
81
|
+
|
82
|
+
add_to($LAST_MATCH_INFO[:name], repo)
|
83
|
+
end
|
84
|
+
|
85
|
+
def add_to(name, repo)
|
86
|
+
repo =~ %r{\A[-.\w]+/[-.\w]+\z}
|
87
|
+
raise "Invalid repo name: #{repo}" unless $LAST_MATCH_INFO
|
88
|
+
|
89
|
+
@superprojects[name] << repo
|
90
|
+
end
|
91
|
+
|
92
|
+
def remove_from(name, repo)
|
93
|
+
@superprojects[name].delete(repo)
|
94
|
+
end
|
95
|
+
|
84
96
|
end
|
85
97
|
|
86
98
|
module Commands
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-superproject
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.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: 2018-11-
|
11
|
+
date: 2018-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|