sshkit 1.13.1 → 1.14.0
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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +13 -2
 - data/README.md +1 -1
 - data/Rakefile +0 -2
 - data/lib/sshkit/backends/netssh.rb +6 -4
 - data/lib/sshkit/command.rb +3 -12
 - data/lib/sshkit/version.rb +1 -1
 - data/sshkit.gemspec +5 -1
 - data/test/unit/test_command.rb +6 -1
 - metadata +46 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b21b9fc05481526fd6470265cb3afb51fcc0691a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4a093de329e546b6410c01c03ab8fe8379c8c53f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7f7ba415cd0b373c356ab99e1ca0624bcca5265c328e2b060def73684541eaf041b539162779a7463691428162e5758bcc025bbe8c6966f3deca4cb95aaa9f8e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f2907bc157c0cacfa2309725aa637deff3bf43079b5dbe255c7d00049997f46cdb574823d8ee8bd848c6e12b24a0c5bb02d8ed66e8196bb87d5fff2b14c41380
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -7,6 +7,16 @@ appear at the top. 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              * Your contribution here!
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
            ## [1.14.0][] (2017-06-30)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ### Breaking changes
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              * None
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            ### New features
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              * [#401](https://github.com/capistrano/sshkit/pull/401): Add :log_percent option to specify upload!/download! transfer log percentage - [@aubergene](https://github.com/aubergene)
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       10 
20 
     | 
    
         
             
            ## [1.13.1][] (2017-03-31)
         
     | 
| 
       11 
21 
     | 
    
         | 
| 
       12 
22 
     | 
    
         
             
            ### Breaking changes
         
     | 
| 
         @@ -15,7 +25,7 @@ appear at the top. 
     | 
|
| 
       15 
25 
     | 
    
         | 
| 
       16 
26 
     | 
    
         
             
            ### Bug fixes
         
     | 
| 
       17 
27 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
              * [#397](https://github.com/capistrano/ 
     | 
| 
      
 28 
     | 
    
         
            +
              * [#397](https://github.com/capistrano/sshkit/pull/397): Fix NoMethodError assign_defaults with net-ssh older than 4.0.0 - [@shirosaki](https://github.com/shirosaki)
         
     | 
| 
       19 
29 
     | 
    
         | 
| 
       20 
30 
     | 
    
         
             
            ## [1.13.0][] (2017-03-24)
         
     | 
| 
       21 
31 
     | 
    
         | 
| 
         @@ -697,7 +707,8 @@ version `0.0.5`. 
     | 
|
| 
       697 
707 
     | 
    
         | 
| 
       698 
708 
     | 
    
         
             
            First release.
         
     | 
| 
       699 
709 
     | 
    
         | 
| 
       700 
     | 
    
         
            -
            [Unreleased]: https://github.com/capistrano/sshkit/compare/v1. 
     | 
| 
      
 710 
     | 
    
         
            +
            [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.14.0...HEAD
         
     | 
| 
      
 711 
     | 
    
         
            +
            [1.14.0]: https://github.com/capistrano/sshkit/compare/v1.13.1...v1.14.0
         
     | 
| 
       701 
712 
     | 
    
         
             
            [1.13.1]: https://github.com/capistrano/sshkit/compare/v1.13.0...v1.13.1
         
     | 
| 
       702 
713 
     | 
    
         
             
            [1.13.0]: https://github.com/capistrano/sshkit/compare/v1.12.0...v1.13.0
         
     | 
| 
       703 
714 
     | 
    
         
             
            [1.12.0]: https://github.com/capistrano/sshkit/compare/v1.11.5...v1.12.0
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -72,7 +72,7 @@ For the remote backend, the file is tranferred with scp. 
     | 
|
| 
       72 
72 
     | 
    
         
             
            ```ruby
         
     | 
| 
       73 
73 
     | 
    
         
             
            on '1.example.com' do
         
     | 
| 
       74 
74 
     | 
    
         
             
              upload! 'some_local_file.txt', '/home/some_user/somewhere'
         
     | 
| 
       75 
     | 
    
         
            -
              download! '/home/some_user/some_remote_file.txt', 'somewhere_local'
         
     | 
| 
      
 75 
     | 
    
         
            +
              download! '/home/some_user/some_remote_file.txt', 'somewhere_local', :log_percent 25
         
     | 
| 
       76 
76 
     | 
    
         
             
            end
         
     | 
| 
       77 
77 
     | 
    
         
             
            ```
         
     | 
| 
       78 
78 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    
| 
         @@ -62,14 +62,14 @@ module SSHKit 
     | 
|
| 
       62 
62 
     | 
    
         
             
                  end
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                  def upload!(local, remote, options = {})
         
     | 
| 
       65 
     | 
    
         
            -
                    summarizer = transfer_summarizer('Uploading')
         
     | 
| 
      
 65 
     | 
    
         
            +
                    summarizer = transfer_summarizer('Uploading', options)
         
     | 
| 
       66 
66 
     | 
    
         
             
                    with_ssh do |ssh|
         
     | 
| 
       67 
67 
     | 
    
         
             
                      ssh.scp.upload!(local, remote, options, &summarizer)
         
     | 
| 
       68 
68 
     | 
    
         
             
                    end
         
     | 
| 
       69 
69 
     | 
    
         
             
                  end
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
71 
     | 
    
         
             
                  def download!(remote, local=nil, options = {})
         
     | 
| 
       72 
     | 
    
         
            -
                    summarizer = transfer_summarizer('Downloading')
         
     | 
| 
      
 72 
     | 
    
         
            +
                    summarizer = transfer_summarizer('Downloading', options)
         
     | 
| 
       73 
73 
     | 
    
         
             
                    with_ssh do |ssh|
         
     | 
| 
       74 
74 
     | 
    
         
             
                      ssh.scp.download!(remote, local, options, &summarizer)
         
     | 
| 
       75 
75 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -96,14 +96,16 @@ module SSHKit 
     | 
|
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
                  private
         
     | 
| 
       98 
98 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
                  def transfer_summarizer(action)
         
     | 
| 
      
 99 
     | 
    
         
            +
                  def transfer_summarizer(action, options = {})
         
     | 
| 
      
 100 
     | 
    
         
            +
                    log_percent = options[:log_percent] || 10
         
     | 
| 
      
 101 
     | 
    
         
            +
                    log_percent = 100 if log_percent <= 0
         
     | 
| 
       100 
102 
     | 
    
         
             
                    last_name = nil
         
     | 
| 
       101 
103 
     | 
    
         
             
                    last_percentage = nil
         
     | 
| 
       102 
104 
     | 
    
         
             
                    proc do |_ch, name, transferred, total|
         
     | 
| 
       103 
105 
     | 
    
         
             
                      percentage = (transferred.to_f * 100 / total.to_f)
         
     | 
| 
       104 
106 
     | 
    
         
             
                      unless percentage.nan?
         
     | 
| 
       105 
107 
     | 
    
         
             
                        message = "#{action} #{name} #{percentage.round(2)}%"
         
     | 
| 
       106 
     | 
    
         
            -
                        percentage_r = (percentage /  
     | 
| 
      
 108 
     | 
    
         
            +
                        percentage_r = (percentage / log_percent).truncate * log_percent
         
     | 
| 
       107 
109 
     | 
    
         
             
                        if percentage_r > 0 && (last_name != name || last_percentage != percentage_r)
         
     | 
| 
       108 
110 
     | 
    
         
             
                          info message
         
     | 
| 
       109 
111 
     | 
    
         
             
                          last_name = name
         
     | 
    
        data/lib/sshkit/command.rb
    CHANGED
    
    | 
         @@ -21,10 +21,9 @@ module SSHKit 
     | 
|
| 
       21 
21 
     | 
    
         
             
                def initialize(*args)
         
     | 
| 
       22 
22 
     | 
    
         
             
                  raise ArgumentError, "Must pass arguments to Command.new" if args.empty?
         
     | 
| 
       23 
23 
     | 
    
         
             
                  @options = default_options.merge(args.extract_options!)
         
     | 
| 
       24 
     | 
    
         
            -
                  @command = args.shift 
     | 
| 
      
 24 
     | 
    
         
            +
                  @command = sanitize_command(args.shift)
         
     | 
| 
       25 
25 
     | 
    
         
             
                  @args    = args
         
     | 
| 
       26 
26 
     | 
    
         
             
                  @options.symbolize_keys!
         
     | 
| 
       27 
     | 
    
         
            -
                  sanitize_command!
         
     | 
| 
       28 
27 
     | 
    
         
             
                  @stdout, @stderr, @full_stdout, @full_stderr = String.new, String.new, String.new, String.new
         
     | 
| 
       29 
28 
     | 
    
         
             
                end
         
     | 
| 
       30 
29 
     | 
    
         | 
| 
         @@ -222,16 +221,8 @@ module SSHKit 
     | 
|
| 
       222 
221 
     | 
    
         
             
                  }
         
     | 
| 
       223 
222 
     | 
    
         
             
                end
         
     | 
| 
       224 
223 
     | 
    
         | 
| 
       225 
     | 
    
         
            -
                def sanitize_command 
     | 
| 
       226 
     | 
    
         
            -
                   
     | 
| 
       227 
     | 
    
         
            -
                  if command.to_s.match("\n")
         
     | 
| 
       228 
     | 
    
         
            -
                    @command = String.new.tap do |cs|
         
     | 
| 
       229 
     | 
    
         
            -
                      command.to_s.lines.each do |line|
         
     | 
| 
       230 
     | 
    
         
            -
                        cs << line.strip
         
     | 
| 
       231 
     | 
    
         
            -
                        cs << '; ' unless line == command.to_s.lines.to_a.last
         
     | 
| 
       232 
     | 
    
         
            -
                      end
         
     | 
| 
       233 
     | 
    
         
            -
                    end
         
     | 
| 
       234 
     | 
    
         
            -
                  end
         
     | 
| 
      
 224 
     | 
    
         
            +
                def sanitize_command(cmd)
         
     | 
| 
      
 225 
     | 
    
         
            +
                  cmd.to_s.lines.map(&:strip).join("; ")
         
     | 
| 
       235 
226 
     | 
    
         
             
                end
         
     | 
| 
       236 
227 
     | 
    
         | 
| 
       237 
228 
     | 
    
         
             
                def call_interaction_handler(stream_name, data, channel)
         
     | 
    
        data/lib/sshkit/version.rb
    CHANGED
    
    
    
        data/sshkit.gemspec
    CHANGED
    
    | 
         @@ -25,6 +25,10 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       25 
25 
     | 
    
         
             
              gem.add_development_dependency('minitest-reporters')
         
     | 
| 
       26 
26 
     | 
    
         
             
              gem.add_development_dependency('rainbow', '~> 2.1.0')
         
     | 
| 
       27 
27 
     | 
    
         
             
              gem.add_development_dependency('rake')
         
     | 
| 
       28 
     | 
    
         
            -
              gem.add_development_dependency('rubocop')
         
     | 
| 
      
 28 
     | 
    
         
            +
              gem.add_development_dependency('rubocop', "~> 0.49.1")
         
     | 
| 
       29 
29 
     | 
    
         
             
              gem.add_development_dependency('mocha')
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              gem.add_development_dependency('bcrypt_pbkdf')
         
     | 
| 
      
 32 
     | 
    
         
            +
              gem.add_development_dependency('rbnacl', '~> 3.4')
         
     | 
| 
      
 33 
     | 
    
         
            +
              gem.add_development_dependency('rbnacl-libsodium')
         
     | 
| 
       30 
34 
     | 
    
         
             
            end
         
     | 
    
        data/test/unit/test_command.rb
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ module SSHKit 
     | 
|
| 
       16 
16 
     | 
    
         
             
                  end
         
     | 
| 
       17 
17 
     | 
    
         
             
                end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                def  
     | 
| 
      
 19 
     | 
    
         
            +
                def test_multiple_lines_are_stripped_of_extra_space_and_joined_by_semicolons
         
     | 
| 
       20 
20 
     | 
    
         
             
                  c = Command.new <<-EOHEREDOC
         
     | 
| 
       21 
21 
     | 
    
         
             
                    if test ! -d /var/log; then
         
     | 
| 
       22 
22 
     | 
    
         
             
                      echo "Example"
         
     | 
| 
         @@ -25,6 +25,11 @@ module SSHKit 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  assert_equal "if test ! -d /var/log; then; echo \"Example\"; fi", c.to_command
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                def test_leading_and_trailing_space_is_stripped
         
     | 
| 
      
 29 
     | 
    
         
            +
                  c = Command.new(" echo hi ")
         
     | 
| 
      
 30 
     | 
    
         
            +
                  assert_equal "echo hi", c.to_command
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       28 
33 
     | 
    
         
             
                def test_including_the_env
         
     | 
| 
       29 
34 
     | 
    
         
             
                  SSHKit.config = nil
         
     | 
| 
       30 
35 
     | 
    
         
             
                  c = Command.new(:rails, 'server', env: {rails_env: :production})
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sshkit
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.14.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Lee Hambley
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2017- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2017-06-30 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: net-ssh
         
     | 
| 
         @@ -111,6 +111,20 @@ dependencies: 
     | 
|
| 
       111 
111 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       112 
112 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       113 
113 
     | 
    
         
             
              name: rubocop
         
     | 
| 
      
 114 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 115 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 116 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 117 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 118 
     | 
    
         
            +
                    version: 0.49.1
         
     | 
| 
      
 119 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 120 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 121 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 122 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 123 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 124 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 125 
     | 
    
         
            +
                    version: 0.49.1
         
     | 
| 
      
 126 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 127 
     | 
    
         
            +
              name: mocha
         
     | 
| 
       114 
128 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       115 
129 
     | 
    
         
             
                requirements:
         
     | 
| 
       116 
130 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -124,7 +138,35 @@ dependencies: 
     | 
|
| 
       124 
138 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       125 
139 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       126 
140 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       127 
     | 
    
         
            -
              name:  
     | 
| 
      
 141 
     | 
    
         
            +
              name: bcrypt_pbkdf
         
     | 
| 
      
 142 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 143 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 144 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 145 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 146 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 147 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 148 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 149 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 150 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 151 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 152 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 153 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 154 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 155 
     | 
    
         
            +
              name: rbnacl
         
     | 
| 
      
 156 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 157 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 158 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 159 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 160 
     | 
    
         
            +
                    version: '3.4'
         
     | 
| 
      
 161 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 162 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 163 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 164 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 165 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 166 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 167 
     | 
    
         
            +
                    version: '3.4'
         
     | 
| 
      
 168 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 169 
     | 
    
         
            +
              name: rbnacl-libsodium
         
     | 
| 
       128 
170 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       129 
171 
     | 
    
         
             
                requirements:
         
     | 
| 
       130 
172 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -251,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       251 
293 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       252 
294 
     | 
    
         
             
            requirements: []
         
     | 
| 
       253 
295 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       254 
     | 
    
         
            -
            rubygems_version: 2.6. 
     | 
| 
      
 296 
     | 
    
         
            +
            rubygems_version: 2.6.12
         
     | 
| 
       255 
297 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       256 
298 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       257 
299 
     | 
    
         
             
            summary: SSHKit makes it easy to write structured, testable SSH commands in Ruby
         
     |