screwcap 0.6.2 → 0.6.3
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/Rakefile +1 -1
- data/lib/screwcap/runner.rb +6 -3
- data/lib/screwcap/task.rb +17 -1
- data/lib/screwcap.rb +1 -1
- data/screwcap.gemspec +1 -1
- data/spec/runner_spec.rb +14 -0
- data/spec/task_spec.rb +10 -0
- metadata +4 -4
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ Hoe.plugin :newgem
|
|
11
11
|
# Generate all the Rake tasks
|
12
12
|
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
13
13
|
$hoe = Hoe.spec 'screwcap' do
|
14
|
-
self.version = '0.6.
|
14
|
+
self.version = '0.6.3'
|
15
15
|
self.developer 'Grant Ammons', 'grant@pipelinedeals.com'
|
16
16
|
self.rubyforge_name = self.name # TODO this is default value
|
17
17
|
self.extra_deps = [['net-ssh','>= 2.0.23'],['net-ssh-gateway','>=1.0.1'], ['net-scp','>=1.0.4']]
|
data/lib/screwcap/runner.rb
CHANGED
@@ -42,7 +42,8 @@ class Runner
|
|
42
42
|
private
|
43
43
|
|
44
44
|
def self.run_command(command, ssh, options)
|
45
|
-
|
45
|
+
case command[:type]
|
46
|
+
when :remote
|
46
47
|
stdout, stderr, exit_code, exit_signal = ssh_exec! ssh, command[:command]
|
47
48
|
command[:stdout] = stdout
|
48
49
|
command[:stderr] = stderr
|
@@ -53,7 +54,7 @@ class Runner
|
|
53
54
|
_errorlog("\n E: (#{options[:address]}): #{command[:command]} return exit code: #{exit_code}\n", :color => :red) if exit_code != 0
|
54
55
|
end
|
55
56
|
return exit_code
|
56
|
-
|
57
|
+
when :local
|
57
58
|
ret = `#{command[:command]}`
|
58
59
|
command[:stdout] = ret
|
59
60
|
if $?.to_i == 0
|
@@ -62,12 +63,14 @@ class Runner
|
|
62
63
|
_errorlog("\n E: (local): #{command[:command]} return exit code: #{$?}\n", :color => :red) if $? != 0
|
63
64
|
end
|
64
65
|
return $?
|
65
|
-
|
66
|
+
when :scp
|
66
67
|
putc "."
|
67
68
|
options[:server].__upload_to!(options[:address], command[:local], command[:remote])
|
68
69
|
|
69
70
|
# this will need to be improved to allow for :onfailure
|
70
71
|
return 0
|
72
|
+
when :block
|
73
|
+
command[:block].call
|
71
74
|
end
|
72
75
|
end
|
73
76
|
|
data/lib/screwcap/task.rb
CHANGED
@@ -54,6 +54,22 @@ class Task < Screwcap::Base
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
# execute a ruby command.
|
58
|
+
# command_set :test do
|
59
|
+
# run "do this"
|
60
|
+
# ex { @myvar = true }
|
61
|
+
# run "do that"
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
# this is good for calling an external service during your deployment.
|
65
|
+
#
|
66
|
+
# command_set :after_deploy do
|
67
|
+
# ex { $hipchat_client.send "Deployment has finished" }
|
68
|
+
# end
|
69
|
+
def ex(&block)
|
70
|
+
self.__commands << {:type => :block, :from => self.__name, :block => block}
|
71
|
+
end
|
72
|
+
|
57
73
|
# SCP a file from your local drive to a remote machine.
|
58
74
|
# task_for :item, :servers => :server do
|
59
75
|
# scp :local => "/tmp/pirate_booty", :remote => "/mnt/app/config/booty.yml"
|
@@ -214,7 +230,7 @@ class Task < Screwcap::Base
|
|
214
230
|
private
|
215
231
|
|
216
232
|
def method_missing(m, *args) # :nodoc
|
217
|
-
if m.to_s[0..1] == "__" or [:run].include?(m) or m.to_s.reverse[0..0] == "="
|
233
|
+
if m.to_s[0..1] == "__" or [:run, :ex].include?(m) or m.to_s.reverse[0..0] == "="
|
218
234
|
super(m, args.first)
|
219
235
|
elsif m == :to_ary
|
220
236
|
# In Ruby 1.9, Array#flatten calls #to_ary on each of the
|
data/lib/screwcap.rb
CHANGED
data/screwcap.gemspec
CHANGED
data/spec/runner_spec.rb
CHANGED
@@ -48,4 +48,18 @@ describe "The Runner" do
|
|
48
48
|
commands = Runner.execute_locally! :name => :localtest, :commands => task.__build_commands, :silent => true
|
49
49
|
commands[0][:stdout].should == "bongle\n"
|
50
50
|
end
|
51
|
+
|
52
|
+
it "should be able to execute ex commands" do
|
53
|
+
@@testvar = :bingo
|
54
|
+
task = Task.new :name => :extest do
|
55
|
+
ex { @@testvar = :bango }
|
56
|
+
end
|
57
|
+
@@testvar.should == :bingo
|
58
|
+
commands = Runner.execute! :name => "test",
|
59
|
+
:server => @server,
|
60
|
+
:address => "fake.com",
|
61
|
+
:commands => task.__build_commands,
|
62
|
+
:silent => true
|
63
|
+
@@testvar.should == :bango
|
64
|
+
end
|
51
65
|
end
|
data/spec/task_spec.rb
CHANGED
@@ -279,4 +279,14 @@ describe "Tasks" do
|
|
279
279
|
commands = task.__build_commands [n1, n2, n3]
|
280
280
|
commands.map {|c| c[:command] }.should == %w(unlock_the_gate release_the_hounds lock_the_gate)
|
281
281
|
end
|
282
|
+
|
283
|
+
it "has an ex command" do
|
284
|
+
|
285
|
+
task = Task.new :name => :task do
|
286
|
+
@test = "asdf"
|
287
|
+
ex { @test = "fdsa" }
|
288
|
+
end
|
289
|
+
|
290
|
+
commands = task.__build_commands([task])
|
291
|
+
end
|
282
292
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: screwcap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 3
|
10
|
+
version: 0.6.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Grant Ammons
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-03-18 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|