runssh 0.1.1 → 0.2.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.
@@ -16,52 +16,87 @@
16
16
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
  #
18
18
 
19
- require 'lib/runsshlib'
20
- require 'tmpdir'
21
19
  require 'spec_helper'
20
+ require 'runsshlib'
21
+ require 'tmpdir'
22
+ require 'yaml'
22
23
 
23
24
  describe "RunSSH Configuration class" do
24
25
 
25
- def read_config
26
- File.open(@temp_file) { |io| Marshal.load(io) }
26
+ def read_config from_file=@temp_file
27
+ File.open(from_file) { |io| Marshal.load(io) }
27
28
  end
28
29
 
29
30
  def initial_data
30
31
  @c = RunSSHLib::ConfigFile.new(@temp_file)
31
- @c.add_host_def([:one, :two, :three], :www,
32
- RunSSHLib::HostDef.new('www.example.com', 'me'))
32
+ host = {:host_name => 'www.example.com', :login => "me"}
33
+ @c.add_host_def([:one, :two, :three], :www, RunSSHLib::SshHostDef.new(host))
33
34
  end
34
35
 
35
36
  before(:all) do
36
- @temp_file = File.join(Dir.tmpdir, 'tempfile')
37
+ cleanup_tmp_file # make sure there are no leftovers
38
+ @temp_file = TMP_FILE
37
39
  @temp_file_bak = @temp_file + '.bak'
38
- @h1 = RunSSHLib::HostDef.new('a.b.c')
39
- @h2 = RunSSHLib::HostDef.new('b.b.c', 'meme')
40
+ @h1 = RunSSHLib::SshHostDef.new('a.b.c')
41
+ @h2 = RunSSHLib::SshHostDef.new(:host_name => 'b.b.c',
42
+ :login => 'meme')
40
43
  @tmp_yml = File.join(Dir.tmpdir, 'tempyml')
41
44
  end
42
45
 
43
- it "should save a new empty configuration if none exists" do
44
- RunSSHLib::ConfigFile.new(@temp_file)
45
- read_config.should == {}
46
- end
46
+ describe 'when initializing' do
47
+ it "should save a new empty configuration if none exists" do
48
+ RunSSHLib::ConfigFile.new(@temp_file)
49
+ read_config.should == {'VERSION' => RunSSHLib::ConfigFile::Version}
50
+ end
47
51
 
48
- it "should create a backup while saving" do
49
- c = RunSSHLib::ConfigFile.new(@temp_file)
50
- c.send(:save)
51
- # the 2 files should match
52
- File.read(@temp_file).should == File.read(@temp_file_bak)
53
- end
52
+ it "should create a backup while saving" do
53
+ c = RunSSHLib::ConfigFile.new(@temp_file)
54
+ c.send(:save)
55
+ # the 2 files should match
56
+ File.read(@temp_file).should == File.read(@temp_file_bak)
57
+ end
54
58
 
55
- it "should overwrite existing backup if one already exists" do
56
- # create a new file and a copy of it
57
- c = RunSSHLib::ConfigFile.new(@temp_file)
58
- c.send(:save)
59
- # sanity
60
- File.read(@temp_file).should == File.read(@temp_file_bak)
61
- b = RunSSHLib::ConfigFile.new(@temp_file)
62
- b.add_host_def([:one, :two, :three], :www, @h1)
63
- File.read(@temp_file).should_not == File.read(@temp_file_bak)
59
+ it "should overwrite existing backup if one already exists" do
60
+ # create a new file and a copy of it
61
+ c = RunSSHLib::ConfigFile.new(@temp_file)
62
+ c.send(:save)
63
+ # sanity
64
+ File.read(@temp_file).should == File.read(@temp_file_bak)
65
+ b = RunSSHLib::ConfigFile.new(@temp_file)
66
+ b.add_host_def([:one, :two, :three], :www, @h1)
67
+ File.read(@temp_file).should_not == File.read(@temp_file_bak)
68
+ end
64
69
 
