doo 0.2.1 → 0.2.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 +2 -1
- data/VERSION +1 -1
- data/lib/doo/cli.rb +6 -1
- data/lib/doo/stock/render_to_file.rb +1 -1
- data/lib/doo/stock/run_locally.rb +8 -2
- data/lib/doo/stock/run_on_server.rb +17 -7
- data/spec/doo/base_spec.rb +10 -0
- data/spec/doo/cli_spec.rb +5 -1
- metadata +20 -11
data/Rakefile
CHANGED
@@ -10,6 +10,7 @@ begin
|
|
10
10
|
gem.email = [ "mat@geeky.net" ]
|
11
11
|
gem.executables = %W(doo)
|
12
12
|
gem.files = FileList["[A-Z]*", "{bin,examples,lib,spec}/**/*", 'lib/jeweler/templates/.gitignore']
|
13
|
+
gem.add_dependency "highline"
|
13
14
|
end
|
14
15
|
rescue LoadError
|
15
16
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
@@ -21,4 +22,4 @@ Spec::Rake::SpecTask.new('spec') do |t|
|
|
21
22
|
t.spec_files = FileList['spec/**/*.rb']
|
22
23
|
end
|
23
24
|
|
24
|
-
task :default => :spec
|
25
|
+
task :default => :spec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/lib/doo/cli.rb
CHANGED
@@ -14,6 +14,11 @@ module Doo
|
|
14
14
|
options[:verbose] = true
|
15
15
|
end
|
16
16
|
|
17
|
+
options[:confirm] = false
|
18
|
+
opts.on( '-c', '--confirm', 'Confirm every command before it gets run' ) do
|
19
|
+
options[:confirm] = true
|
20
|
+
end
|
21
|
+
|
17
22
|
opts.on( '-s', '--set key=value', 'Set runtime values' ) do |arg|
|
18
23
|
options[arg.split('=')[0]] = arg.split('=')[1]
|
19
24
|
end
|
@@ -52,4 +57,4 @@ module Doo
|
|
52
57
|
end
|
53
58
|
end
|
54
59
|
end
|
55
|
-
end
|
60
|
+
end
|
@@ -1,12 +1,18 @@
|
|
1
|
+
require 'highline'
|
2
|
+
|
1
3
|
Doo::Base.class_eval do
|
2
4
|
def run_locally(variables = {}, &block)
|
3
5
|
with_clone(variables) do
|
4
6
|
def run(cmd)
|
5
|
-
|
7
|
+
if confirm
|
8
|
+
return false unless HighLine.new.agree("Run \"#{cmd}\"? ")
|
9
|
+
elsif verbose
|
10
|
+
puts "Running \"#{cmd}\""
|
11
|
+
end
|
6
12
|
system cmd unless dry_run
|
7
13
|
$?
|
8
14
|
end
|
9
15
|
instance_eval &block if block_given?
|
10
16
|
end
|
11
17
|
end
|
12
|
-
end
|
18
|
+
end
|
@@ -1,22 +1,32 @@
|
|
1
|
+
require 'highline'
|
2
|
+
|
1
3
|
Doo::Base.class_eval do
|
2
4
|
def run_on_server(servers, variables = {}, &block)
|
3
5
|
servers.each do |host, params|
|
4
6
|
with_clone(variables.merge({:host => host}).merge(params || {})) do
|
5
|
-
def run(
|
7
|
+
def run(remote_cmd, opt = {})
|
6
8
|
cmdopts = ["-S \"~/.ssh/master-%l-%r@%h:%p\""]
|
7
9
|
cmdopts << "-t" if !opt.include? :pty || opt[:pty]
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
cmd = "ssh #{cmdopts.join(' ')} #{user}@#{host} \"#{remote_cmd.gsub(/\"/, "\\\"")}\""
|
11
|
+
if confirm
|
12
|
+
return false unless HighLine.new.agree("Run \"#{cmd}\"? ")
|
13
|
+
elsif verbose
|
14
|
+
puts "Running \"#{cmd}\""
|
15
|
+
end
|
16
|
+
system(cmd) || raise("SSH Error") unless dry_run
|
11
17
|
$?
|
12
18
|
end
|
13
19
|
|
14
20
|
def put(local, remote, opt = {})
|
15
21
|
cmdopts = ["-r"]
|
16
22
|
cmdopts << "-oProxyCommand=\"ssh #{gateway} exec nc %h %p\"" if defined?(gateway) && gateway
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
cmd = "scp #{cmdopts.join(' ')} #{local} #{user}@#{host}:#{remote}"
|
24
|
+
if confirm
|
25
|
+
return false unless HighLine.new.agree("Run \"#{cmd}\"? ")
|
26
|
+
elsif verbose
|
27
|
+
puts "Running \"#{cmd}\""
|
28
|
+
end
|
29
|
+
system(cmd) || raise("Scp Error") unless dry_run
|
20
30
|
$?
|
21
31
|
end
|
22
32
|
|
data/spec/doo/base_spec.rb
CHANGED
@@ -70,4 +70,14 @@ describe Doo::Base do
|
|
70
70
|
end
|
71
71
|
@inst.should_not respond_to :extra
|
72
72
|
end
|
73
|
+
|
74
|
+
it "understands namespaces" do
|
75
|
+
@inst.should respond_to :namespace
|
76
|
+
@inst.extra.should == "bologna"
|
77
|
+
end
|
78
|
+
|
79
|
+
it "namespaces should take a block" do
|
80
|
+
raise
|
81
|
+
end
|
82
|
+
|
73
83
|
end
|
data/spec/doo/cli_spec.rb
CHANGED
@@ -17,6 +17,10 @@ describe Doo::CLI::Options do
|
|
17
17
|
Doo::CLI::Options.parse!(["-v", "foo"]).member?(:verbose).should == true
|
18
18
|
end
|
19
19
|
|
20
|
+
it "should set on --confirm" do
|
21
|
+
Doo::CLI::Options.parse!(["-c", "foo"]).member?(:confirm).should == true
|
22
|
+
end
|
23
|
+
|
20
24
|
it "should set variables" do
|
21
25
|
Doo::CLI::Options.parse!(["-swoz=bar", "foo"])["woz"].should == "bar"
|
22
26
|
end
|
@@ -35,4 +39,4 @@ describe Doo::CLI::Options do
|
|
35
39
|
inst.should_receive(:load).with("bar")
|
36
40
|
Doo::CLI.start
|
37
41
|
end
|
38
|
-
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 21
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
8
|
+
- 3
|
9
|
+
version: 0.2.3
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Mat Trudel
|
@@ -15,10 +14,22 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-12-01 00:00:00 -05:00
|
19
18
|
default_executable: doo
|
20
|
-
dependencies:
|
21
|
-
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: highline
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
22
33
|
description: Doo is a deployment scripting tool in the vein of capistrano and sprinkle that uses stacked contexts and a aspect-ish data model
|
23
34
|
email:
|
24
35
|
- mat@geeky.net
|
@@ -49,8 +60,8 @@ homepage: http://github.com/mtrudel/doo
|
|
49
60
|
licenses: []
|
50
61
|
|
51
62
|
post_install_message:
|
52
|
-
rdoc_options:
|
53
|
-
|
63
|
+
rdoc_options: []
|
64
|
+
|
54
65
|
require_paths:
|
55
66
|
- lib
|
56
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -58,7 +69,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
69
|
requirements:
|
59
70
|
- - ">="
|
60
71
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 3
|
62
72
|
segments:
|
63
73
|
- 0
|
64
74
|
version: "0"
|
@@ -67,7 +77,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
77
|
requirements:
|
68
78
|
- - ">="
|
69
79
|
- !ruby/object:Gem::Version
|
70
|
-
hash: 3
|
71
80
|
segments:
|
72
81
|
- 0
|
73
82
|
version: "0"
|
@@ -79,6 +88,6 @@ signing_key:
|
|
79
88
|
specification_version: 3
|
80
89
|
summary: Doo - an stacked-cotnext approach to deployment scripting
|
81
90
|
test_files:
|
91
|
+
- examples/sample.rb
|
82
92
|
- spec/doo/base_spec.rb
|
83
93
|
- spec/doo/cli_spec.rb
|
84
|
-
- examples/sample.rb
|