mgit 0.3.4 → 0.4.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/lib/mgit/appdata.rb +69 -7
- data/lib/mgit/commands/config.rb +26 -0
- data/lib/mgit/commands/fetch.rb +33 -17
- data/lib/mgit/configuration.rb +45 -0
- data/lib/mgit/exceptions.rb +2 -0
- data/lib/mgit/version.rb +1 -1
- data/lib/mgit.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 712d93ce29c8c64e4b37cd820a6216205edd2746
|
4
|
+
data.tar.gz: da97e60a84ab1fc96fb272ad095f6b0eedaedc10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2d964c20c6b1c1daef35f4774b008c965b60ec7c610d9228ff588ee452d854ee9ea6c71101649bf417606f14417e79b6fc168eb2908e4aa951433fdd3746c4c
|
7
|
+
data.tar.gz: 1f24ca99c54e9b41e0d8ce6d1231cd95c7aa3c23669f395f1ce1e98218632983ad6c07ab796ced72af18b6c80eaf61c72fecb6715b21bf503ed8ae5a27561d7b
|
data/lib/mgit/appdata.rb
CHANGED
@@ -12,7 +12,7 @@ module MGit
|
|
12
12
|
if AppDataVersion.active
|
13
13
|
AppDataVersion.updates.each { |u| u.migrate! }
|
14
14
|
else
|
15
|
-
AppDataVersion.latest.setup
|
15
|
+
AppDataVersion.latest.setup!
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -78,21 +78,21 @@ module MGit
|
|
78
78
|
File.file?(repofile)
|
79
79
|
end
|
80
80
|
|
81
|
+
def setup!
|
82
|
+
FileUtils.touch(repofile)
|
83
|
+
end
|
84
|
+
|
81
85
|
def load(key, default)
|
82
|
-
raise ImplementationError.new(
|
86
|
+
raise ImplementationError.new("LegacyAppData::load called with unknown key #{key}.") if key != :repositories
|
83
87
|
repos = YAML.load_file(repofile)
|
84
88
|
repos ? repos : default
|
85
89
|
end
|
86
90
|
|
87
91
|
def save!(key, value)
|
88
|
-
raise ImplementationError.new(
|
92
|
+
raise ImplementationError.new("LegacyAppData::save! called with unknown key #{key}.") if key != :repositories
|
89
93
|
File.open(repofile, 'w') { |fd| fd.write value.to_yaml }
|
90
94
|
end
|
91
95
|
|
92
|
-
def setup
|
93
|
-
FileUtils.touch(repofile)
|
94
|
-
end
|
95
|
-
|
96
96
|
private
|
97
97
|
|
98
98
|
def repofile
|
@@ -100,5 +100,67 @@ module MGit
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
+
class AppDataVersion1 < AppDataVersion
|
104
|
+
def version
|
105
|
+
1
|
106
|
+
end
|
107
|
+
|
108
|
+
def active?
|
109
|
+
File.directory?(config_dir) && (load(:version, nil) == '1')
|
110
|
+
end
|
111
|
+
|
112
|
+
def migrate!
|
113
|
+
setup!
|
114
|
+
|
115
|
+
old_repofile = LegacyAppData.new.send(:repofile)
|
116
|
+
FileUtils.mv(old_repofile, repo_file) if File.file?(old_repofile)
|
117
|
+
end
|
118
|
+
|
119
|
+
def setup!
|
120
|
+
FileUtils.mkdir_p(config_dir)
|
121
|
+
File.open(config_file, 'w') { |fd| fd.write ({ :version => '1' }.to_yaml) }
|
122
|
+
FileUtils.touch(repo_file)
|
123
|
+
end
|
124
|
+
|
125
|
+
def load(key, default)
|
126
|
+
case key
|
127
|
+
when :repositories
|
128
|
+
repos = YAML.load_file(repo_file)
|
129
|
+
repos ? repos : default
|
130
|
+
when *Configuration::KEYS.keys, :version
|
131
|
+
config = YAML.load_file(config_file)
|
132
|
+
(config && config.has_key?(key)) ? config[key] : default
|
133
|
+
else
|
134
|
+
raise ImplementationError.new("AppDataVersion1::load called with unknown key #{key}.")
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def save!(key, value)
|
139
|
+
case key
|
140
|
+
when :repositories
|
141
|
+
File.open(repo_file, 'w') { |fd| fd.write value.to_yaml }
|
142
|
+
when *Configuration::KEYS.keys
|
143
|
+
config = YAML.load_file(config_file)
|
144
|
+
config[key] = value
|
145
|
+
File.open(config_file, 'w') { |fd| fd.write config.to_yaml }
|
146
|
+
else
|
147
|
+
raise ImplementationError.new("AppDataVersion1::save! called with unknown key #{key}.")
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
private
|
152
|
+
|
153
|
+
def config_dir
|
154
|
+
XDG['CONFIG_HOME'].to_path.join('mgit')
|
155
|
+
end
|
156
|
+
|
157
|
+
def repo_file
|
158
|
+
File.join(config_dir, 'repositories.yml')
|
159
|
+
end
|
160
|
+
|
161
|
+
def config_file
|
162
|
+
File.join(config_dir, 'config.yml')
|
163
|
+
end
|
164
|
+
end
|
103
165
|
end
|
104
166
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module MGit
|
2
|
+
class ConfigCommand < Command
|
3
|
+
def execute(args)
|
4
|
+
key = args[0]
|
5
|
+
value = args[1]
|
6
|
+
|
7
|
+
Configuration.set(key, value)
|
8
|
+
rescue ConfigurationError => e
|
9
|
+
raise CommandUsageError.new(e.to_s, self)
|
10
|
+
end
|
11
|
+
|
12
|
+
def arity
|
13
|
+
[2, 2]
|
14
|
+
end
|
15
|
+
|
16
|
+
def usage
|
17
|
+
'config <key> <value>'
|
18
|
+
end
|
19
|
+
|
20
|
+
def description
|
21
|
+
'configure MGit'
|
22
|
+
end
|
23
|
+
|
24
|
+
register_command :config
|
25
|
+
end
|
26
|
+
end
|
data/lib/mgit/commands/fetch.rb
CHANGED
@@ -3,25 +3,11 @@ require 'open3'
|
|
3
3
|
module MGit
|
4
4
|
class FetchCommand < Command
|
5
5
|
def execute(args)
|
6
|
+
thread_class = Configuration.threads ? Thread : NullThread
|
6
7
|
threads = []
|
7
8
|
Registry.each do |repo|
|
8
|
-
threads <<
|
9
|
-
|
10
|
-
|
11
|
-
if st.exitstatus != 0
|
12
|
-
perror "Failed to read remotes for repository #{repo.name}! Abort."
|
13
|
-
Thread.exit
|
14
|
-
end
|
15
|
-
|
16
|
-
remotes.split.each do |remote|
|
17
|
-
sout, st = Open3.capture2("git fetch #{remote}", :chdir => repo.path)
|
18
|
-
if st.exitstatus == 0
|
19
|
-
pinfo "Fetched #{remote} in repository #{repo.name}."
|
20
|
-
else
|
21
|
-
perror "Failed to fetch #{remote} in repository #{repo.name}! Abort."
|
22
|
-
break
|
23
|
-
end
|
24
|
-
end
|
9
|
+
threads << thread_class.new do
|
10
|
+
fetch(repo)
|
25
11
|
end
|
26
12
|
end
|
27
13
|
|
@@ -41,5 +27,35 @@ module MGit
|
|
41
27
|
end
|
42
28
|
|
43
29
|
register_command :fetch
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def fetch(repo)
|
34
|
+
remotes, st = Open3.capture2('git remote', :chdir => repo.path)
|
35
|
+
|
36
|
+
if st.exitstatus != 0
|
37
|
+
perror "Failed to read remotes for repository #{repo.name}! Abort."
|
38
|
+
Thread.exit
|
39
|
+
end
|
40
|
+
|
41
|
+
remotes.split.each do |remote|
|
42
|
+
sout, st = Open3.capture2("git fetch #{remote}", :chdir => repo.path)
|
43
|
+
if st.exitstatus == 0
|
44
|
+
pinfo "Fetched #{remote} in repository #{repo.name}."
|
45
|
+
else
|
46
|
+
perror "Failed to fetch #{remote} in repository #{repo.name}! Abort."
|
47
|
+
break
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class NullThread
|
53
|
+
def initialize
|
54
|
+
yield
|
55
|
+
end
|
56
|
+
|
57
|
+
def join
|
58
|
+
end
|
59
|
+
end
|
44
60
|
end
|
45
61
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module MGit
|
2
|
+
module Configuration
|
3
|
+
KEYS = {
|
4
|
+
:threads => {
|
5
|
+
:default => true,
|
6
|
+
:description => 'set to true if you want the fetch command to be threaded'
|
7
|
+
}
|
8
|
+
}
|
9
|
+
|
10
|
+
class << self
|
11
|
+
KEYS.each do |k, v|
|
12
|
+
define_method(k.to_s) do
|
13
|
+
AppData.load(k, v[:default])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.set(key, value)
|
19
|
+
case key
|
20
|
+
when 'threads'
|
21
|
+
unless ['true', 'false', 'on', 'off'].include?(value)
|
22
|
+
raise ConfigurationError.new("Illegal value for key threads.")
|
23
|
+
end
|
24
|
+
|
25
|
+
if ['true', 'on'].include?(value)
|
26
|
+
self.threads = true
|
27
|
+
else
|
28
|
+
self.threads = false
|
29
|
+
end
|
30
|
+
else
|
31
|
+
raise ConfigurationError.new("Unknown key: #{key}.")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
class << self
|
38
|
+
KEYS.each do |k, v|
|
39
|
+
define_method("#{k.to_s}=") do |value|
|
40
|
+
AppData.save!(k, value)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/mgit/exceptions.rb
CHANGED
data/lib/mgit/version.rb
CHANGED
data/lib/mgit.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mgit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FlavourSys Technology GmbH
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -79,9 +79,11 @@ files:
|
|
79
79
|
- lib/mgit/version.rb
|
80
80
|
- lib/mgit/appdata.rb
|
81
81
|
- lib/mgit/registry.rb
|
82
|
+
- lib/mgit/configuration.rb
|
82
83
|
- lib/mgit/exceptions.rb
|
83
84
|
- lib/mgit/commands/list.rb
|
84
85
|
- lib/mgit/commands/grep.rb
|
86
|
+
- lib/mgit/commands/config.rb
|
85
87
|
- lib/mgit/commands/remove_all.rb
|
86
88
|
- lib/mgit/commands/statistics.rb
|
87
89
|
- lib/mgit/commands/version.rb
|