70
+ it "should raise OlderConfigVersionError if missing config version" do
71
+ # create an empty file to represent a config file without a version
72
+ dump_config Hash.new
73
+ expect {
74
+ RunSSHLib::ConfigFile.new(@temp_file)
75
+ }.to raise_error(RunSSHLib::OlderConfigVersionError, 'none')
76
+ end
77
+
78
+ it "should accept older/no config version of old_version=true" do
79
+ dump_config Hash.new
80
+ RunSSHLib::ConfigFile.new(TMP_FILE, true).should be_instance_of(RunSSHLib::ConfigFile)
81
+ end
82
+
83
+ it "should raise ConfigError if version is higher then supported" do
84
+ hsh = Hash.new
85
+ hsh['VERSION'] = 1.1
86
+ dump_config hsh
87
+ expect do
88
+ RunSSHLib::ConfigFile.new(@temp_file)
89
+ end.to raise_error(RunSSHLib::ConfigError, /newer version of runssh!/)
90
+ # even if old_version=true
91
+ expect do
92
+ RunSSHLib::ConfigFile.new(@temp_file, true)
93
+ end.to raise_error(RunSSHLib::ConfigError, /newer version of runssh!/)
94
+ end
95
+
96
+ it "should create new config files with the correct version" do
97
+ cf = RunSSHLib::ConfigFile.new(@temp_file)
98
+ read_config['VERSION'].should eql(RunSSHLib::ConfigFile::Version)
99
+ end
65
100
  end
66
101
 
67
102
  describe "when adding host" do
@@ -95,8 +130,8 @@ describe "RunSSH Configuration class" do
95
130
  c.add_host_def([:one, :two], :h1, @h1)
96
131
  c.add_host_def([:three, :four], :h2, @h2)
97
132
  d = RunSSHLib::ConfigFile.new(@temp_file)
98
- d.get_host([:one, :two, :h1]).should == @h1
99
- d.get_host([:three, :four, :h2]).should == @h2
133
+ d.get_host([:one, :two, :h1]).should eql(@h1)
134
+ d.get_host([:three, :four, :h2]).should eql(@h2)
100
135
  end
101
136
 
102
137
  it "should correctly merge paths with common path" do
@@ -249,15 +284,93 @@ describe "RunSSH Configuration class" do
249
284
  @c.list_groups([:one, :two]).should include(:three, :four)
250
285
  @c.list_groups([:one, :two, :three]).should include(:host, :www)
251
286
  end
287
+
288
+ it "should not return the VERSION as a group" do
289
+ @c.list_groups([]).should_not include('VERSION')
290
+ end
252
291
  end
253
292
 
