yggdrasil 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/lib/yggdrasil.rb CHANGED
@@ -37,7 +37,7 @@ class Yggdrasil
37
37
  new.commit(args[1..-1])
38
38
  when 'diff', 'di'
39
39
  new.diff(args[1..-1])
40
- when 'help', '--help', 'h', '?'
40
+ when 'help', '--help', 'h', '-h', '?'
41
41
  new(false).help(args[1..-1])
42
42
  when 'init'
43
43
  new(false).init(args[1..-1])
@@ -51,7 +51,7 @@ class Yggdrasil
51
51
  new.status(args[1..-1])
52
52
  when 'update'
53
53
  new.update(args[1..-1])
54
- when 'version', '--version'
54
+ when 'version', '--version', '-v'
55
55
  new(false).version
56
56
  else
57
57
  $stderr .puts "Unknown subcommand: '#{args[0]}'"
@@ -1,4 +1,5 @@
1
1
  require 'find'
2
+ require 'stringio'
2
3
 
3
4
  class Yggdrasil
4
5
 
@@ -37,7 +37,8 @@ add: Add files to management list (add to subversion)
37
37
  usage #@base_cmd add [FILES...]
38
38
 
39
39
  EOS
40
- when 'check', 'c'
40
+
41
+ when 'check', 'c' ########################################### check (c)
41
42
  puts <<"EOS"
42
43
  check (c): check updating of managed files and the execution output of a commands.
43
44
  usage: #@base_cmd check [OPTIONS...]
@@ -58,7 +59,7 @@ Valid options:
58
59
  --non-interactive : do no interactive prompting
59
60
 
60
61
  EOS
61
- when 'cleanup'
62
+ when 'cleanup' ################################################ cleanup
62
63
  puts <<"EOS"
63
64
  cleanup: clean up the working copy
64
65
  usage: #@base_cmd cleanup [OPTIONS...]
@@ -68,7 +69,7 @@ Valid options:
68
69
  --password ARG : specify a password ARG
69
70
 
70
71
  EOS
71
- when 'commit', 'ci'
72
+ when 'commit', 'ci' ####################################### commit (ci)
72
73
  puts <<"EOS"
73
74
  commit (ci): Send changes from your local file to the repository.
74
75
  usage: #@base_cmd commit [OPTIONS...] [FILES...]
@@ -80,7 +81,7 @@ Valid options:
80
81
  --non-interactive : do no interactive prompting
81
82
 
82
83
  EOS
83
- when 'diff', 'di'
84
+ when 'diff', 'di' ########################################### diff (di)
84
85
  puts <<"EOS"
85
86
  diff (di): Display the differences between two revisions or paths.
86
87
  usage: #@base_cmd diff [OPTIONS...] [PATH...]
@@ -98,13 +99,13 @@ Valid options:
98
99
  'PREV' revision just before COMMITTED
99
100
 
100
101
  EOS
101
- when 'help', '?', 'h'
102
+ when 'help', '--help', 'h', '-h', '?' ###################### help (?,h)
102
103
  puts <<"EOS"
103
104
  help (?,h): Describe the usage of this program or its subcommands.
104
105
  usage: #@base_cmd help [SUBCOMMAND]
105
106
 
106
107
  EOS
107
- when 'init'
108
+ when 'init' ###################################################### init
108
109
  puts <<"EOS"
109
110
  init: Check environment and initialize configuration.
110
111
  usage: #@base_cmd init [OPTIONS...]
@@ -122,7 +123,7 @@ Valid options:
122
123
  e.g. 192.168.1.35:4000
123
124
 
124
125
  EOS
125
- when 'list', 'ls'
126
+ when 'list', 'ls' ########################################### list (ls)
126
127
  puts <<"EOS"
127
128
  list (ls): List directory entries in the repository.
128
129
  usage: #@base_cmd list [OPTIONS...] [PATH...]
@@ -141,7 +142,7 @@ Valid options:
141
142
  -R [--recursive] : descend recursively
142
143
 
143
144
  EOS
144
- when 'log'
145
+ when 'log' ######################################################## log
145
146
  puts <<"EOS"
146
147
  log: Show the log messages for a set of revision(s) and/or file(s).
147
148
  usage: #@base_cmd log [OPTIONS...] [PATH]
@@ -159,7 +160,7 @@ Valid options:
159
160
  'PREV' revision just before COMMITTED
