automateit 0.71103 → 0.71104
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.tar.gz.sig +0 -0
- data/CHANGES.txt +6 -0
- data/Hoe.rake +1 -1
- data/Rakefile +1 -3
- data/TODO.txt +22 -19
- data/{env.sh → add2path.sh} +0 -0
- data/lib/automateit/account_manager/nscd.rb +2 -1
- data/lib/automateit/address_manager/bsd.rb +1 -1
- data/lib/automateit/address_manager/freebsd.rb +2 -2
- data/lib/automateit/address_manager/openbsd.rb +2 -2
- data/lib/automateit/address_manager/sunos.rb +3 -2
- data/lib/automateit/package_manager/gem.rb +1 -10
- data/lib/automateit/platform_manager/windows.rb +8 -1
- data/lib/automateit/plugin/driver.rb +45 -32
- data/lib/automateit/root.rb +1 -1
- data/misc/setup_ruby-dbi.rb +24 -0
- data/spec/integration/address_manager_spec.rb +1 -1
- metadata +4 -3
- metadata.gz.sig +1 -1
data.tar.gz.sig
CHANGED
|
Binary file
|
data/CHANGES.txt
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
0.71104:
|
|
2
|
+
Date: Sun, 04 Nov 2007 21:01:10 -0800
|
|
3
|
+
Desc:
|
|
4
|
+
- (%) Fixed bugs in startup sequence when run on Microsoft Windows. Added support for Vista.
|
|
5
|
+
- (%) Fixed bugs encountered on Windows in Plugin::Driver. Dependency checks are now done in specific order and stop as soon as a missing dependency is detected.
|
|
6
|
+
|
|
1
7
|
0.71103:
|
|
2
8
|
Date: Sat, 03 Nov 2007 01:26:13 -0700
|
|
3
9
|
Desc:
|
data/Hoe.rake
CHANGED
|
@@ -6,7 +6,7 @@ require 'automateit'
|
|
|
6
6
|
|
|
7
7
|
HoeInclude = {
|
|
8
8
|
:executables => Dir['bin/*'].reject{|t|t.match(/~/)}.map{|t|File.basename(t)},
|
|
9
|
-
:files => (%w(
|
|
9
|
+
:files => (%w(add2path.sh gpl.txt CHANGES.txt Hoe.rake Manifest.txt Rakefile README.txt TESTING.txt TODO.txt TUTORIAL.txt) + FileList["{bin,examples,docs,lib,misc,spec}/**/*"]).to_a.reject{|t| File.directory?(t)},
|
|
10
10
|
:test_files => FileList["{spec}/**/*"].to_a,
|
|
11
11
|
}
|
|
12
12
|
|
data/Rakefile
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
require 'spec/rake/spectask'
|
|
2
|
-
require 'rake/gempackagetask'
|
|
3
|
-
|
|
4
1
|
task :default => :spec
|
|
5
2
|
|
|
6
3
|
#---[ Wrappers ]--------------------------------------------------------
|
|
@@ -27,6 +24,7 @@ end
|
|
|
27
24
|
|
|
28
25
|
# Run rspec on the +files+
|
|
29
26
|
def specify(*files)
|
|
27
|
+
require 'spec/rake/spectask'
|
|
30
28
|
Spec::Rake::SpecTask.new(:spec_internal) do |t|
|
|
31
29
|
t.rcov = @rcov
|
|
32
30
|
t.rcov_opts = ['--text-summary', '--include', 'lib', '--exclude', 'spec,.irbrc']
|
data/TODO.txt
CHANGED
|
@@ -2,31 +2,34 @@ KEY: Important? Urgent? Easy? 1=yes, 0=no
|
|
|
2
2
|
|
|
3
3
|
#===[ App ]=============================================================
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
#---[ Quality issues ]--------------------------------------------------
|
|
6
|
+
111 ServiceManager -- Create new #stop_and_start, and #restart as #tell wrapper
|
|
7
|
+
111 ServiceManager -- Write tests for start_and_enable and such
|
|
8
8
|
111 PackageManager -- Improve PEAR spec by having it check files with and without channel URL
|
|
9
|
-
111
|
|
9
|
+
111 AccountManager::NSCD -- Uses "ps -ef", needs abstraction
|
|
10
|
+
|
|
11
|
+
#---[ Development ]-----------------------------------------------------
|
|
10
12
|
111 Shell -- Write #su(user, *command) as a wrapper around #sh
|
|
11
13
|
101 Shell -- Expand glob patterns, e.g. chown_R(500, 500, "*")
|
|
12
|
-
|
|
13
14
|
100 Edit -- Display summary of edits, return with :details as [rv, list]
|
|
14
|
-
100 Shell --
|
|
15
|
-
|
|
15
|
+
100 Shell -- Consistently return single items or arrays, alter specs to match
|
|
16
|
+
101 PackageManager::CPAN - Implement
|
|
16
17
|
|
|
17
|
-
001 CPAN -- Write driver for PackageManager::CPAN
|
|
18
|
-
001 FreeBSD -- Write driver for PackageManager::FreeBSD_Ports (or generic ::Ports?) and FreeBSD_Pkg
|
|
19
|
-
000 Darwin -- Write drivers, e.g. PackageManager for Fink and MacPorts (or generic ::Ports?)
|
|
20
18
|
000 Shell#chperm -- With symbolic mode, wrap `chmod -v` as temporary workaround?
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
000
|
|
25
|
-
000
|
|
26
|
-
000
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
001 PackageManager::FreeBSD_Ports - Implmen(or generic ::Ports?) and FreeBSD_Pkg
|
|
20
|
+
000 Darwin -- Write drivers, e.g. PackageManager for Fink and MacPorts (or generic ::Ports?)
|
|
21
|
+
000 PackageManager -- Upgrade or install specific versions
|
|
22
|
+
000 PackageManager::Blastwave -- Implement
|
|
23
|
+
000 PackageManager::SunOS_Pkg -- Implement
|
|
24
|
+
000 ServiceManager::SMF -- Implement
|
|
25
|
+
000 Shell -- Incorporate which.cmd so #which can work on Windows
|
|
26
|
+
|
|
27
|
+
000 Interpreter#invoke and HelpfulERB -- Extract error context code into class
|
|
28
|
+
000 Interpeter -- Implement #clear, #dirty? #track_changes
|
|
29
|
+
000 DatabaseManager -- Design
|
|
30
|
+
000 SourceManager -- Design
|
|
31
|
+
000 ScheduleManager -- Design
|
|
32
|
+
000 Driver -- How to determine if a manager or driver method is available? Manager#available?, Manager#available and Driver#suitable? only say if it should be a default.
|
|
30
33
|
|
|
31
34
|
#===[ Web ]=============================================================
|
|
32
35
|
100 Index: Call for pilot users, driver authors
|
data/{env.sh → add2path.sh}
RENAMED
|
File without changes
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
# Service Cache Daemon, found on Unix-like systems.
|
|
5
5
|
class ::AutomateIt::AccountManager::NSCD < ::AutomateIt::AccountManager::BaseDriver
|
|
6
6
|
depends_on :programs => %w(nscd ps),
|
|
7
|
-
|
|
7
|
+
# FIXME AccountManager.nscd - "ps -ef" isn't portable, may need to be "ps aux" or such
|
|
8
|
+
:callbacks => lambda{`ps -ef`.match(%r{/usr/sbin/nscd$})}
|
|
8
9
|
|
|
9
10
|
def suitability(method, *args) # :nodoc:
|
|
10
11
|
# Level must be higher than Portable
|
|
@@ -8,7 +8,7 @@ class AutomateIt::AddressManager::BSD < AutomateIt::AddressManager::BaseDriver
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
depends_on :programs => %w(ifconfig uname),
|
|
11
|
-
:callbacks => lambda{`uname -s`.match(/openbsd|freebsd|sunos/i)}
|
|
11
|
+
:callbacks => lambda{`uname -s 2>&1`.match(/openbsd|freebsd|sunos/i)}
|
|
12
12
|
|
|
13
13
|
def suitability(method, *args) # :nodoc:
|
|
14
14
|
available? ? 2 : 0
|
|
@@ -8,10 +8,10 @@ class AutomateIt::AddressManager::FreeBSD < AutomateIt::AddressManager::BaseDriv
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
depends_on :programs => %w(ifconfig uname),
|
|
11
|
-
:callbacks => lambda{`uname -s`.match(/freebsd/i)}
|
|
11
|
+
:callbacks => lambda{`uname -s 2>&1`.match(/freebsd/i)}
|
|
12
12
|
|
|
13
13
|
def suitability(method, *args) # :nodoc:
|
|
14
|
-
# Must be higher than ::BSD
|
|
14
|
+
# Must be higher than AddressManager::BSD
|
|
15
15
|
available? ? 3 : 0
|
|
16
16
|
end
|
|
17
17
|
|
|
@@ -8,10 +8,10 @@ class AutomateIt::AddressManager::OpenBSD < AutomateIt::AddressManager::BaseDriv
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
depends_on :programs => %w(ifconfig uname),
|
|
11
|
-
:callbacks => lambda{`uname -s`.match(/openbsd/i)}
|
|
11
|
+
:callbacks => lambda{`uname -s 2>&1`.match(/openbsd/i)}
|
|
12
12
|
|
|
13
13
|
def suitability(method, *args) # :nodoc:
|
|
14
|
-
# Must be higher than ::BSD
|
|
14
|
+
# Must be higher than AddressManager::BSD
|
|
15
15
|
available? ? 3 : 0
|
|
16
16
|
end
|
|
17
17
|
|
|
@@ -8,10 +8,11 @@ class AutomateIt::AddressManager::SunOS < AutomateIt::AddressManager::BaseDriver
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
depends_on :programs => %w(ifconfig uname),
|
|
11
|
-
:callbacks => lambda{`uname -s`.match(/sunos/i)}
|
|
11
|
+
:callbacks => lambda{`uname -s 2>&1`.match(/sunos/i)}
|
|
12
12
|
|
|
13
13
|
def suitability(method, *args) # :nodoc:
|
|
14
|
-
|
|
14
|
+
# Must be higher than AddressManager::BSD
|
|
15
|
+
available? ? 3 : 0
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
# See AddressManager#add
|
|
@@ -5,16 +5,7 @@
|
|
|
5
5
|
class AutomateIt::PackageManager::Gem < AutomateIt::PackageManager::BaseDriver
|
|
6
6
|
depends_on \
|
|
7
7
|
:programs => %w(gem),
|
|
8
|
-
:
|
|
9
|
-
# TODO PackageManager::Gem -- Misleading #depends_on makes entire driver unavailable, although only #install requires PTY.
|
|
10
|
-
begin
|
|
11
|
-
require 'expect'
|
|
12
|
-
require 'pty'
|
|
13
|
-
return true
|
|
14
|
-
rescue LoadError
|
|
15
|
-
return false
|
|
16
|
-
end
|
|
17
|
-
}]
|
|
8
|
+
:libraries => %w(expect pty)
|
|
18
9
|
|
|
19
10
|
def suitability(method, *args) # :nodoc:
|
|
20
11
|
# Never select GEM as the default driver
|
|
@@ -16,8 +16,15 @@ class AutomateIt::PlatformManager::Windows < AutomateIt::PlatformManager::Struct
|
|
|
16
16
|
@struct[:os] = "windows"
|
|
17
17
|
@struct[:arch] = ENV["PROCESSOR_ARCHITECTURE"]
|
|
18
18
|
@struct[:distro] = "microsoft"
|
|
19
|
+
|
|
19
20
|
# VER values: http://www.ss64.com/nt/ver.html
|
|
20
|
-
|
|
21
|
+
ver = `ver`.strip
|
|
22
|
+
if match = ver.match(/Windows (\w+)/)
|
|
23
|
+
@struct[:release] = match[1].downcase
|
|
24
|
+
elsif match = ver.match(/Windows \[Version 6\.0\./)
|
|
25
|
+
@struct[:release] = "vista"
|
|
26
|
+
end
|
|
27
|
+
|
|
21
28
|
@struct
|
|
22
29
|
end
|
|
23
30
|
private :_prepare
|
|
@@ -157,42 +157,55 @@ module AutomateIt
|
|
|
157
157
|
elsif is_available.nil?
|
|
158
158
|
all_present = true
|
|
159
159
|
missing = {}
|
|
160
|
-
|
|
161
|
-
#
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
160
|
+
|
|
161
|
+
# Check callbacks last
|
|
162
|
+
kinds = opts.keys
|
|
163
|
+
callbacks = kinds.delete(:callbacks)
|
|
164
|
+
kinds << callbacks if callbacks
|
|
165
|
+
|
|
166
|
+
begin
|
|
167
|
+
for kind in kinds
|
|
168
|
+
next unless opts[kind]
|
|
169
|
+
for item in [opts[kind]].flatten
|
|
170
|
+
present = \
|
|
171
|
+
case kind
|
|
172
|
+
when :files
|
|
173
|
+
File.exists?(item)
|
|
174
|
+
when :directories
|
|
175
|
+
File.directory?(item)
|
|
176
|
+
when :programs
|
|
177
|
+
# XXX Find less awkward way to check if a program exists. Can't use +shell_manager.which+ because that will use +dispatch+ and go into an infinite loop checking +available?+. The +which+ command isn't available on all platforms, so that failure must be handled as well.
|
|
178
|
+
begin
|
|
179
|
+
interpreter.shell_manager[:which].which!(item)
|
|
180
|
+
true
|
|
181
|
+
rescue ArgumentError, NotImplementedError, NoMethodError
|
|
182
|
+
false
|
|
183
|
+
end
|
|
184
|
+
when :requires, :libraries
|
|
185
|
+
begin
|
|
186
|
+
require item
|
|
187
|
+
true
|
|
188
|
+
rescue LoadError
|
|
189
|
+
false
|
|
190
|
+
end
|
|
191
|
+
when :callbacks
|
|
192
|
+
item.call() ? true : false
|
|
193
|
+
else
|
|
194
|
+
raise TypeError.new("Unknown kind: #{kind}")
|
|
184
195
|
end
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
196
|
+
unless present
|
|
197
|
+
all_present = false
|
|
198
|
+
missing[kind] ||= []
|
|
199
|
+
missing[kind] << item
|
|
200
|
+
|
|
201
|
+
# Do not continue scanning if dependency is missed
|
|
202
|
+
raise EOFError.new("break")
|
|
189
203
|
end
|
|
190
|
-
unless present
|
|
191
|
-
all_present = false
|
|
192
|
-
missing[kind] ||= []
|
|
193
|
-
missing[kind] << item
|
|
194
204
|
end
|
|
195
205
|
end
|
|
206
|
+
rescue EOFError => e
|
|
207
|
+
# Ignore expected "break" warning
|
|
208
|
+
raise e unless e.message == "break"
|
|
196
209
|
end
|
|
197
210
|
self.class._missing_dependencies = missing
|
|
198
211
|
self.class._is_available = all_present
|
data/lib/automateit/root.rb
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env automateit
|
|
2
|
+
|
|
3
|
+
# Install ruby-dbi package and the basic drivers
|
|
4
|
+
|
|
5
|
+
package_manager.install <<-HERE, :with => :gem
|
|
6
|
+
postgres-pr
|
|
7
|
+
sqlite3-ruby
|
|
8
|
+
### mysql # FIXME Fails because of compile dependencies
|
|
9
|
+
HERE
|
|
10
|
+
|
|
11
|
+
mktempdircd do
|
|
12
|
+
download "http://rubyforge.org/frs/download.php/12368/dbi-0.1.1.tar.gz"
|
|
13
|
+
sh "tar xvfz *.tar.gz"
|
|
14
|
+
extracted_to = Dir.entries(".").select{|t| t=~/\w+/ && File::directory?(t)}.first
|
|
15
|
+
cd extracted_to do
|
|
16
|
+
# FIXME mysql and sqlite fail due to compile dependencies
|
|
17
|
+
### ruby setup.rb config --with=dbi,dbd_pg,dbd_mysql,dbd_sqlite && \
|
|
18
|
+
sh <<-HERE
|
|
19
|
+
ruby setup.rb config --with=dbi,dbd_pg && \
|
|
20
|
+
ruby setup.rb setup && \
|
|
21
|
+
ruby setup.rb install
|
|
22
|
+
HERE
|
|
23
|
+
end
|
|
24
|
+
end
|
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-11-
|
|
6
|
+
version: "0.71104"
|
|
7
|
+
date: 2007-11-04 00:00:00 -07:00
|
|
8
8
|
summary: AutomateIt is an open source tool for automating the setup and maintenance of servers, applications and their dependencies.
|
|
9
9
|
require_paths:
|
|
10
10
|
- lib
|
|
@@ -51,7 +51,7 @@ post_install_message:
|
|
|
51
51
|
authors:
|
|
52
52
|
- Igal Koshevoy
|
|
53
53
|
files:
|
|
54
|
-
-
|
|
54
|
+
- add2path.sh
|
|
55
55
|
- gpl.txt
|
|
56
56
|
- CHANGES.txt
|
|
57
57
|
- Hoe.rake
|
|
@@ -160,6 +160,7 @@ files:
|
|
|
160
160
|
- misc/setup_egg.rb
|
|
161
161
|
- misc/which.cmd
|
|
162
162
|
- misc/setup_gem_dependencies.sh
|
|
163
|
+
- misc/setup_ruby-dbi.rb
|
|
163
164
|
- spec/spec_helper.rb
|
|
164
165
|
- spec/breaker.rb
|
|
165
166
|
- spec/unit/plugins_spec.rb
|
metadata.gz.sig
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
GL4�J�u�|G9Cj�\��Z(�皛L��
|