unix_commander 0.1.3 → 0.1.4

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.
@@ -1,3 +1,3 @@
1
1
  module UnixCommander
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -30,8 +30,7 @@ module UnixCommander
30
30
  # @return [String] *stdout* of the command
31
31
  def out
32
32
  return "" if @out==nil
33
- return @out if @out.class==String
34
- @out.read
33
+ @out
35
34
  end
36
35
 
37
36
  # Returns the output (stderr) of the command
@@ -39,8 +38,7 @@ module UnixCommander
39
38
  # @return [String] *stderr* of the command
40
39
  def err
41
40
  return "" if @err==nil
42
- return @err if @err.class==String
43
- @err.read
41
+ @err
44
42
  end
45
43
 
46
44
  # Return a string with the output of the command
@@ -54,6 +52,8 @@ module UnixCommander
54
52
  # @return [Runner] Returns itself
55
53
  def run
56
54
  @in, @out, @err = Open3.popen3("#{@command.cmd}")
55
+ @out = @out.read
56
+ @err = @err.read
57
57
  self
58
58
  end
59
59
 
@@ -103,20 +103,6 @@ module UnixCommander
103
103
  cmd
104
104
  end
105
105
 
106
- # This is the main method of the library. Every unknown method you call on a Command object
107
- # is interpreted as a unix command and its args are used as the args of the unix command.
108
- # When the command already has some unix command inside, it pipes them together (|)
109
- # @param [String] m name of the unix command you want to execute
110
- # @param [Array] *args args for the aforementioned command
111
- # @return [Command] new command with internal unix commands piped together
112
- def method_missing(m, *args, &block)
113
- if cmd == ""
114
- Command.new("#{m} #{args.join(' ')}".strip)
115
- else
116
- Command.new("#{cmd} | #{m} #{args.join(' ')}".strip)
117
- end
118
- end
119
-
120
106
  # Redirects *stdout* to someplace (Using >). By default it uses destructive redirection.
121
107
  # @param [String] place to redirect the output (e.g. /dev/null)
122
108
  # @param [true,false] append if true uses append redirection (>>) it defaults to false.
@@ -167,6 +153,21 @@ module UnixCommander
167
153
  def run_ssh(_username, _password = "", _address = "127.0.0.1")
168
154
  Runner.new(self).run_ssh(_username,_password,_address)
169
155
  end
156
+
157
+ # This is the main method of the library. Every unknown method you call on a Command object
158
+ # is interpreted as a unix command and its args are used as the args of the unix command.
159
+ # When the command already has some unix command inside, it pipes them together (|)
160
+ # @param [String] m name of the unix command you want to execute
161
+ # @param [Array] *args args for the aforementioned command
162
+ # @return [Command] new command with internal unix commands piped together
163
+ def method_missing(m, *args, &block)
164
+ if cmd == ""
165
+ Command.new("#{m} #{args.join(' ')}".strip)
166
+ else
167
+ Command.new("#{cmd} | #{m} #{args.join(' ')}".strip)
168
+ end
169
+ end
170
+
170
171
  end
171
172
 
172
173
  end
data/spec/runner_spec.rb CHANGED
@@ -36,7 +36,19 @@ describe "Runner local" do
36
36
  out_err[0].should_not == ""
37
37
  out_err[1].should_not == ""
38
38
  end
39
+
40
+ it "can read out twice" do
41
+ runner = @command.run
42
+ runner.out.should == %x[uname]
43
+ runner.out.should == %x[uname]
44
+ end
39
45
 
46
+ it "can read err twice" do
47
+ @command = UnixCommander::Command.new("grep abc /etc/*")
48
+ runner = @command.run
49
+ runner.out.should_not == ""
50
+ runner.out.should_not == ""
51
+ end
40
52
  end
41
53
 
42
54
  describe "Runner ssh" do
@@ -70,4 +82,16 @@ describe "Runner ssh" do
70
82
  out_err[1].should_not == ""
71
83
  end
72
84
 
85
+ it "can read out twice" do
86
+ runner = @command.run_ssh('dev','dev')
87
+ runner.out.should == %x[uname]
88
+ runner.out.should == %x[uname]
89
+ end
90
+
91
+ it "can read err twice" do
92
+ @command = UnixCommander::Command.new("grep abc /etc/*")
93
+ runner = @command.run_ssh('dev','dev')
94
+ runner.out.should_not == ""
95
+ runner.out.should_not == ""
96
+ end
73
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unix_commander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: