net-scp 1.2.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-