do 0.2.0.g → 0.2.0.h
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/do.rb +2 -0
- data/lib/do/commands.rb +4 -1
- data/lib/do/server.rb +15 -4
- data/lib/do/support.rb +7 -0
- data/lib/do/tasks.rb +2 -2
- data/lib/do/version.rb +1 -1
- metadata +5 -4
data/lib/do.rb
CHANGED
@@ -2,6 +2,8 @@ DO_PATH = ENV['DO_PATH'] ||= File.expand_path("~/.do") unless defined?(DO_PATH)
|
|
2
2
|
DO_LOGGER = $stdout unless defined?(DO_LOGGER)
|
3
3
|
DO_LOGGER_FORMAT = "\e[36m%s\e[33m@\e[31m%s \e[33m~ \e[35m#\e[0m %s" unless defined?(DO_LOGGER_FORMAT)
|
4
4
|
|
5
|
+
require 'do/support'
|
6
|
+
|
5
7
|
module DO
|
6
8
|
autoload :CLI, 'do/cli.rb'
|
7
9
|
autoload :Server, 'do/server.rb'
|
data/lib/do/commands.rb
CHANGED
@@ -42,7 +42,7 @@ module DO
|
|
42
42
|
# Set an option to the given value
|
43
43
|
#
|
44
44
|
def set(name, value)
|
45
|
-
|
45
|
+
singleton_class.send(:define_method, name) { value }
|
46
46
|
end
|
47
47
|
|
48
48
|
##
|
@@ -73,6 +73,9 @@ module DO
|
|
73
73
|
|
74
74
|
def load_recipe(path)
|
75
75
|
instance_eval(File.read(path), __FILE__, __LINE__)
|
76
|
+
rescue Exception => e
|
77
|
+
puts path
|
78
|
+
raise(e)
|
76
79
|
end
|
77
80
|
|
78
81
|
def role(name)
|
data/lib/do/server.rb
CHANGED
@@ -68,17 +68,28 @@ module DO
|
|
68
68
|
# ==== Examples:
|
69
69
|
# run 'ls -al'
|
70
70
|
# run 'ls', '-al'
|
71
|
+
# run do |cmd|
|
72
|
+
# cmd << 'cd /mnt/www/apps'
|
73
|
+
# cmd << 'tar zxcf /tmp/backup.tar.gz project'
|
74
|
+
# end
|
71
75
|
# run 'mysqladmin -u root -p password 'new', :input => 'oldpassword'
|
72
76
|
#
|
73
|
-
def run(*args)
|
77
|
+
def run(*args, &block)
|
74
78
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
79
|
+
{ :sep => " "}.merge(options)
|
80
|
+
|
81
|
+
# If we give a block we run commands one by one
|
82
|
+
if block_given?
|
83
|
+
options.merge!(:sep => " && ")
|
84
|
+
yield args
|
85
|
+
end
|
75
86
|
|
76
87
|
# Set default options if not given
|
77
88
|
options[:pty] = request_pty unless options.has_key?(:pty)
|
78
89
|
options[:hidden] = hidden unless options.has_key?(:hidden)
|
79
90
|
options[:silent] = silent unless options.has_key?(:silent)
|
80
91
|
|
81
|
-
cmd = args.join(
|
92
|
+
cmd = args.join(options[:sep] || ' ')
|
82
93
|
if options[:as]
|
83
94
|
if options[:as] == 'root'
|
84
95
|
cmd = "sudo #{cmd}"
|
@@ -140,7 +151,7 @@ module DO
|
|
140
151
|
sftp.upload!(from, to, options) do |event, uploader, *args|
|
141
152
|
case event
|
142
153
|
when :put
|
143
|
-
DO_LOGGER.print("\r" + DO_LOGGER_FORMAT % [user, name, "writing: #{
|
154
|
+
DO_LOGGER.print("\r" + DO_LOGGER_FORMAT % [user, name, "writing: #{to} (#{(args[1].to_f * 100 / args[0].size.to_f).to_i}%)"]); DO_LOGGER.flush
|
144
155
|
when :finish
|
145
156
|
DO_LOGGER.puts("\r" + DO_LOGGER_FORMAT % [user, name, "writing: #{to} (100%)"]); DO_LOGGER.flush
|
146
157
|
# when :mkdir
|
@@ -165,7 +176,7 @@ module DO
|
|
165
176
|
case event
|
166
177
|
when :get
|
167
178
|
size = args[0].size ? args[0].size : sftp.stat!(from).size
|
168
|
-
DO_LOGGER.print("\r" + DO_LOGGER_FORMAT % [user, name, "sending: #{
|
179
|
+
DO_LOGGER.print("\r" + DO_LOGGER_FORMAT % [user, name, "sending: #{from} (#{(args[1].to_f * 100 / size.to_f).to_i}%)"]); DO_LOGGER.flush
|
169
180
|
when :finish
|
170
181
|
DO_LOGGER.puts("\r" + DO_LOGGER_FORMAT % [user, name, "sending: #{from} (100%)"]); DO_LOGGER.flush
|
171
182
|
# when :mkdir
|
data/lib/do/support.rb
ADDED
data/lib/do/tasks.rb
CHANGED
@@ -52,7 +52,7 @@ module DO
|
|
52
52
|
if task[:in].empty?
|
53
53
|
task[:block].arity == 1 ? task[:block].call(opts) : task[:block].call if task[:block]
|
54
54
|
else
|
55
|
-
task[:in] = send(task[:in][0]) if task[:in].size == 1 &&
|
55
|
+
task[:in] = send(task[:in][0]) if task[:in].size == 1 && singleton_class.method_defined?(task[:in][0])
|
56
56
|
Array(task[:in]).each do |d|
|
57
57
|
d = d.is_a?(DO::Server) ? d.name : d
|
58
58
|
parent = task_find(d)
|
@@ -64,7 +64,7 @@ module DO
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
rescue NotFound => e
|
67
|
-
|
67
|
+
singleton_class.method_defined?(args_was[0]) ? send(args_was.shift) : raise(e)
|
68
68
|
end
|
69
69
|
alias :run_task :task_run
|
70
70
|
|
data/lib/do/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: do
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 53
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 0.2.0.
|
10
|
+
- h
|
11
|
+
version: 0.2.0.h
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Davide D'Agostino
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-01-
|
19
|
+
date: 2012-01-12 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/do/common.rb
|
76
76
|
- lib/do/parser.rb
|
77
77
|
- lib/do/server.rb
|
78
|
+
- lib/do/support.rb
|
78
79
|
- lib/do/tasks.rb
|
79
80
|
- lib/do/utils.rb
|
80
81
|
- lib/do/version.rb
|