160
161
 
161
162
  EOS
162
- when 'revert'
163
+ when 'revert' ################################################## revert
163
164
  puts <<"EOS"
164
165
  revert: Restore pristine working copy file (undo most local edits).
165
166
  usage: #@base_cmd revert [OPTIONS...] [PATH...]
@@ -170,16 +171,8 @@ Valid options:
170
171
  --non-interactive : do no interactive prompting
171
172
 
172
173
  EOS
173
- when 'server'
174
- puts <<"EOS"
175
- server: receive tcp connection in order to unify the setup and to record check results.
176
- usage: #@base_cmd server [OPTIONS...]
177
174
 
178
- Valid options:
179
- --daemon : daemon mode
180
-
181
- EOS
182
- when 'status', 'stat', 'st'
175
+ when 'status', 'stat', 'st' ######################### status (stat, st)
183
176
  puts <<"EOS"
184
177
  status (stat, st): Print the status of managed files and directories.
185
178
  usage: #@base_cmd status [OPTIONS...] [PATH...]
@@ -189,7 +182,7 @@ Valid options:
189
182
  --password ARG : specify a password ARG
190
183
 
191
184
  EOS
192
- when 'update'
185
+ when 'update' ################################################## update
193
186
  puts <<"EOS"
194
187
  update (up): Bring changes from the repository into the local files.
195
188
  usage: #@base_cmd update [OPTIONS...] [PATH...]
@@ -208,7 +201,7 @@ Valid options:
208
201
  --non-interactive : do no interactive prompting
209
202
 
210
203
  EOS
211
- when 'version', '--version'
204
+ when 'version', '--version', '-v' ######################## version (-v)
212
205
  puts <<"EOS"
213
206
  version: See the program version
214
207
  usage: #@base_cmd version
data/lib/yggdrasil/log.rb CHANGED
@@ -7,28 +7,39 @@ class Yggdrasil
7
7
  '-r'=>:revision, '--revision'=>:revision})
8
8
  get_user_pass_if_need_to_read_repo
9
9
 
10
- if args.size == 0
10
+ ext_options = Array.new
11
+ paths = Array.new
12
+ args.each do |arg|
13
+ if /^-/ =~ arg
14
+ ext_options << arg
15
+ else
16
+ paths << arg
17
+ end
18
+ end
19
+
20
+ if paths.size == 0
11
21
  dir = @mirror_dir + @current_dir
12
22
  error 'current directory is not managed.' unless File.exist?(dir)
13
- args << dir
23
+ paths << dir
14
24
  else
15
- args.collect! do |arg|
16
- if %r{^/} =~ arg
17
- @mirror_dir + arg
25
+ paths.collect! do |path|
26
+ if %r{^/} =~ path
27
+ @mirror_dir + path
18
28
  else
19
- @mirror_dir + @current_dir + '/' + arg
29
+ @mirror_dir + @current_dir + '/' + path
20
30
  end
21
31
  end
22
32
  end
23
33
 
24
34
  cmd_arg = "#@svn log --no-auth-cache --non-interactive"
25
35
  cmd_arg += username_password_options_to_read_repo
36
+ cmd_arg += ' ' + ext_options.join(' ') if ext_options.size != 0
26
37
  if @options.has_key?(:revision)
27
38
  cmd_arg += " -r #{@options[:revision]}"
28
39
  else
29
40
  cmd_arg += ' -r HEAD:1'
30
41
  end
31
- cmd_arg += ' ' + args.join(' ')
42
+ cmd_arg += ' ' + paths.join(' ')
32
43
  puts system3(cmd_arg)
33
44
  end
34
45
  end
@@ -1,5 +1,5 @@
1
1
  class Yggdrasil
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
 
4
4
  def version
5
5
  puts <<"EOS"
@@ -5,6 +5,7 @@ require 'yggdrasil_common'
5
5
  require 'yggdrasil_server/version'
6
6
  require 'yggdrasil_server/help'
7
7
  require 'yggdrasil_server/init'
8
+ require 'yggdrasil_server/server'
8
9
  require 'yggdrasil_server/results'
9
10
 
10
11
  require 'yggdrasil_server/get_repo'
@@ -28,19 +29,19 @@ class YggdrasilServer
28
29
  return
29
30
  end
30
31
  case args[0]
31
- when 'daemon'
32
+ when 'daemon', '-d'
32
33
  Process.daemon
