yggdrasil 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/yggdrasil/help.rb +1 -0
- data/lib/yggdrasil/init.rb +29 -7
- data/lib/yggdrasil/version.rb +1 -1
- data/lib/yggdrasil_common.rb +3 -2
- data/spec/help_spec.rb +1 -0
- data/spec/init_spec.rb +80 -10
- metadata +4 -4
data/lib/yggdrasil/help.rb
CHANGED
data/lib/yggdrasil/init.rb
CHANGED
@@ -9,7 +9,7 @@ class Yggdrasil
|
|
9
9
|
{'--username'=>:username, '--password'=>:password,
|
10
10
|
'--repo'=>:repo, '--parents'=>:parents?,
|
11
11
|
'--non-interactive'=>:non_interactive?,
|
12
|
-
'--server'=>:server })
|
12
|
+
'--force'=>:force?, '--server'=>:server })
|
13
13
|
@options[:ro_username] = @options[:username] if @options.has_key?(:username)
|
14
14
|
@options[:ro_password] = @options[:password] if @options.has_key?(:password)
|
15
15
|
|
@@ -24,7 +24,24 @@ class Yggdrasil
|
|
24
24
|
error 'can not find version string: svn --version' unless /version (\d+\.\d+\.\d+) / =~ out
|
25
25
|
svn_version=$1
|
26
26
|
|
27
|
-
|
27
|
+
while File.exist?(@config_file)
|
28
|
+
if @options[:force?]
|
29
|
+
`rm -rf #@config_file`
|
30
|
+
break
|
31
|
+
end
|
32
|
+
puts "Already exist config file: #@config_file"
|
33
|
+
exit 1 if @options[:non_interactive?]
|
34
|
+
print "Overwrite? [Yn]:"
|
35
|
+
res = $stdin.gets
|
36
|
+
puts
|
37
|
+
return nil unless res
|
38
|
+
res.chomp!
|
39
|
+
return nil if res == 'n'
|
40
|
+
if res == 'Y'
|
41
|
+
`rm -rf #@config_file`
|
42
|
+
break
|
43
|
+
end
|
44
|
+
end
|
28
45
|
|
29
46
|
get_server_config(true) if @options.has_key?(:server)
|
30
47
|
|
@@ -49,6 +66,7 @@ class Yggdrasil
|
|
49
66
|
end
|
50
67
|
url_parts = @options[:repo].split('/')
|
51
68
|
url_parts_num = url_parts.size
|
69
|
+
url = ''
|
52
70
|
loop do
|
53
71
|
if url_parts_num < 3
|
54
72
|
if anon_access
|
@@ -78,27 +96,31 @@ class Yggdrasil
|
|
78
96
|
|
79
97
|
if url_parts_num != url_parts.size
|
80
98
|
until @options[:parents?]
|
81
|
-
|
99
|
+
break if @options[:force?]
|
100
|
+
msg = "not exist directory(s) in repository: #{url_parts[url_parts_num...url_parts.size].join('/')}"
|
82
101
|
error msg if @options[:non_interactive?]
|
83
102
|
puts msg
|
84
|
-
print 'make directory(s)? [Yn]:
|
103
|
+
print 'make directory(s)? [Yn]:'
|
85
104
|
input = $stdin.gets
|
86
105
|
error 'can not gets $stdin' if input.nil?
|
106
|
+
puts
|
87
107
|
input.chomp!
|
88
108
|
return if input == 'n'
|
89
109
|
break if input == 'Y'
|
90
110
|
end
|
91
111
|
input_user_pass
|
92
112
|
`rm -rf #@mirror_dir`
|
93
|
-
system3 "#{svn} checkout --no-auth-cache --non-interactive" +
|
113
|
+
system3 "#{svn} checkout -N --no-auth-cache --non-interactive" +
|
94
114
|
" --username '#{@options[:ro_username]}' --password '#{@options[:ro_password]}'" +
|
95
115
|
" #{url_parts[0...url_parts_num].join('/')} #@mirror_dir"
|
96
116
|
add_paths = Array.new
|
97
117
|
path = @mirror_dir
|
98
118
|
while url_parts_num < url_parts.size
|
119
|
+
url += '/' + url_parts[url_parts_num]
|
99
120
|
path += '/' + url_parts[url_parts_num]
|
100
121
|
Dir.mkdir path
|
101
122
|
system3 "#{svn} add #{path}"
|
123
|
+
puts "add #{url}"
|
102
124
|
add_paths << path
|
103
125
|
url_parts_num += 1
|
104
126
|
end
|
@@ -135,10 +157,10 @@ class Yggdrasil
|
|
135
157
|
|
136
158
|
def init_get_repo_interactive
|
137
159
|
loop do
|
138
|
-
print 'Input svn repo URL:
|
160
|
+
print 'Input svn repo URL:'
|
139
161
|
input = $stdin.gets
|
140
162
|
error 'can not input svn repo URL' unless input
|
141
|
-
|
163
|
+
puts
|
142
164
|
if %r{^(http://|https://|file://|svn://|private)} =~ input
|
143
165
|
@options[:repo] = input
|
144
166
|
break
|
data/lib/yggdrasil/version.rb
CHANGED
data/lib/yggdrasil_common.rb
CHANGED
@@ -66,16 +66,17 @@ module YggdrasilCommon
|
|
66
66
|
def input_user_pass
|
67
67
|
until @options.has_key?(:username) do
|
68
68
|
error 'Can\'t get username or password' if @options.has_key?(:non_interactive?)
|
69
|
-
print 'Input svn username:
|
69
|
+
print 'Input svn username:'
|
70
70
|
input = $stdin.gets
|
71
71
|
error 'can not input username' unless input
|
72
|
+
puts
|
72
73
|
input.chomp!
|
73
74
|
return if input.size == 0
|
74
75
|
@options[:username] = @options[:ro_username] = input
|
75
76
|
end
|
76
77
|
until @options.has_key?(:password) do
|
77
78
|
error 'Can\'t get username or password' if @options.has_key?(:non_interactive?)
|
78
|
-
print 'Input svn password:
|
79
|
+
print 'Input svn password:'
|
79
80
|
#input = `sh -c 'read -s hoge;echo $hoge'`
|
80
81
|
system3 'stty -echo', false
|
81
82
|
input = $stdin.gets
|
data/spec/help_spec.rb
CHANGED
data/spec/init_spec.rb
CHANGED
@@ -33,8 +33,10 @@ describe Yggdrasil, 'init' do
|
|
33
33
|
%w{--non-interactive}
|
34
34
|
lambda{Yggdrasil.command(cmd_args)}.should raise_error(SystemExit)
|
35
35
|
end
|
36
|
-
err.should ==
|
37
|
-
|
36
|
+
err.should == <<"EOS"
|
37
|
+
#{File.basename($0)} error: not exist directory(s) in repository: mng-repo/host-name
|
38
|
+
|
39
|
+
EOS
|
38
40
|
end
|
39
41
|
|
40
42
|
it 'should error: need password' do
|
@@ -112,14 +114,17 @@ EOS
|
|
112
114
|
"foo\n"\
|
113
115
|
"Y\n"
|
114
116
|
end
|
115
|
-
out.should ==
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
117
|
+
out.should == <<"EOS"
|
118
|
+
Input svn repo URL:
|
119
|
+
check SVN access...
|
120
|
+
Input svn username:
|
121
|
+
Input svn password:
|
122
|
+
SVN access OK: svn://localhost/tmp/yggdrasil-test/svn-repo
|
123
|
+
not exist directory(s) in repository: mng-repo/host-name
|
124
|
+
make directory(s)? [Yn]:
|
125
|
+
add svn://localhost/tmp/yggdrasil-test/svn-repo/mng-repo
|
126
|
+
add svn://localhost/tmp/yggdrasil-test/svn-repo/mng-repo/host-name
|
127
|
+
EOS
|
123
128
|
end
|
124
129
|
|
125
130
|
it 'should make checker example at init' do
|
@@ -161,6 +166,71 @@ EOS
|
|
161
166
|
File.exist?('/tmp/yggdrasil-test/.yggdrasil/config').should be_true
|
162
167
|
end
|
163
168
|
|
169
|
+
it 'should alert and cancel: already exist config file' do
|
170
|
+
puts '---- should alert and cancel: already exist config file'
|
171
|
+
out = catch_out do
|
172
|
+
cmd_args = %w{init --repo file:///tmp/yggdrasil-test/hoge --username hoge --password foo}
|
173
|
+
Yggdrasil.command cmd_args, "n\n"
|
174
|
+
end
|
175
|
+
out.should == <<"EOS"
|
176
|
+
Already exist config file: /tmp/yggdrasil-test/.yggdrasil/config
|
177
|
+
Overwrite? [Yn]:
|
178
|
+
EOS
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'should alert and overwrite: already exist config file' do
|
182
|
+
puts '---- should alert and overwrite: already exist config file'
|
183
|
+
out = catch_out do
|
184
|
+
cmd_args = %w{init --repo private}
|
185
|
+
Yggdrasil.command cmd_args, "Y\n"
|
186
|
+
end
|
187
|
+
out.should == <<"EOS"
|
188
|
+
Already exist config file: /tmp/yggdrasil-test/.yggdrasil/config
|
189
|
+
Overwrite? [Yn]:
|
190
|
+
check SVN access...
|
191
|
+
SVN access OK: file:///tmp/yggdrasil-test/.yggdrasil/private_repo
|
192
|
+
EOS
|
193
|
+
config = `cat /tmp/yggdrasil-test/.yggdrasil/config | grep repo=`
|
194
|
+
config.should == <<"EOS"
|
195
|
+
repo=file:///tmp/yggdrasil-test/.yggdrasil/private_repo
|
196
|
+
EOS
|
197
|
+
end
|
198
|
+
|
199
|
+
it 'should error --non-interactive: already exist config file' do
|
200
|
+
puts '---- should error --non-interactive: already exist config file'
|
201
|
+
out = catch_out do
|
202
|
+
cmd_args = %w{init --repo file:///tmp/yggdrasil-test/svn-repo}+
|
203
|
+
%w{--username hoge --password foo} +
|
204
|
+
%w{--non-interactive}
|
205
|
+
lambda{Yggdrasil.command(cmd_args)}.should raise_error(SystemExit)
|
206
|
+
end
|
207
|
+
out.should == <<"EOS"
|
208
|
+
Already exist config file: /tmp/yggdrasil-test/.yggdrasil/config
|
209
|
+
EOS
|
210
|
+
config = `cat /tmp/yggdrasil-test/.yggdrasil/config | grep repo=`
|
211
|
+
config.should == <<"EOS"
|
212
|
+
repo=file:///tmp/yggdrasil-test/.yggdrasil/private_repo
|
213
|
+
EOS
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'should do --force: already exist config file' do
|
217
|
+
puts '---- should do --force: already exist config file'
|
218
|
+
out = catch_out do
|
219
|
+
cmd_args = %w{init}+
|
220
|
+
%w{--repo svn://localhost/tmp/yggdrasil-test/svn-repo/servers/hoge/} +
|
221
|
+
%w{--username hoge --password foo}+
|
222
|
+
%w{--non-interactive --force}
|
223
|
+
Yggdrasil.command cmd_args
|
224
|
+
end
|
225
|
+
out.should == <<"EOS"
|
226
|
+
check SVN access...
|
227
|
+
SVN access OK: svn://localhost/tmp/yggdrasil-test/svn-repo/servers
|
228
|
+
add svn://localhost/tmp/yggdrasil-test/svn-repo/servers/hoge
|
229
|
+
EOS
|
230
|
+
config = `cat /tmp/yggdrasil-test/.yggdrasil/config | grep repo=`
|
231
|
+
config.should == "repo=svn://localhost/tmp/yggdrasil-test/svn-repo/servers/hoge\n"
|
232
|
+
end
|
233
|
+
|
164
234
|
after(:all) do
|
165
235
|
sock = TCPSocket.open('localhost', 4000)
|
166
236
|
sock.puts('quit')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yggdrasil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash:
|
119
|
+
hash: 4459761969192795769
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
122
|
requirements:
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
segments:
|
127
127
|
- 0
|
128
|
-
hash:
|
128
|
+
hash: 4459761969192795769
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
131
|
rubygems_version: 1.8.25
|