254
- it "should correctly export and import YAML files" do
255
- yml = File.join(File.dirname(__FILE__), '../fixtures', 'runssh.yml')
256
- c = RunSSHLib::ConfigFile.new(@temp_file)
257
- c.import(yml)
258
- c.export(@tmp_yml)
259
- require 'yaml'
260
- YAML.load_file(@tmp_yml).should == YAML.load_file(yml)
293
+ describe "when importing" do
294
+ let(:yml) { File.join(File.dirname(__FILE__), '../fixtures', 'runssh.yml') }
295
+
296
+ it "should not accept config from different config version" do
297
+ y = YAML.load_file(yml)
298
+ y['VERSION'] = 2.0
299
+ File.open(@tmp_yml, 'w') { |out| YAML.dump(y, out) }
300
+ expect do
301
+ c = RunSSHLib::ConfigFile.new(@temp_file)
302
+ c.import(@tmp_yml)
303
+ end.to raise_error(RunSSHLib::ConfigError, /different version.*2.0/)
304
+ end
305
+
306
+ it "should correctly export and import YAML files" do
307
+ c = RunSSHLib::ConfigFile.new(@temp_file)
308
+ c.import(yml)
309
+ c.export(@tmp_yml)
310
+ YAML.load_file(@tmp_yml).should == YAML.load_file(yml)
311
+ end
312
+ end
313
+
314
+ describe "when updating configuration version" do
315
+ let(:config_v_none) do
316
+ YAML.load_file(File.join(File.dirname(__FILE__), '..',
317
+ 'fixtures', 'runssh_v_none.yml'))
318
+ end
319
+
320
+ it "'config_none_to_10' should correctly convert all old HostDef to SshHostDef" do
321
+ c = RunSSHLib::ConfigFile.new(TMP_FILE, true)
322
+ result = c.send(:config_none_to_10, config_v_none)
323
+ result[:cust1][:dc1][:host2].should be_instance_of(RunSSHLib::SshHostDef)
324
+ result[:cust1][:dc1][:host1].should be_instance_of(RunSSHLib::SshHostDef)
325
+ result[:cust1][:dc2][:host1].should be_instance_of(RunSSHLib::SshHostDef)
326
+ end
327
+
328
+ it "'update_config' should call config_none_to_10 with right parameters" do
329
+ dump_config(config_v_none)
330
+ c = RunSSHLib::ConfigFile.new(TMP_FILE, true)
331
+ c.should_receive(:config_none_to_10).with(config_v_none).and_return(Hash.new)
332
+ c.update_config
333
+ end
334
+
335
+ it "'update_config' should create backup with appropriate name" do
336
+ bf = TMP_FILE + '.none'
337
+ dump_config(config_v_none)
338
+ c = RunSSHLib::ConfigFile.new(TMP_FILE, true)
339
+ c.update_config
340
+ read_config(bf).should eql(config_v_none)
341
+ end
342
+
343
+ it "'update_config' should return the backup file for notifying the user" do
344
+ dump_config(config_v_none)
345
+ c = RunSSHLib::ConfigFile.new(TMP_FILE, true)
346
+ c.update_config.should eql(TMP_FILE + '.none')
347
+ end
348
+
349
+ it "'update_config' should return nil if there was no need for backup" do
350
+ hsh = {'VERSION' => RunSSHLib::ConfigFile::Version}
351
+ dump_config(hsh)
352
+ c = RunSSHLib::ConfigFile.new(TMP_FILE, true)
353
+ c.update_config.should be_nil
354
+ end
355
+
356
+ it "should correctly save the new configuration" do
357
+ dump_config(config_v_none)
358
+ c = RunSSHLib::ConfigFile.new(TMP_FILE, true)
359
+ c.update_config
360
+ new_config = RunSSHLib::ConfigFile.new(TMP_FILE)
361
+ cc = new_config.instance_variable_get(:@config)
362
+ cc['VERSION'].should eql(RunSSHLib::ConfigFile::Version)
363
+ cc[:cust1][:dc1][:host2].should be_instance_of(RunSSHLib::SshHostDef)
364
+ cc[:cust1][:dc1][:host1].should be_instance_of(RunSSHLib::SshHostDef)
365
+ cc[:cust1][:dc2][:host1].should be_instance_of(RunSSHLib::SshHostDef)
366
+ end
367
+
368
+ after(:each) do
369
+ bf = TMP_FILE + '.none'
370
+ if File.exists? bf
371
+ File.delete(bf)
372
+ end
373
+ end
261
374
  end
262
375
 
263
376
  after(:each) do
@@ -272,4 +385,4 @@ describe "RunSSH Configuration class" do
272
385
  end
273
386
  end
274
387
 
275
- end
388
+ end
@@ -16,53 +16,55 @@
16
16
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
  #
18
18
 
19
- require 'lib/runsshlib'
20
19
  require 'spec_helper'
20
+ require 'runsshlib'
21
21
 
22
- describe "SshBackend implementation" do
23
- describe "when initializing" do
24
- before(:all) do
25
- @h = RunSSHLib::HostDef.new('a.example.com', 'me')
26
- @o = {:login => 'you'}
22
+ describe RunSSHLib::SshBackend do
23
+ context "shell" do
24
+ let(:test_data) do
25
+ {:host_name => "a",
26
+ :login => "user",
27
+ :remote_cmd => "uptime"}
27
28
  end
28
29
 