33
34
  YggdrasilServer.new.server(args[1..-1])
34
- when 'debug'
35
+ when 'debug', '--debug'
35
36
  args << '--debug'
36
37
  YggdrasilServer.new.server(args[1..-1])
37
- when 'help', '--help', 'h', '?'
38
+ when 'help', '--help', 'h', '-h', '?'
38
39
  new(false).help(args[1..-1])
39
40
  when 'init'
40
41
  new(false).init_server(args[1..-1])
41
- when 'results'
42
+ when 'results', 'res'
42
43
  YggdrasilServer.new.results(args[1..-1])
43
- when 'version', '--version'
44
+ when 'version', '--version', '-v'
44
45
  new(false).version
45
46
  else
46
47
  $stderr .puts "Unknown subcommand: '#{args[0]}'"
@@ -63,48 +64,6 @@ class YggdrasilServer
63
64
  @ro_password = configs[:ro_password] if configs.has_key?(:ro_password)
64
65
  end
65
66
 
66
- def server(args)
67
- args = parse_options(args, {'--debug'=>:debug?})
68
- if args.size != 0
69
- error "invalid arguments: #{args.join(',')}"
70
- end
71
-
72
- puts "Start: yggdrasil server (port:#@port)"
73
- TCPServer.do_not_reverse_lookup = true
74
- s0 = TCPServer.open(@port.to_i)
75
- loop do
76
- sock = s0.accept
77
- msg = sock.gets # first line
78
- ctime = Time.now
79
- if msg && msg.chomp! != MESSAGE_QUIT
80
- msg.chomp!
81
- printf "RCV[%04d-%02d-%02d %02d:%02d:%02d.%03d](#{sock.peeraddr[3]}): #{msg}\n",
82
- ctime.year, ctime.month, ctime.day, ctime.hour, ctime.min, ctime.sec, (ctime.usec/1000).round
83
- msg_parts = msg.split
84
- if msg_parts.size != 0
85
- msg_cmd = msg_parts[0]
86
- part_names = MESSAGES[msg_cmd.to_sym]
87
- if (msg_parts.size - 1) == part_names.size
88
- # make hash of args
89
- msg_arg_hash = Hash.new
90
- (0...part_names.size).each do |i|
91
- msg_arg_hash[part_names[i]] = msg_parts[i+1]
92
- end
93
-
94
- # execute request (msg_cmd == method name)
95
- send msg_cmd, sock, msg_arg_hash
96
- else
97
- puts "fail: number of arguments is mismatch: #{msg}"
98
- end
99
- end
100
- end
101
- sock.close
102
- break if @options.has_key?(:debug?) && msg == MESSAGE_QUIT
103
- end
104
- s0.close # MESSAGE_QUIT
105
- end
106
-
107
67
  protected
108
68
  include YggdrasilCommon
109
69
  end
110
-
@@ -28,25 +28,25 @@ EOS
28
28
  error 'too many arguments.'
29
29
  else
30
30
  case args[0]
31
- when 'daemon'
31
+ when 'daemon', '-d' ####################################### daemon (-d)
32
32
  puts <<"EOS"
33
33
  daemon: launch TCP server by daemon mode.
34
34
  usage: #{File.basename($0)} daemon
35
35
 
36
36
  EOS
37
- when 'debug'
37
+ when 'debug', '--debug' ######################################### debug
38
38
  puts <<"EOS"
39
39
  debug: launch TCP server by debug mode.
40
40
  usage: #{File.basename($0)} debug
41
41
 
42
42
  EOS
43
- when 'help', '?', 'h'
43
+ when 'help', '--help', 'h', '-h', '?' ###################### help (h,?)
44
44
  puts <<"EOS"
45
45
  help (?,h): Describe the usage of this program or its subcommands.
46
46
  usage: #@base_cmd help [SUBCOMMAND]
47
47
 
48
48
  EOS
49
- when 'init'
49
+ when 'init' ###################################################### init
50
50
  puts <<"EOS"
51
51
  init: setup yggdrasil server configuration.
52
52
  usage: #@base_cmd init [OPTIONS...]
@@ -62,7 +62,7 @@ Valid options:
62
62
  --ro-password ARG : specify a password ARG for read only
63
63
 
64
64
  EOS
65
- when 'results'
65
+ when 'results', 'res' ################################### results (res)
66
66
  puts <<"EOS"
