tsalzer-syscmd 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/syscmd.rb +20 -0
- data/spec/command_exec_spec.rb +29 -5
- data/spec/tester.rb +39 -21
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/syscmd.rb
CHANGED
@@ -51,6 +51,26 @@ module Syscmd
|
|
51
51
|
self
|
52
52
|
end
|
53
53
|
|
54
|
+
# get the stdout as lines.
|
55
|
+
def stdout_lines
|
56
|
+
if @stdout_lines.nil?
|
57
|
+
stdout = self.stdout
|
58
|
+
return nil unless stdout
|
59
|
+
@stdout_lines = stdout.split(/\n/)
|
60
|
+
end
|
61
|
+
@stdout_lines
|
62
|
+
end
|
63
|
+
|
64
|
+
# get the stdout as lines.
|
65
|
+
def stderr_lines
|
66
|
+
if @stderr_lines.nil?
|
67
|
+
stderr = self.stderr
|
68
|
+
return nil unless stderr
|
69
|
+
@stderr_lines = stderr.split(/\n/)
|
70
|
+
end
|
71
|
+
@stderr_lines
|
72
|
+
end
|
73
|
+
|
54
74
|
# the exitcode of the executed command.
|
55
75
|
# returns nil
|
56
76
|
def exitcode
|
data/spec/command_exec_spec.rb
CHANGED
@@ -1,18 +1,42 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
2
|
|
3
3
|
describe Syscmd::Command, ".exec! for -s 'Hello World'" do
|
4
|
-
subject { Syscmd::Command.new(TESTER, '-s', 'Hello World') }
|
4
|
+
subject { Syscmd::Command.new(TESTER, '-s', 'Hello World').exec! }
|
5
5
|
|
6
|
-
it "should have stdout 'Hello World'" do
|
7
|
-
subject.
|
6
|
+
it "should have stdout 'Hello World\\n'" do
|
7
|
+
subject.stdout.should == "Hello World\n"
|
8
8
|
end
|
9
|
+
it "should have stdout_lines ['Hello World']" do
|
10
|
+
subject.stdout_lines.should == ["Hello World"]
|
11
|
+
end
|
12
|
+
|
9
13
|
|
10
14
|
it "should have stderr \"\"" do
|
11
|
-
subject.
|
15
|
+
subject.stderr.should == ""
|
12
16
|
end
|
13
17
|
|
14
18
|
it "should have exitcode 0" do
|
15
|
-
subject.
|
19
|
+
subject.exitcode.should == 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe Syscmd::Command, ".exec! for multiline output" do
|
24
|
+
subject { Syscmd::Command.new(TESTER,
|
25
|
+
'-s', 'Hello World', '-S', 2,
|
26
|
+
'-e', 'Bye Bye World', '-E', 2).exec! }
|
27
|
+
|
28
|
+
it "should have stdout 'Hello World\\nHello World\\n'" do
|
29
|
+
subject.stdout.should == "Hello World\nHello World\n"
|
30
|
+
end
|
31
|
+
it "should have two strings in stdout_lines" do
|
32
|
+
subject.stdout_lines.should == ["Hello World", "Hello World"]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should have stderr 'Bye Bye World\\nBye Bye World\\n'" do
|
36
|
+
subject.stderr.should == "Bye Bye World\nBye Bye World\n"
|
37
|
+
end
|
38
|
+
it "should have two strings in stdout_lines" do
|
39
|
+
subject.stderr_lines.should == ["Bye Bye World", "Bye Bye World"]
|
16
40
|
end
|
17
41
|
end
|
18
42
|
|
data/spec/tester.rb
CHANGED
@@ -7,45 +7,51 @@
|
|
7
7
|
#
|
8
8
|
# tester [OPTION]
|
9
9
|
#
|
10
|
-
# COMMANDS:
|
11
|
-
# list:
|
12
|
-
# list all available project. No option required.
|
13
|
-
# show:
|
14
|
-
# show a project. You must provide a PROJECTNAME and a SCOPE. Valid SCOPEs
|
15
|
-
# are: [env]ironment, [ver]sion
|
16
|
-
# deploy:
|
17
|
-
# deploys a given build to an environment. You must provide PROJECTNAME,
|
18
|
-
# BUILD and ENVRIONMENT.
|
19
|
-
#
|
20
10
|
# OPTIONS:
|
21
|
-
# --help, -h
|
22
|
-
# --stdout, -s
|
23
|
-
# --
|
24
|
-
#
|
11
|
+
# --help, -h display this page
|
12
|
+
# --stdout, -s MSG echo MSG to stdout
|
13
|
+
# --stdoutrepeat, -S COUNT print the stdout message COUNT times
|
14
|
+
# (DEFAULT: 1)
|
15
|
+
# --stderr, -e MSG echo MSG to stderr
|
16
|
+
# --stderrrepeat, -E COUNT print the stderr message COUNT times
|
17
|
+
# (DEFAULT: 1)
|
18
|
+
# --exitcode, -x CODE return exit code CODE
|
25
19
|
# --debug
|
26
20
|
|
27
21
|
require "getoptlong"
|
28
22
|
require "rdoc/usage"
|
29
23
|
|
30
24
|
opts = GetoptLong.new(
|
31
|
-
[ '--help',
|
32
|
-
[ '--stdout',
|
33
|
-
[ '--
|
34
|
-
[ '--
|
35
|
-
[ '--
|
25
|
+
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
|
26
|
+
[ '--stdout', '-s', GetoptLong::REQUIRED_ARGUMENT ],
|
27
|
+
[ '--stdoutcount', '-S', GetoptLong::REQUIRED_ARGUMENT ],
|
28
|
+
[ '--stderr', '-e', GetoptLong::REQUIRED_ARGUMENT ],
|
29
|
+
[ '--stderrcount', '-E', GetoptLong::REQUIRED_ARGUMENT ],
|
30
|
+
[ '--exitcode', '-x', GetoptLong::REQUIRED_ARGUMENT ],
|
31
|
+
[ '--debug', GetoptLong::OPTIONAL_ARGUMENT ]
|
36
32
|
)
|
37
33
|
|
38
34
|
options = {}
|
39
35
|
exitcode = 0
|
40
36
|
|
37
|
+
msg_stdout = nil
|
38
|
+
count_stdout = 1
|
39
|
+
|
40
|
+
msg_stderr = nil
|
41
|
+
count_stderr = 1
|
42
|
+
|
41
43
|
opts.each do |opt, arg|
|
42
44
|
case opt
|
43
45
|
when '--help'
|
44
46
|
RDoc::usage
|
45
47
|
when '--stdout'
|
46
|
-
|
48
|
+
msg_stdout = arg
|
49
|
+
when '--stdoutcount'
|
50
|
+
count_stdout = arg.to_i
|
47
51
|
when '--stderr'
|
48
|
-
|
52
|
+
msg_stderr = arg
|
53
|
+
when '--stderrcount'
|
54
|
+
count_stderr = arg.to_i
|
49
55
|
when '--exitcode'
|
50
56
|
exitcode = arg.to_i
|
51
57
|
when '--debug'
|
@@ -53,4 +59,16 @@ opts.each do |opt, arg|
|
|
53
59
|
end
|
54
60
|
end
|
55
61
|
|
62
|
+
if msg_stdout
|
63
|
+
count_stdout.times do
|
64
|
+
$stdout.print "#{msg_stdout}\n"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
if msg_stderr
|
69
|
+
count_stderr.times do
|
70
|
+
$stderr.print "#{msg_stderr}\n"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
56
74
|
exit exitcode
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tsalzer-syscmd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Till Salzer
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-18 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|