net-scp 1.2.1 → 2.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cbfca972e9cc5bd85bd596ce1be966402e2d6d30
4
+ data.tar.gz: 33451e0d0cd8d4d9c77f8c2aecc70f28d67100a2
5
+ SHA512:
6
+ metadata.gz: 660a95fd1181762c52dc1929637ce5791f11c101f327dfce376bce9b412ac539b4448d345438c70773c842abdc031acf3b5e5b179864ac98050d0931e4962271
7
+ data.tar.gz: c6b069bde4616271d17cc86f48dae3abcc69d098b9a63880dd31559b1da04c8780d64f5b4f1ca3e2525b32d184eca50b1abecf1f973c20a6f463942d65e9bbbc
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -0,0 +1,6 @@
1
+ coverage
2
+ pkg
3
+ doc
4
+ *.swp
5
+
6
+ .DS_Store
@@ -1,11 +1,16 @@
1
1
  language: ruby
2
+ cache: bundler
2
3
  rvm:
3
- - "1.9.3"
4
- - "2.0.0"
5
- - "2.1.0"
4
+ - 2.3.8
5
+ - 2.4.5
6
+ - 2.5.3
7
+ - 2.6.1
8
+ - ruby-head
6
9
 
10
+ matrix:
11
+ allow_failures:
12
+ - rvm: ruby-head
7
13
 
8
14
  install: gem install jeweler test-unit mocha net-ssh
9
15
 
10
16
  script: rake test
11
-
@@ -1,3 +1,6 @@
1
+ === 2.0.0
2
+
3
+ * NetSSH 5.* support
1
4
 
2
5
  === 1.2.1 / 30 Apr 2014
3
6
 
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mygem.gemspec
4
+ gemspec
5
+
6
+ # TODO: add to gemspec
7
+ gem "bundler", "~> 1.11"
8
+ gem "rake", "~> 12.0"
9
+
10
+ gem 'byebug', group: %i[development test] if !Gem.win_platform? && RUBY_ENGINE == "ruby"
11
+
12
+ if ENV["CI"]
13
+ gem 'codecov', require: false, group: :test
14
+ gem 'simplecov', require: false, group: :test
15
+ end
@@ -13,7 +13,7 @@
13
13
 
14
14
  == DESCRIPTION:
15
15
 
16
- Net::SCP is a pure-Ruby implementation of the SCP protocol. This operates over SSH (and requires the Net::SSH library), and allows files and directory trees to copied to and from a remote server.
16
+ Net::SCP is a pure-Ruby implementation of the SCP protocol. This operates over SSH (and requires the Net::SSH library), and allows files and directory trees to be copied to and from a remote server.
17
17
 
18
18
  == FEATURES/PROBLEMS:
19
19
 
@@ -42,7 +42,7 @@ In a nutshell:
42
42
  data = Net::SCP::download!("remote.host.com", "username", "/remote/path")
43
43
 
44
44
  # use a persistent connection to transfer files
45
- Net::SCP.start("remote.host.com", "username", :ssh => { :password => "password" }) do |scp|
45
+ Net::SCP.start("remote.host.com", "username", :password => "password") do |scp|
46
46
  # upload a file to a remote server
47
47
  scp.upload! "/local/path", "/remote/path"
48
48
 
@@ -74,12 +74,12 @@ If you wish to run the tests, you'll also need:
74
74
 
75
75
  * gem install net-scp (might need sudo privileges)
76
76
 
77
- However, in order to be sure the code you're installing hasn't been tampered with, it's recommended that you verify the signiture[http://docs.rubygems.org/read/chapter/21]. To do this, you need to add my public key as a trusted certificate (you only need to do this once):
77
+ However, in order to be sure the code you're installing hasn't been tampered with, it's recommended that you verify the signiture[http://docs.seattlerb.org/rubygems/Gem/Security.html]. To do this, you need to add my public key as a trusted certificate (you only need to do this once):
78
78
 
79
79
  # Add the public key as a trusted certificate
80
80
  # (You only need to do this once)