67
67
  results: display the result of yggdrasil check command.
68
68
  usage: #@base_cmd results [OPTIONS...]
@@ -71,7 +71,7 @@ Valid options:
71
71
  --expire ARG : minutes from the final report, to judge the host not be alive
72
72
 
73
73
  EOS
74
- when 'version', '--version'
74
+ when 'version', '--version', '-v' ######################## version (-v)
75
75
  puts <<"EOS"
76
76
  version: See the program version
77
77
  usage: #@base_cmd version
@@ -0,0 +1,43 @@
1
+ class YggdrasilServer
2
+
3
+ def server(args)
4
+ args = parse_options(args, {'--debug'=>:debug?})
5
+ if args.size != 0
6
+ error "invalid arguments: #{args.join(',')}"
7
+ end
8
+
9
+ puts "Start: yggdrasil server (port:#@port)"
10
+ TCPServer.do_not_reverse_lookup = true
11
+ s0 = TCPServer.open(@port.to_i)
12
+ loop do
13
+ sock = s0.accept
14
+ msg = sock.gets # first line
15
+ ctime = Time.now
16
+ if msg && msg.chomp! != MESSAGE_QUIT
17
+ msg.chomp!
18
+ printf "RCV[%04d-%02d-%02d %02d:%02d:%02d.%03d](#{sock.peeraddr[3]}): #{msg}\n",
19
+ ctime.year, ctime.month, ctime.day, ctime.hour, ctime.min, ctime.sec, (ctime.usec/1000).round
20
+ msg_parts = msg.split
21
+ if msg_parts.size != 0
22
+ msg_cmd = msg_parts[0]
23
+ part_names = MESSAGES[msg_cmd.to_sym]
24
+ if (msg_parts.size - 1) == part_names.size
25
+ # make hash of args
26
+ msg_arg_hash = Hash.new
27
+ (0...part_names.size).each do |i|
28
+ msg_arg_hash[part_names[i]] = msg_parts[i+1]
29
+ end
30
+
31
+ # execute request (msg_cmd == method name)
32
+ send msg_cmd, sock, msg_arg_hash
33
+ else
34
+ puts "fail: number of arguments is mismatch: #{msg}"
35
+ end
36
+ end
37
+ end
38
+ sock.close
39
+ break if @options.has_key?(:debug?) && msg == MESSAGE_QUIT
40
+ end
41
+ s0.close # MESSAGE_QUIT
42
+ end
43
+ end
data/spec/help_spec.rb CHANGED
@@ -293,19 +293,6 @@ Valid options:
293
293
  --password ARG : specify a password ARG
294
294
  --non-interactive : do no interactive prompting
295
295
 
296
- EOS
297
- end
298
-
299
- it 'should show help of server' do
300
- puts '---- should show help of server'
301
- out = catch_out{Yggdrasil.command %w{help server}}
302
- out.should == <<"EOS"
303
- server: receive tcp connection in order to unify the setup and to record check results.
304
- usage: #{File.basename($0)} server [OPTIONS...]
305
-
306
- Valid options:
307
- --daemon : daemon mode
308
-
309
296
  EOS
310
297
  end
311
298
  end
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.9
4
+ version: 0.0.10
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-02-10 00:00:00.000000000 Z
12
+ date: 2013-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -83,6 +83,7 @@ files:
83
83
  - lib/yggdrasil_server/init.rb
84
84
  - lib/yggdrasil_server/put_result.rb
85
85
  - lib/yggdrasil_server/results.rb
86
+ - lib/yggdrasil_server/server.rb
86
87
  - lib/yggdrasil_server/version.rb
87
88
  - spec/add_spec.rb
88
89
  - spec/check_spec.rb
@@ -118,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
119
  version: '0'
119
120
  segments:
120
121
  - 0
121
- hash: -670785694215858000
122
+ hash: 896107728749250326
122
123
  required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  none: false
124
125
  requirements:
@@ -127,10 +128,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
128
  version: '0'
128
129
  segments:
129
130
  - 0
130
- hash: -670785694215858000
131
+ hash: 896107728749250326
131
132
  requirements: []
132
133
  rubyforge_project:
133
- rubygems_version: 1.8.25
134
+ rubygems_version: 1.8.23
134
135
  signing_key:
135
136
  specification_version: 3
136
137
  summary: Type "ygg help" for usage.