thor-ssh 0.0.8 → 0.0.9
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/thor-ssh/actions.rb +15 -7
- data/lib/thor-ssh/remote_server.rb +17 -0
- data/lib/thor-ssh/version.rb +1 -1
- data/spec/actions_spec.rb +7 -6
- metadata +4 -3
data/lib/thor-ssh/actions.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'thor-ssh/remote_file'
|
2
|
+
require 'thor-ssh/remote_server'
|
2
3
|
require 'thor-ssh/actions/empty_directory'
|
3
4
|
require 'thor-ssh/actions/create_file'
|
4
5
|
require 'thor-ssh/actions/create_link'
|
@@ -9,13 +10,13 @@ module ThorSsh
|
|
9
10
|
module Actions
|
10
11
|
|
11
12
|
# Returns a connection to the destination server for this thor class.
|
12
|
-
def
|
13
|
-
@
|
13
|
+
def destination_connection
|
14
|
+
@destination_connection
|
14
15
|
end
|
15
16
|
|
16
|
-
# Sets the destination server
|
17
|
-
def
|
18
|
-
@
|
17
|
+
# Sets the connection to the destination server
|
18
|
+
def destination_connection=(val)
|
19
|
+
@destination_connection = val
|
19
20
|
end
|
20
21
|
|
21
22
|
# Returns a remote file or File object that can used to query
|
@@ -23,12 +24,19 @@ module ThorSsh
|
|
23
24
|
# it is assumed to be local and a normal File class is returned
|
24
25
|
def destination_files
|
25
26
|
if self.destination_server
|
26
|
-
return @destination_files ||= RemoteFile.new(self.
|
27
|
+
return @destination_files ||= RemoteFile.new(self.destination_connection)
|
27
28
|
else
|
28
29
|
return File
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
33
|
+
# Returns a remote file or File object that can used to query
|
34
|
+
# or change the state of files. If there is no destination_server
|
35
|
+
# it is assumed to be local and a normal File class is returned
|
36
|
+
def destination_server
|
37
|
+
return @destination_server ||= RemoteServer.new(self.destination_connection)
|
38
|
+
end
|
39
|
+
|
32
40
|
def inside(dir='', config={}, &block)
|
33
41
|
raise "inside is not implemented in thor-ssh, please use full paths"
|
34
42
|
end
|
@@ -48,7 +56,7 @@ module ThorSsh
|
|
48
56
|
|
49
57
|
unless options[:pretend]
|
50
58
|
# config[:capture] ? `#{command}` : system("#{command}")
|
51
|
-
return
|
59
|
+
return destination_server.run(command)
|
52
60
|
end
|
53
61
|
end
|
54
62
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'net/ssh'
|
2
|
+
require 'net/sftp'
|
3
|
+
|
4
|
+
module ThorSsh
|
5
|
+
class RemoteServer
|
6
|
+
attr_reader :connection
|
7
|
+
|
8
|
+
def initialize(connection)
|
9
|
+
@connection = connection
|
10
|
+
end
|
11
|
+
|
12
|
+
def run(command)
|
13
|
+
return connection.exec!(command)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/lib/thor-ssh/version.rb
CHANGED
data/spec/actions_spec.rb
CHANGED
@@ -7,22 +7,22 @@ describe ThorSsh do
|
|
7
7
|
before do
|
8
8
|
# Setup the test and connect to a test server
|
9
9
|
@thor_test = ThorTest.new
|
10
|
-
@thor_test.
|
11
|
-
# @thor_test.destination_server = Net::SSH.start('localhost', 'ubuntu', :port => 2222)
|
10
|
+
@thor_test.destination_connection = VagrantManager.connect
|
12
11
|
end
|
13
12
|
|
14
13
|
after do
|
15
14
|
# Close the connection
|
16
|
-
@thor_test.
|
15
|
+
@thor_test.destination_connection.close
|
17
16
|
end
|
18
17
|
|
19
18
|
before(:all) do
|
20
19
|
@base_path = '/home/vagrant/thortest'
|
21
20
|
|
22
21
|
@thor_test = ThorTest.new
|
23
|
-
@thor_test.
|
22
|
+
@thor_test.destination_connection = VagrantManager.connect
|
24
23
|
@thor_test.destination_files.rm_rf(@base_path)
|
25
|
-
@thor_test.
|
24
|
+
@thor_test.destination_connection.close
|
25
|
+
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should create an empty directory' do
|
@@ -47,13 +47,14 @@ describe ThorSsh do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def mode(path)
|
50
|
-
ls = @thor_test.
|
50
|
+
ls = @thor_test.destination_server.run("ls -lh \"#{@base_path}/#{path}\"")
|
51
51
|
mode = ls.strip.split(/ /).first.strip
|
52
52
|
return mode
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should set the mode" do
|
56
56
|
@thor_test.create_file("#{@base_path}/modeFile", "More awesome content")
|
57
|
+
@thor_test.chmod("#{@base_path}/modeFile", 0644)
|
57
58
|
mode('modeFile').should == '-rw-r--r--'
|
58
59
|
@thor_test.chmod("#{@base_path}/modeFile", 0600)
|
59
60
|
mode('modeFile').should == '-rw-------'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thor-ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -144,6 +144,7 @@ files:
|
|
144
144
|
- lib/thor-ssh/actions/file_manipulation.rb
|
145
145
|
- lib/thor-ssh/actions/inject_into_file.rb
|
146
146
|
- lib/thor-ssh/remote_file.rb
|
147
|
+
- lib/thor-ssh/remote_server.rb
|
147
148
|
- lib/thor-ssh/version.rb
|
148
149
|
- spec/actions_spec.rb
|
149
150
|
- spec/remote_file_spec.rb
|
@@ -169,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
170
|
version: '0'
|
170
171
|
segments:
|
171
172
|
- 0
|
172
|
-
hash: -
|
173
|
+
hash: -3815866701832875741
|
173
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
175
|
none: false
|
175
176
|
requirements:
|
@@ -178,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
179
|
version: '0'
|
179
180
|
segments:
|
180
181
|
- 0
|
181
|
-
hash: -
|
182
|
+
hash: -3815866701832875741
|
182
183
|
requirements: []
|
183
184
|
rubyforge_project:
|
184
185
|
rubygems_version: 1.8.22
|