81
- $ curl -O https://raw.github.com/net-ssh/net-ssh/master/gem-public_cert.pem
82
- $ gem cert --add gem-public_cert.pem
81
+ $ curl -O https://raw.githubusercontent.com/net-ssh/net-ssh/master/net-ssh-public_cert.pem
82
+ $ gem cert --add net-ssh-public_cert.pem
83
83
 
84
84
  Then, when install the gem, do so with high security:
85
85
 
@@ -87,7 +87,6 @@ Then, when install the gem, do so with high security:
87
87
 
88
88
  If you don't add the public key, you'll see an error like "Couldn't verify data signature". If you're still having trouble let me know and I'll give you a hand.
89
89
 
90
-
91
90
  Or, you can do it the hard way (without Rubygems):
92
91
 
93
92
  * tar xzf net-scp-*.tgz
data/Rakefile CHANGED
@@ -2,40 +2,64 @@ require "rubygems"
2
2
  require "rake"
3
3
  require "rake/clean"
4
4
  require "rdoc/task"
5
+ require "bundler/gem_tasks"
5
6
 
6
- task :default => ["build"]
7
+ desc "When releasing make sure NET_SSH_BUILDGEM_SIGNED is set"
8
+ task :check_NET_SSH_BUILDGEM_SIGNED do
9
+ raise "NET_SSH_BUILDGEM_SIGNED should be set to release" unless ENV['NET_SSH_BUILDGEM_SIGNED']
10
+ end
11
+
12
+ Rake::Task[:release].enhance [:check_NET_SSH_BUILDGEM_SIGNED]
13
+ Rake::Task[:release].prerequisites.unshift(:check_NET_SSH_BUILDGEM_SIGNED)
14
+
15
+ task default: ["build"]
7
16
  CLEAN.include [ 'pkg', 'rdoc' ]
8
17
  name = "net-scp"
9
18
 
10
- $:.unshift File.join(File.dirname(__FILE__), 'lib')
11
- require "net/scp/version"
12
- version = Net::SCP::Version::STRING.dup
19
+ require_relative "lib/net/scp/version"
20
+ version = Net::SCP::Version::CURRENT
21
+
22
+ namespace :cert do
23
+ desc "Update public cert from private - only run if public is expired"
24
+ task :update_public_when_expired do
25
+ require 'openssl'
26
+ require 'time'
27
+ raw = File.read "net-scp-public_cert.pem"
28
+ certificate = OpenSSL::X509::Certificate.new raw
29
+ raise Exception, "Not yet expired: #{certificate.not_after}" unless certificate.not_after < Time.now
30
+ sh "gem cert --build netssh@solutious.com --days 365*5 --private-key /mnt/gem/net-ssh-private_key.pem"
31
+ sh "mv gem-public_cert.pem net-scp-public_cert.pem"
32
+ sh "gem cert --add net-scp-public_cert.pem"
33
+ end
34
+ end
13
35
 
14
- begin
15
- require "jeweler"
16
- Jeweler::Tasks.new do |s|
17
- s.version = version
18
- s.name = name
19
- s.rubyforge_project = s.name
20
- s.summary = "A pure Ruby implementation of the SCP client protocol"
21
- s.description = s.summary
22
- s.email = "net-ssh@solutious.com"
23
- s.homepage = "https://github.com/net-ssh/net-scp"
24
- s.authors = ["Jamis Buck", "Delano Mandelbaum"]
36
+ if false
37
+ begin
38
+ require "jeweler"
39
+ Jeweler::Tasks.new do |s|
40
+ s.version = version
41
+ s.name = name
42
+ s.rubyforge_project = s.name
43
+ s.summary = "A pure Ruby implementation of the SCP client protocol"
44
+ s.description = s.summary
45
+ s.email = "net-ssh@solutious.com"
46
+ s.homepage = "https://github.com/net-ssh/net-scp"
47
+ s.authors = ["Jamis Buck", "Delano Mandelbaum"]
25
48
 
