do 0.2.0.g → 0.2.0.h
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/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
|