automateit 0.71003 → 0.71006
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/CHANGES.txt +9 -0
- data/Rakefile +4 -0
- data/lib/automateit/download_manager.rb +5 -3
- data/lib/automateit/edit_manager.rb +2 -2
- data/lib/automateit/root.rb +1 -1
- data/lib/automateit/service_manager.rb +15 -1
- data/lib/automateit/service_manager/sysv.rb +14 -6
- data/spec/integration/service_manager_sysv_spec.rb +19 -2
- data/spec/unit/edit_manager_spec.rb +5 -4
- metadata +2 -2
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGES.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.71006:
|
2
|
+
Date: Sat, 06 Oct 2007 17:55:37 -0700
|
3
|
+
Desc:
|
4
|
+
- (%) Fixed EditSession#delete to delete lines matching substrings rather than exact matches.
|
5
|
+
- Fixed EditSession#comment to not comment already commented-out lines.
|
6
|
+
- Fixed SessionManager#start and #stop so these don't check status when called with :force option.
|
7
|
+
- Improved SessionManager#restart to use :wait option.
|
8
|
+
- Improved #download to accept array or hash as arguments.
|
9
|
+
|
1
10
|
0.71003:
|
2
11
|
Date: Wed, 03 Oct 2007 01:17:32 -0700
|
3
12
|
Desc:
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ module AutomateIt
|
|
9
9
|
#
|
10
10
|
# Options:
|
11
11
|
# * :to -- Saves source to this filename or directory. Defaults to current directory.
|
12
|
-
def download(
|
12
|
+
def download(*arguments) dispatch(*arguments) end
|
13
13
|
|
14
14
|
# == DownloadManager::BaseDriver
|
15
15
|
#
|
@@ -28,8 +28,10 @@ module AutomateIt
|
|
28
28
|
end
|
29
29
|
|
30
30
|
# See DownloadManager#download
|
31
|
-
def download(
|
32
|
-
|
31
|
+
def download(*arguments)
|
32
|
+
args, opts = args_and_opts(*arguments)
|
33
|
+
source = args[0] or raise ArgumentError.new("No source specified")
|
34
|
+
target = args[1] || opts[:to] || File.basename(source)
|
33
35
|
target = File.join(target, File.basename(source)) if File.directory?(target)
|
34
36
|
log.info(PNOTE+"Downloading #{target}")
|
35
37
|
if writing?
|
@@ -217,7 +217,7 @@ class AutomateIt::EditManager::EditSession < AutomateIt::Common
|
|
217
217
|
# Delete lines matching the String or Regexp +query+
|
218
218
|
def delete(query, opts={})
|
219
219
|
query = Regexp.escape(query) if query.is_a?(String)
|
220
|
-
query = Regexp.new(
|
220
|
+
query = Regexp.new("^[^\n]*%s[^\n]*\n?" % query)
|
221
221
|
@contents.gsub!(query, "")
|
222
222
|
end
|
223
223
|
|
@@ -234,7 +234,7 @@ class AutomateIt::EditManager::EditSession < AutomateIt::Common
|
|
234
234
|
# Comment out lines matching the String or Regexp +query+.
|
235
235
|
def comment(query, opts={})
|
236
236
|
query = Regexp.escape(query) if query.is_a?(String)
|
237
|
-
query = Regexp.new("^([^\n]*%s[^\n]*)(\n*)" % query)
|
237
|
+
query = Regexp.new("^(?!#{comment_prefix})([^\n]*%s[^\n]*)(\n*)" % query)
|
238
238
|
return false unless @contents.match(query)
|
239
239
|
@contents.gsub!(query, "%s%s%s%s" % [@comment_prefix, $1, @comment_suffix, $2])
|
240
240
|
end
|
data/lib/automateit/root.rb
CHANGED
@@ -23,15 +23,29 @@ class AutomateIt::ServiceManager < AutomateIt::Plugin::Manager
|
|
23
23
|
def running?(service, opts={}) dispatch_to(:started?, service, opts) end
|
24
24
|
|
25
25
|
# Start this +service+ if it's not running.
|
26
|
+
#
|
27
|
+
# Options:
|
28
|
+
# * :wait -- Same as :wait option for #started?
|
29
|
+
# * :force -- Start service without checking if it's running.
|
26
30
|
def start(service, opts={}) dispatch(service, opts) end
|
27
31
|
|
28
32
|
# Stop this +service+ if it's running.
|
33
|
+
#
|
34
|
+
# Options:
|
35
|
+
# * :wait -- Same as :wait option for #stopped?
|
36
|
+
# * :force -- Stop service without checking if it's running.
|
29
37
|
def stop(service, opts={}) dispatch(service, opts) end
|
30
38
|
|
31
39
|
# Restart this +service+ if it's running, or start it if it's stopped.
|
40
|
+
#
|
41
|
+
# Options:
|
42
|
+
# * :wait -- Maxmimum seconds to wait for service to STOP.
|
43
|
+
# * :pause -- Maximum seconds to wait for service to START before stopping
|
44
|
+
# it. Only set this if you just started the service and then decided to
|
45
|
+
# restart it.
|
32
46
|
def restart(service, opts={}) dispatch(service, opts) end
|
33
47
|
|
34
|
-
# If +is_restart+, #restart the service, otherwise #start it.
|
48
|
+
# If +is_restart+, #restart the service, otherwise #start it.
|
35
49
|
#
|
36
50
|
# Example:
|
37
51
|
# modified = edit "/etc/myapp.conf" {#...}
|
@@ -76,6 +76,7 @@ class AutomateIt::ServiceManager::SYSV < AutomateIt::ServiceManager::BaseDriver
|
|
76
76
|
end
|
77
77
|
return result
|
78
78
|
end
|
79
|
+
protected :_started_and_stopped_helper
|
79
80
|
|
80
81
|
# See ServiceManager#started?
|
81
82
|
def started?(service, opts={})
|
@@ -89,8 +90,7 @@ class AutomateIt::ServiceManager::SYSV < AutomateIt::ServiceManager::BaseDriver
|
|
89
90
|
|
90
91
|
# See ServiceManager#start
|
91
92
|
def start(service, opts={})
|
92
|
-
|
93
|
-
if started?(service) and not opts[:force]
|
93
|
+
if not opts[:force] and started?(service, :wait => opts[:wait])
|
94
94
|
# Already started
|
95
95
|
return false
|
96
96
|
else
|
@@ -102,8 +102,7 @@ class AutomateIt::ServiceManager::SYSV < AutomateIt::ServiceManager::BaseDriver
|
|
102
102
|
|
103
103
|
# See ServiceManager#stop
|
104
104
|
def stop(service, opts={})
|
105
|
-
|
106
|
-
if stopped?(service) and not opts[:force]
|
105
|
+
if not opts[:force] and stopped?(service, :wait => opts[:wait])
|
107
106
|
# Already stopped
|
108
107
|
return false
|
109
108
|
else
|
@@ -115,8 +114,17 @@ class AutomateIt::ServiceManager::SYSV < AutomateIt::ServiceManager::BaseDriver
|
|
115
114
|
|
116
115
|
# See ServiceManager#restart
|
117
116
|
def restart(service, opts={})
|
118
|
-
|
119
|
-
|
117
|
+
if started?(service, :wait => opts[:pause])
|
118
|
+
# We're certain that service is started
|
119
|
+
stop_opts = opts.clone
|
120
|
+
stop_opts[:force] = true # Don't check again
|
121
|
+
stop(service, stop_opts)
|
122
|
+
end
|
123
|
+
|
124
|
+
# We're certain that service is stopped
|
125
|
+
start_opts = opts.clone
|
126
|
+
start_opts[:force] = true # Don't check again
|
127
|
+
return start(service, start_opts)
|
120
128
|
end
|
121
129
|
|
122
130
|
# See ServiceManager#enabled?
|
@@ -23,12 +23,12 @@ else
|
|
23
23
|
@service_name = "automateit_service_sysv_test"
|
24
24
|
@service_file = "/etc/init.d/"+@service_name
|
25
25
|
@source_file = File.join(File.dirname(__FILE__), "..", "extras", @service_name)
|
26
|
+
end
|
26
27
|
|
28
|
+
before(:each) do
|
27
29
|
FileUtils.cp(@source_file, @service_file)
|
28
30
|
FileUtils.chmod(0755, @service_file)
|
29
|
-
end
|
30
31
|
|
31
|
-
before(:each) do
|
32
32
|
@m.stop(@service_name, :quiet => true) if @m.running?(@service_name)
|
33
33
|
end
|
34
34
|
|
@@ -64,6 +64,23 @@ else
|
|
64
64
|
@m.running?(@service_name).should be_true
|
65
65
|
end
|
66
66
|
|
67
|
+
it "should wait for service to restart" do
|
68
|
+
# NOTE: Test depends on race condition because checks must pass before the service starts
|
69
|
+
|
70
|
+
timeout = 1
|
71
|
+
wait = timeout+2
|
72
|
+
@a.edit(@service_file, :backup => false) do
|
73
|
+
replace "touch $STATE", "sleep #{timeout} && touch $STATE &"
|
74
|
+
end
|
75
|
+
|
76
|
+
@m.start(@service_name, :quiet => true).should be_true
|
77
|
+
@m.started?(@service_name).should be_false # Still starting
|
78
|
+
@m.started?(@service_name, :wait => wait).should be_true
|
79
|
+
@m.restart(@service_name, :quiet => true, :wait => wait).should be_true
|
80
|
+
@m.started?(@service_name).should be_false
|
81
|
+
@m.started?(@service_name, :wait => wait).should be_true
|
82
|
+
end
|
83
|
+
|
67
84
|
if @has_enable
|
68
85
|
# It's more correct to disable the service using before/after, but the
|
69
86
|
# platform-specific scripts are ridiculously slow, so manually disabling
|
@@ -6,12 +6,12 @@ describe "AutomateIt::EditManager for strings" do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
before(:each) do
|
9
|
-
@input = "This\nis\
|
9
|
+
@input = "This\nis\na\nstring."
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should pass contents" do
|
13
13
|
@a.edit(:text => @input) do
|
14
|
-
contents.should == "This\nis\
|
14
|
+
contents.should == "This\nis\na\nstring."
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -67,9 +67,10 @@ describe "AutomateIt::EditManager for strings" do
|
|
67
67
|
|
68
68
|
it "should delete lines" do
|
69
69
|
output = @a.edit(:text => @input) do
|
70
|
-
delete "
|
70
|
+
delete "is"
|
71
71
|
end
|
72
|
-
output.should_not =~ /
|
72
|
+
output.should_not =~ /is/
|
73
|
+
output.should == "a\nstring."
|
73
74
|
end
|
74
75
|
|
75
76
|
it "should comment lines" do
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: automateit
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2007-10-
|
6
|
+
version: "0.71006"
|
7
|
+
date: 2007-10-08 00:00:00 -07:00
|
8
8
|
summary: AutomateIt is an open-source tool for automating the setup and maintenance of UNIX-like systems
|
9
9
|
require_paths:
|
10
10
|
- lib
|
metadata.gz.sig
CHANGED
Binary file
|