29
- it "should override user in host definition with `overrides`" do
30
- s = RunSSHLib::SshBackend.new(@h, @o)
31
- s.instance_variable_get(:@host).should == 'a.example.com'
32
- s.instance_variable_get(:@user).should == 'you'
30
+ it "should handle null user correctly" do
31
+ data = {:host_name => "a"}
32
+ RunSSHLib::SshBackend.should_receive(:exec).
33
+ with(/^ssh\s+#{data[:host_name]}$/).
34
+ and_return(nil)
35
+ RunSSHLib::SshBackend.shell(data)
33
36
  end
34
37
 
35
- it "should accept host definitions if no overrides" do
36
- s = RunSSHLib::SshBackend.new(@h, {})
37
- s.instance_variable_get(:@host).should == 'a.example.com'
38
- s.instance_variable_get(:@user).should == 'me'
38
+ it "should handle user correctly" do
39
+ data = {
40
+ :host_name => "a",
41
+ :login => "user"
42
+ }
43
+ RunSSHLib::SshBackend.should_receive(:exec).
44
+ with(/^ssh\s+-l\s+#{data[:login]}\s+#{data[:host_name]}$/).
45
+ and_return(nil)
46
+ RunSSHLib::SshBackend.shell(data)
39
47
  end
40
- end
41
48
 
42
- describe "shell" do
43
- before(:each) do
44
- @hd1 = RunSSHLib::HostDef.new('a.example.com')
45
- @hd2 = RunSSHLib::HostDef.new('b.example.com', 'user')
46
- end
47
-
48
- it "should handle null user correctly" do
49
- ssh = RunSSHLib::SshBackend.new(@hd1, {})
50
- ssh.should_receive(:exec).with(/^ssh\s+a.example.com$/).and_return(nil)
51
- ssh.shell
49
+ it "should raise error if no :host_name in definition" do
50
+ expect do
51
+ RunSSHLib::SshBackend.shell({:login => 'me'})
52
+ end.to raise_error(RuntimeError, /no hostname/i)
52
53
  end
53
54
 
54
- it "should handle existing user correctly" do
55
- ssh = RunSSHLib::SshBackend.new(@hd2, {})
56
- ssh.should_receive(:exec).with(/^ssh\s+-l\s+user\s+b.example.com$/).
57
- and_return(nil)
58
- ssh.shell
55
+ it "should handle correctly remote commands" do
56
+ RunSSHLib::SshBackend.should_receive(:exec).
57
+ with(/^ssh\s+-l\s+#{test_data[:login]}\s+#{test_data[:host_name]}\s+--\s+"uptime"$/).
58
+ and_return(nil)
59
+ RunSSHLib::SshBackend.shell(test_data)
59
60
  end
60
61
 
61
- it "should use the overriding user instead of configured one" do
62
- ssh = RunSSHLib::SshBackend.new(@hd2, {:login => 'another', })
63
- ssh.should_receive(:exec).with(/^ssh\s+-l\s+another\s+b.example.com$/).
64
- and_return(nil)
65
- ssh.shell
62
+ it "should ignore empty remote commands" do
63
+ data = test_data.merge(:remote_cmd => "")
64
+ RunSSHLib::SshBackend.should_receive(:exec).
65
+ with(/^ssh\s+-l\s+#{data[:login]}\s+#{data[:host_name]}$/).
66
+ and_return(nil)
67
+ RunSSHLib::SshBackend.shell(data)
66
68
  end
67
69
  end
68
70
  end
@@ -0,0 +1,91 @@
1
+ #
2
+ # Copyright (C) 2010 Haim Ashkenazi
3
+ #
4
+ # This program is free software; you can redistribute it and/or
5
+ # modify it under the terms of the GNU General Public License
6
+ # as published by the Free Software Foundation; either version 2
7
+ # of the License, or (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program; if not, write to the Free Software
16
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
+ #
18
+ require 'spec_helper'
19
+ require 'runsshlib'
20
+
21
+ describe 'SshHostDef' do
22
+ context 'when initialized' do
23
+ let(:data) { {:host_name => 'myname'} }
24
+
25
+ it "should raise ArgumentError if not initialized with host_name" do
26
+ expect {
27
+ RunSSHLib::SshHostDef.new({:login => 'haim'})
28
+ }.to raise_error(ArgumentError, /Missing hostname/)
29
+ end
30
+
31
+ it "should initialize correctly if supplied a hostname as string" do
32
+ shd = RunSSHLib::SshHostDef.new('myname')
33
+ shd.instance_variable_get(:@definition).should eql(data)
34
+ end
35
+
36
+ it "should initialize correctly if supplied with a hash with :host_name" do
37
+ shd = RunSSHLib::SshHostDef.new(data)
38
+ shd.instance_variable_get(:@definition).should eql(data)
39
+ end
40
+ end
41
+
42
+ context 'when testing for equality' do
43
+ let(:definition) do
44
+ { :host_name => 'host', :login => "login" }
45
+ end
46
+
47
+ it "should not equal nil" do
48
+ RunSSHLib::SshHostDef.new(definition).should_not == nil
49
+ end
50
+
51
+ it "should not equal any object" do
52
+ class MyTest
53
+ attr_reader :definition
54
+ def initialize definition
55
+ @definition = definition
56
+ end
57
+ end
58
+
59
+ RunSSHLib::SshHostDef.new(definition).should_not == MyTest.new(definition)
60
+ end
61
+
62
+ it "should return true for == if @definition is equal" do
63
+ h1 = RunSSHLib::SshHostDef.new(definition)
64
+ h2 = RunSSHLib::SshHostDef.new('hostname')
65
+ RunSSHLib::SshHostDef.new(definition).should == h1
66
+ RunSSHLib::SshHostDef.new('hostname').should == h2
67
+ end
68
+
69
+ it "should return true for eql? if @definition is equal" do
70
+ h1 = RunSSHLib::SshHostDef.new(definition)
71
+ h2 = RunSSHLib::SshHostDef.new('hostname')
72
+ RunSSHLib::SshHostDef.new(definition).should eql(h1)
73
+ RunSSHLib::SshHostDef.new('hostname').should eql(h2)
74
+ end
75
+ end
76
+
77
+ context "to_print" do
78
+ it "should run correctly without user" do
79
+ h = RunSSHLib::SshHostDef.new('myhostname')
80
+ p h.to_print
81
+ h.to_print.should match(/^.*host:.*myhostname\n.*login:.*current user$/)
82
+ end
83
+
84
+ it "should run correctly with user" do
85
+ h = RunSSHLib::SshHostDef.new({
86
+ :host_name => 'myhostname', :login => 'me'
87
+ })
88
+ h.to_print.should match(/^.*host:.*myhostname\n.*login:.*me$/)
89
+ end
90
+ end
91
+ end
data/spec/spec_helper.rb CHANGED
@@ -17,6 +17,7 @@
17
17
  #
18
18
  require 'rspec'
19
19
  require 'tmpdir'
20
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
20
21
 
21
22
  # got the idea from:
22
23
  # http://stackoverflow.com/questions/1480537/how-can-i-validate-exits-and-aborts-in-rspec
@@ -83,3 +84,7 @@ def import_fixtures
83
84
  c = RunSSHLib::ConfigFile.new(TMP_FILE)
84
85
  c.import(yml)
85
86
  end
87
+
88
+ def dump_config hsh
89
+ File.open(TMP_FILE, 'w') { |out| Marshal.dump(hsh, out) }
90
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runssh
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 23
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Haim Ashkenazi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-31 00:00:00 +02:00
18
+ date: 2011-01-25 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -35,7 +35,7 @@ dependencies:
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: rspec
38
+ name: highline
39
39
  prerelease: false
40
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
@@ -44,16 +44,32 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  hash: 13
46
46
  segments:
47
+ - 1
48
+ - 6
49
+ - 1
50
+ version: 1.6.1
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 11
62
+ segments:
47
63
  - 2
48
- - 0
49
64
  - 1
50
- version: 2.0.1
65
+ - 0
66
+ version: 2.1.0
51
67
  type: :development
52
- version_requirements: *id002
68
+ version_requirements: *id003
53
69
  - !ruby/object:Gem::Dependency
54
70
  name: rcov
55
71
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
72
+ requirement: &id004 !ruby/object:Gem::Requirement
57
73
  none: false
58
74
  requirements:
59
75
  - - ~>
@@ -65,7 +81,55 @@ dependencies:
65
81
  - 9
66
82
  version: 0.9.9
67
83
  type: :development
68
- version_requirements: *id003
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: autotest
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 39
94
+ segments:
95
+ - 4
96
+ - 4
97
+ - 4
98
+ version: 4.4.4
99
+ type: :development
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: autotest-fsevent
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ hash: 17
110
+ segments:
111
+ - 0
112
+ - 2
113
+ - 3
114
+ version: 0.2.3
115
+ type: :development
116
+ version_requirements: *id006
117
+ - !ruby/object:Gem::Dependency
118
+ name: autotest-growl
119
+ prerelease: false
120
+ requirement: &id007 !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ hash: 27
126
+ segments:
127
+ - 0
128
+ - 2
129
+ - 6
130
+ version: 0.2.6
131
+ type: :development
132
+ version_requirements: *id007
69
133
  description: |
70
134
  Runssh is a command line utility to help bookmark many
71
135
  ssh connections in heirarchial groups.
@@ -78,19 +142,30 @@ extensions: []
78
142
  extra_rdoc_files:
79
143
  - README.rdoc
80
144
  files:
145
+ - .autotest
146
+ - .gitignore
147
+ - .rspec
148
+ - Gemfile
149
+ - Gemfile.lock
81
150
  - README.rdoc
82
- - gpl-2.0.txt
83
151
  - Rakefile
152
+ - autotest/discover.rb
153
+ - bin/runssh
154
+ - bin/runssh_comp.sh
155
+ - gpl-2.0.txt
156
+ - lib/runsshlib.rb
84
157
  - lib/runsshlib/cli.rb
85
158
  - lib/runsshlib/config_file.rb
86
159
  - lib/runsshlib/ssh_backend.rb
87
- - lib/runsshlib.rb
88
- - bin/runssh
89
- - bin/runssh_comp.sh
160
+ - lib/runsshlib/ssh_host_def.rb
161
+ - lib/runsshlib/version.rb
162
+ - runssh.gemspec
90
163
  - spec/fixtures/runssh.yml
164
+ - spec/fixtures/runssh_v_none.yml
91
165
  - spec/runsshlib/cli_spec.rb
92
166
  - spec/runsshlib/config_file_spec.rb
93
167
  - spec/runsshlib/ssh_backend_spec.rb
168
+ - spec/runsshlib/ssh_host_def_spec.rb
94
169
  - spec/spec_helper.rb
95
170
  has_rdoc: true
96
171
  homepage: http://github.com/babysnakes/runssh
@@ -100,12 +175,14 @@ post_install_message:
100
175
  rdoc_options:
101
176
  - --main
102
177
  - README.rdoc
178
+ - -c
179
+ - UTF-8
103
180
  require_paths:
104
181
  - lib
105
182
  required_ruby_version: !ruby/object:Gem::Requirement
106
183
  none: false
107
184
  requirements:
108
- - - ~>
185
+ - - ">="
109
186
  - !ruby/object:Gem::Version
110
187
  hash: 57
111
188
  segments:
@@ -125,9 +202,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
202
  requirements: []
126
203
 
127
204
  rubyforge_project:
128
- rubygems_version: 1.3.7
205
+ rubygems_version: 1.4.2
129
206
  signing_key:
130
207
  specification_version: 3
131
208
  summary: CLI utility to bookmark multiple ssh connections with hierarchy.
132
- test_files: []
133
-
209
+ test_files:
210
+ - spec/fixtures/runssh.yml
211
+ - spec/fixtures/runssh_v_none.yml
212
+ - spec/runsshlib/cli_spec.rb
213
+ - spec/runsshlib/config_file_spec.rb
214
+ - spec/runsshlib/ssh_backend_spec.rb
215
+ - spec/runsshlib/ssh_host_def_spec.rb
216
+ - spec/spec_helper.rb