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.
- data/lib/unix_commander/version.rb +1 -1
- data/lib/unix_commander.rb +19 -18
- data/spec/runner_spec.rb +24 -0
- metadata +1 -1
    
        data/lib/unix_commander.rb
    CHANGED
    
    | @@ -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 | 
            -
                   | 
| 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 | 
            -
                   | 
| 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
         |