26
- s.add_dependency 'net-ssh', ">=2.6.5"
49
+ s.add_dependency 'net-ssh', ">=2.6.5"
27
50
 
28
- s.add_development_dependency 'test-unit'
29
- s.add_development_dependency 'mocha'
51
+ s.add_development_dependency 'test-unit'
52
+ s.add_development_dependency 'mocha'
30
53
 
31
- s.license = "MIT"
54
+ s.license = "MIT"
32
55
 
33
- s.signing_key = File.join('/mnt/gem/', 'gem-private_key.pem')
34
- s.cert_chain = ['gem-public_cert.pem']
56
+ s.signing_key = File.join('/mnt/gem/', 'gem-private_key.pem')
57
+ s.cert_chain = ['gem-public_cert.pem']
58
+ end
59
+ Jeweler::GemcutterTasks.new
60
+ rescue LoadError
61
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
35
62
  end
36
- Jeweler::GemcutterTasks.new
37
- rescue LoadError
38
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
39
63
  end
40
64
 
41
65
  require 'rake/testtask'
@@ -56,5 +80,3 @@ RDoc::Task.new do |rdoc|
56
80
  rdoc.rdoc_files.include(file) if File.exists?(file)
57
81
  }
58
82
  end
59
-
60
-
@@ -194,7 +194,7 @@ module Net
194
194
  include Net::SSH::Loggable
195
195
  include Upload, Download
196
196
 
197
- # Starts up a new SSH connection and instantiates a new SCP session on
197
+ # Starts up a new SSH connection and instantiates a new SCP session on
198
198
  # top of it. If a block is given, the SCP session is yielded, and the
199
199
  # SSH session is closed automatically when the block terminates. If no
200
200
  # block is given, the SCP session is returned.
@@ -293,7 +293,7 @@ module Net
293
293
  # * :preserve - the atime and mtime of the file should be preserved.
294
294
  # * :verbose - the process should result in verbose output on the server
295
295
  # end (useful for debugging).
296
- #
296
+ #
297
297
  # This method will return immediately, returning the Net::SSH::Connection::Channel
298
298
  # object that will support the download. To wait for the download to finish,
299
299
  # you can either call the #wait method on the channel, or otherwise run
@@ -343,7 +343,7 @@ module Net
343
343
  # (See Net::SCP::Upload and Net::SCP::Download).
344
344
  def start_command(mode, local, remote, options={}, &callback)
345
345
  session.open_channel do |channel|
346
-
346
+
347
347
  if options[:shell]
348
348
  escaped_file = shellescape(remote).gsub(/'/) { |m| "'\\''" }
349
349
  command = "#{options[:shell]} -c '#{scp_command(mode, options)} #{escaped_file}'"
@@ -362,10 +362,10 @@ module Net
362
362
  channel[:stack ] = []
363
363
  channel[:error_string] = ''
364
364
 
365
- channel.on_close { |ch| send("#{channel[:state]}_state", channel); raise Net::SCP::Error, "SCP did not finish successfully (#{channel[:exit]}): #{channel[:error_string]}" if channel[:exit] != 0 }
366
- channel.on_data { |ch, data| channel[:buffer].append(data) }
367
- channel.on_extended_data { |ch, type, data| debug { data.chomp } }
368
- channel.on_request("exit-status") { |ch, data| channel[:exit] = data.read_long }
365
+ channel.on_close { |ch2| send("#{channel[:state]}_state", channel); raise Net::SCP::Error, "SCP did not finish successfully (#{channel[:exit]}): #{channel[:error_string]}" if channel[:exit] != 0 }
366
+ channel.on_data { |ch2, data| channel[:buffer].append(data) }
367
+ channel.on_extended_data { |ch2, type, data| debug { data.chomp } }
368
+ channel.on_request("exit-status") { |ch2, data| channel[:exit] = data.read_long }
369
369
  channel.on_process { send("#{channel[:state]}_state", channel) }
370
370
  else
371
371
  channel.close
@@ -395,7 +395,7 @@ module Net
395
395
  def await_response_state(channel)
396
396
  return if channel[:buffer].available == 0
397
397
  c = channel[:buffer].read_byte
398
- raise "#{c.chr}#{channel[:buffer].read}" if c != 0
398
+ raise Net::SCP::Error, "#{c.chr}#{channel[:buffer].read}" if c != 0
399
399
  channel[:next], channel[:state] = nil, channel[:next]
400
400
  send("#{channel[:state]}_state", channel)
401
401
  end
@@ -20,7 +20,7 @@ module Net; class SCP
20
20
  elsif channel[:local].respond_to?(:write) && channel[:options][:preserve]
21
21
  lwarn { ":preserve option is ignored when downloading to an in-memory buffer" }
22
22
  channel[:options].delete(:preserve)
23
- elsif channel[:options][:recursive] && !File.exists?(channel[:local])
23
+ elsif channel[:options][:recursive] && !File.exist?(channel[:local])
24
24
  Dir.mkdir(channel[:local])
25
25
  end
26
26
 
@@ -128,9 +128,9 @@ module Net; class SCP
128
128
 
129
129
  channel[:local] = File.join(channel[:local], directive[:name])
130
130
 
131
- if File.exists?(channel[:local]) && !File.directory?(channel[:local])
132
- raise "#{channel[:local]} already exists and is not a directory"
133
- elsif !File.exists?(channel[:local])
131
+ if File.exist?(channel[:local]) && !File.directory?(channel[:local])
132
+ raise Net::SCP::Error, "#{channel[:local]} already exists and is not a directory"
133
+ elsif !File.exist?(channel[:local])
134
134
  Dir.mkdir(channel[:local], directive[:mode] | 0700)
135
135
  end
136
136
 
@@ -162,4 +162,4 @@ module Net; class SCP
162
162
  end
163
163
  end
164
164
 
165
- end; end
165
+ end; end
@@ -1,18 +1,68 @@
1
- require 'net/ssh/version'
1
+ module Net
2
+ module SCP
3
+ # A class for describing the current version of a library. The version
4
+ # consists of three parts: the +major+ number, the +minor+ number, and the
5
+ # +tiny+ (or +patch+) number.
6
+ #
7
+ # Two Version instances may be compared, so that you can test that a version
8
+ # of a library is what you require:
9
+ #
10
+ # require 'net/scp/version'
11
+ #
12
+ # if Net::SCP::Version::CURRENT < Net::SCP::Version[2,1,0]
13
+ # abort "your software is too old!"
14
+ # end
15
+ class Version
16
+ include Comparable
2
17
 
3
- module Net; class SCP
18
+ # A convenience method for instantiating a new Version instance with the
19
+ # given +major+, +minor+, and +tiny+ components.
20
+ def self.[](major, minor, tiny, pre = nil)
21
+ new(major, minor, tiny, pre)
22
+ end
4
23
 
5
- # Describes the current version of the Net::SCP library.
6
- class Version < Net::SSH::Version
7
- MAJOR = 1
8
- MINOR = 2
9
- TINY = 1
24
+ attr_reader :major, :minor, :tiny
10
25
 
11
- # The current version, as a Version instance
12
- CURRENT = new(MAJOR, MINOR, TINY)
26
+ # Create a new Version object with the given components.
27
+ def initialize(major, minor, tiny, pre = nil)
28
+ @major, @minor, @tiny, @pre = major, minor, tiny, pre
29
+ end
13
30
 
14
- # The current version, as a String instance
15
- STRING = CURRENT.to_s
16
- end
31
+ # Compare this version to the given +version+ object.
32
+ def <=>(version)
33
+ to_i <=> version.to_i
34
+ end
35
+
36
+ # Converts this version object to a string, where each of the three
37
+ # version components are joined by the '.' character. E.g., 2.0.0.
38
+ def to_s
39
+ @to_s ||= [@major, @minor, @tiny, @pre].compact.join(".")
40
+ end
41
+
42
+ # Converts this version to a canonical integer that may be compared
43
+ # against other version objects.
44
+ def to_i
45
+ @to_i ||= @major * 1_000_000 + @minor * 1_000 + @tiny
46
+ end
47
+
48
+ # The major component of this version of the Net::SSH library
49
+ MAJOR = 2
50
+
51
+ # The minor component of this version of the Net::SSH library
52
+ MINOR = 0
17
53
 
18
- end; end
54
+ # The tiny component of this version of the Net::SSH library
55
+ TINY = 0
56
+
57
+ # The prerelease component of this version of the Net::SSH library
58
+ # nil allowed
59
+ PRE = nil
60
+
61
+ # The current version of the Net::SSH library as a Version instance
62
+ CURRENT = new(*[MAJOR, MINOR, TINY, PRE].compact)
63
+
64
+ # The current version of the Net::SSH library as a String
65
+ STRING = CURRENT.to_s
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZuZXRz
3
+ c2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
4
+ b20wHhcNMTgwNjA0MTA0OTQwWhcNMTkwNjA0MTA0OTQwWjBBMQ8wDQYDVQQDDAZu
5
+ ZXRzc2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
6
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJ4TbZ9H+qZ08
7
+ pQfJhPJTHaDCyQvCsKTFrL5O9z3tllQ7B/zksMMM+qFBpNYu9HCcg4yBATacE/PB
8
+ qVVyUrpr6lbH/XwoN5ljXm+bdCfmnjZvTCL2FTE6o+bcnaF0IsJyC0Q2B1fbWdXN
9
+ 6Off1ZWoUk6We2BIM1bn6QJLxBpGyYhvOPXsYoqSuzDf2SJDDsWFZ8kV5ON13Ohm
10
+ JbBzn0oD8HF8FuYOewwsC0C1q4w7E5GtvHcQ5juweS7+RKsyDcVcVrLuNzoGRttS
11
+ KP4yMn+TzaXijyjRg7gECfJr3TGASaA4bQsILFGG5dAWcwO4OMrZedR7SHj/o0Kf
12
+ 3gL7P0axAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
13
+ BBQF8qLA7Z4zg0SJGtUbv3eoQ8tjIzAfBgNVHREEGDAWgRRuZXRzc2hAc29sdXRp
14
+ b3VzLmNvbTAfBgNVHRIEGDAWgRRuZXRzc2hAc29sdXRpb3VzLmNvbTANBgkqhkiG
15
+ 9w0BAQsFAAOCAQEAXnNaYXWVr/sCsfZdza+yBBOobYPgjOgDRfqNO2YX8RFEyDNB
16
+ AxBCQIF4OeUaoMbTQTVh24MwaDHpDTgqBAEfSs9h41lZewQaw4QUGJ6yxNVzO194
17
+ 2vYohv9vHpodBukIpUFGk40vQq8nOq2MzVyCb911wnt5d0ZQg+UJf5tdMYvRvATa
18
+ F/dkTaqhq3wq/JJRghq8fJUqWN5aBtMQb/61z5J3mKAUJsUN2/VdDph2fRPDpECa
19
+ uWREKzWwXbaB96/ZyzoyP7FsQBLgdDL++g2nF0neCENc5Wj5IlQZiH0a2+X3jAgm
20
+ 7UnoE3CP9Tk5GHVUina5gPyzl0VI4s4pYCPehQ==
21
+ -----END CERTIFICATE-----
@@ -1,69 +1,46 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
1
 
6
- Gem::Specification.new do |s|
7
- s.name = "net-scp"
8
- s.version = "1.2.1"
2
+ require_relative 'lib/net/scp/version'
9
3
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jamis Buck", "Delano Mandelbaum"]
12
- s.cert_chain = ["gem-public_cert.pem"]
13
- s.date = "2014-04-30"
14
- s.description = "A pure Ruby implementation of the SCP client protocol"
15
- s.email = "net-ssh@solutious.com"
16
- s.extra_rdoc_files = [
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "net-scp"
6
+ spec.version = Net::SCP::Version::STRING
7
+ spec.authors = ["Jamis Buck", "Delano Mandelbaum", "Mikl\u{f3}s Fazekas"]
8
+ spec.email = ["net-ssh@solutious.com"]
9
+
10
+ if ENV['NET_SSH_BUILDGEM_SIGNED']
11
+ spec.cert_chain = ["net-scp-public_cert.pem"]
12
+ spec.signing_key = "/mnt/gem/net-ssh-private_key.pem"
13
+ end
14
+
15
+ spec.summary = %q{A pure Ruby implementation of the SCP client protocol.}
16
+ spec.description = %q{A pure Ruby implementation of the SCP client protocol}
17
+ spec.homepage = "https://github.com/net-ssh/net-scp"
18
+ spec.license = "MIT"
19
+ spec.required_rubygems_version = Gem::Requirement.new(">= 0") if spec.respond_to? :required_rubygems_version=
20
+
21
+ spec.extra_rdoc_files = [
17
22
  "LICENSE.txt",
18
23
  "README.rdoc"
19
24
  ]
20
- s.files = [
21
- ".travis.yml",
22
- "CHANGES.txt",
23
- "LICENSE.txt",
24
- "Manifest",
25
- "README.rdoc",
26
- "Rakefile",
27
- "gem-public_cert.pem",
28
- "lib/net/scp.rb",
29
- "lib/net/scp/download.rb",
30
- "lib/net/scp/errors.rb",
31
- "lib/net/scp/upload.rb",
32
- "lib/net/scp/version.rb",
33
- "lib/uri/open-scp.rb",
34
- "lib/uri/scp.rb",
35
- "net-scp.gemspec",
36
- "setup.rb",
37
- "test/common.rb",
38
- "test/test_all.rb",
39
- "test/test_download.rb",
40
- "test/test_scp.rb",
41
- "test/test_upload.rb"
42
- ]
43
- s.homepage = "https://github.com/net-ssh/net-scp"
44
- s.licenses = ["MIT"]
45
- s.require_paths = ["lib"]
46
- s.rubyforge_project = "net-scp"
47
- s.rubygems_version = "1.8.23"
48
- s.signing_key = "/mnt/gem/gem-private_key.pem"
49
- s.summary = "A pure Ruby implementation of the SCP client protocol"
50
25
 
51
- if s.respond_to? :specification_version then
52
- s.specification_version = 3
26
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
+ spec.require_paths = ["lib"]
28
+
29
+ if spec.respond_to? :specification_version then
30
+ spec.specification_version = 3
53
31
 
54
32
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
- s.add_runtime_dependency(%q<net-ssh>, [">= 2.6.5"])
56
- s.add_development_dependency(%q<test-unit>, [">= 0"])
57
- s.add_development_dependency(%q<mocha>, [">= 0"])
33
+ spec.add_runtime_dependency(%q<net-ssh>, [">= 2.6.5", "< 6.0.0"])
34
+ spec.add_development_dependency(%q<test-unit>, [">= 0"])
35
+ spec.add_development_dependency(%q<mocha>, [">= 0"])
58
36
  else
59
- s.add_dependency(%q<net-ssh>, [">= 2.6.5"])
60
- s.add_dependency(%q<test-unit>, [">= 0"])
61
- s.add_dependency(%q<mocha>, [">= 0"])
37
+ spec.add_dependency(%q<net-ssh>, [">= 2.6.5", "< 6.0.0"])
38
+ spec.add_dependency(%q<test-unit>, [">= 0"])
39
+ spec.add_dependency(%q<mocha>, [">= 0"])
62
40
  end
63
41
  else
64
- s.add_dependency(%q<net-ssh>, [">= 2.6.5"])
65
- s.add_dependency(%q<test-unit>, [">= 0"])
66
- s.add_dependency(%q<mocha>, [">= 0"])
42
+ spec.add_dependency(%q<net-ssh>, [">= 2.6.5", "< 6.0.0"])
43
+ spec.add_dependency(%q<test-unit>, [">= 0"])
44
+ spec.add_dependency(%q<mocha>, [">= 0"])
67
45
  end
68
46
  end
69
-