automateit 0.71031.1 → 0.71031.2
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 +10 -0
- data/lib/automateit/package_manager.rb +2 -0
- data/lib/automateit/package_manager/pear.rb +89 -0
- data/lib/automateit/package_manager/pecl.rb +74 -0
- data/lib/automateit/root.rb +1 -1
- data/spec/integration/package_manager_spec.rb +2 -0
- metadata +4 -2
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGES.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
0.71031.2:
|
2
|
+
Date: Wed, 31 Oct 2007 23:48:41 -0700
|
3
|
+
Desc:
|
4
|
+
- (+) Added PackageManager::PEAR and PackageManager::PECL, graciously contributed by David Brewer.
|
5
|
+
|
6
|
+
0.71031.1:
|
7
|
+
Date: Wed, 31 Oct 2007 13:15:30 -0700
|
8
|
+
Desc:
|
9
|
+
- (%) Fixed bug in EditSession methods, these weren't escaping regular expression characters in strings. Refactored some of these methods for clarity.
|
10
|
+
|
1
11
|
0.71031:
|
2
12
|
Date: Wed, 31 Oct 2007 02:58:58 -0700
|
3
13
|
Desc:
|
@@ -240,3 +240,5 @@ require 'automateit/package_manager/yum'
|
|
240
240
|
require 'automateit/package_manager/gem'
|
241
241
|
require 'automateit/package_manager/egg'
|
242
242
|
require 'automateit/package_manager/portage'
|
243
|
+
require 'automateit/package_manager/pear'
|
244
|
+
require 'automateit/package_manager/pecl'
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# == PackageManager::PEAR
|
2
|
+
#
|
3
|
+
# A PackageManager driver for PEAR (PHP Extension and Application Repository),
|
4
|
+
# manages software packages using the <tt>pear</tt> command.
|
5
|
+
#
|
6
|
+
# === Using specific channels
|
7
|
+
#
|
8
|
+
# To install a package from the default PEAR channel, just specify it's name,
|
9
|
+
# e.g. <tt>HTML_QuickForm</tt>.
|
10
|
+
#
|
11
|
+
# To install a package from another channel, you must specify the name prefixed
|
12
|
+
# with the channel's URL, e.g. <tt>pear.symfony-project.com/symfony</tt>, so
|
13
|
+
# that the channel can be automatically added as needed.
|
14
|
+
#
|
15
|
+
# *IMPORTANT*: DO NOT specify a remote channel's alias, e.g.
|
16
|
+
# <tt>symfony/symfony</tt>, because this provides no way to discover the
|
17
|
+
# channel.
|
18
|
+
class ::AutomateIt::PackageManager::PEAR < ::AutomateIt::PackageManager::BaseDriver
|
19
|
+
depends_on :programs => %w(pear)
|
20
|
+
|
21
|
+
def suitability(method, *args) # :nodoc:
|
22
|
+
# Never select as default driver
|
23
|
+
return 0
|
24
|
+
end
|
25
|
+
|
26
|
+
# Retrieve a hash containing all installed packages, indexed by package
|
27
|
+
# name. Each value is a hash containing values for :version and :state.
|
28
|
+
def get_installed_packages()
|
29
|
+
cmd = "pear list --allchannels 2>&1"
|
30
|
+
data = `#{cmd}`
|
31
|
+
installed_packages = {}
|
32
|
+
data.scan(/^([^(\s]+)\s+([^\s]+)\s+([^\s]+)$/) do |package, version, state|
|
33
|
+
next if version.upcase == 'VERSION'
|
34
|
+
installed_packages[package] = {:version => version, :state => state}
|
35
|
+
end
|
36
|
+
return installed_packages
|
37
|
+
end
|
38
|
+
protected :get_installed_packages
|
39
|
+
|
40
|
+
# See AutomateIt::PackageManager#installed?
|
41
|
+
def installed?(*packages)
|
42
|
+
return _installed_helper?(*packages) do |list, opts|
|
43
|
+
all_installed = get_installed_packages().keys.collect {|pkg| pkg.downcase}
|
44
|
+
|
45
|
+
result = []
|
46
|
+
list.each do |pkg|
|
47
|
+
pkg_without_channel = pkg.gsub(%r{^[^/]+/}, '').downcase
|
48
|
+
result.push pkg if all_installed.include?(pkg_without_channel)
|
49
|
+
end
|
50
|
+
|
51
|
+
result
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# See AutomateIt::PackageManager#not_installed?
|
56
|
+
def not_installed?(*packages)
|
57
|
+
return _not_installed_helper?(*packages)
|
58
|
+
end
|
59
|
+
|
60
|
+
# *IMPORTANT*: See documentation at the top of this file for how to correctly
|
61
|
+
# install packages from a specific channel.
|
62
|
+
#
|
63
|
+
# See AutomateIt::PackageManager#install
|
64
|
+
def install(*packages)
|
65
|
+
return _install_helper(*packages) do |list, opts|
|
66
|
+
# pear options:
|
67
|
+
# -a install all required dependencies
|
68
|
+
|
69
|
+
cmd = "(pear config-set auto_discover 1; "
|
70
|
+
cmd << "pear install -a "+list.join(" ")+" < /dev/null)"
|
71
|
+
cmd << " > /dev/null" if opts[:quiet]
|
72
|
+
cmd << " 2>&1"
|
73
|
+
|
74
|
+
interpreter.sh(cmd)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# See AutomateIt::PackageManager#uninstall
|
79
|
+
def uninstall(*packages)
|
80
|
+
return _uninstall_helper(*packages) do |list, opts|
|
81
|
+
|
82
|
+
cmd = "pear uninstall "+list.join(" ")+" < /dev/null"
|
83
|
+
cmd << " > /dev/null" if opts[:quiet]
|
84
|
+
cmd << " 2>&1"
|
85
|
+
|
86
|
+
interpreter.sh(cmd)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# == PackageManager::PECL
|
2
|
+
#
|
3
|
+
# A PackageManager driver for PECL (PHP Extension Community Library), manages
|
4
|
+
# software packages using the <tt>pecl</tt> command.
|
5
|
+
class ::AutomateIt::PackageManager::PECL < ::AutomateIt::PackageManager::BaseDriver
|
6
|
+
depends_on :programs => %w(pecl)
|
7
|
+
|
8
|
+
def suitability(method, *args) # :nodoc:
|
9
|
+
# Never select as default driver
|
10
|
+
return 0
|
11
|
+
end
|
12
|
+
|
13
|
+
# Retrieve a hash containing all installed packages, indexed by package
|
14
|
+
# name. Each value is a hash containing values for :channel, :version,
|
15
|
+
# and :state.
|
16
|
+
def get_installed_packages()
|
17
|
+
cmd = "pecl list -a 2>&1"
|
18
|
+
data = `#{cmd}`
|
19
|
+
installed_packages = {}
|
20
|
+
data.scan(/^([^(\s]+)\s+([^\s]+)\s+([^\s]+)$/) do |package, version, state|
|
21
|
+
next if version.upcase == 'VERSION'
|
22
|
+
installed_packages[package] = {:version => version, :state => state}
|
23
|
+
end
|
24
|
+
return installed_packages
|
25
|
+
end
|
26
|
+
protected :get_installed_packages
|
27
|
+
|
28
|
+
# See AutomateIt::PackageManager#installed?
|
29
|
+
def installed?(*packages)
|
30
|
+
return _installed_helper?(*packages) do |list, opts|
|
31
|
+
all_installed = get_installed_packages().keys.collect {|pkg| pkg.downcase}
|
32
|
+
|
33
|
+
result = []
|
34
|
+
list.each do |pkg|
|
35
|
+
pkg_without_channel = pkg.gsub(%r{^[^/]+/}, '').downcase
|
36
|
+
result.push pkg if all_installed.include?(pkg_without_channel)
|
37
|
+
end
|
38
|
+
|
39
|
+
result
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# See AutomateIt::PackageManager#not_installed?
|
45
|
+
def not_installed?(*packages)
|
46
|
+
return _not_installed_helper?(*packages)
|
47
|
+
end
|
48
|
+
|
49
|
+
# See AutomateIt::PackageManager#install
|
50
|
+
def install(*packages)
|
51
|
+
return _install_helper(*packages) do |list, opts|
|
52
|
+
# pecl options:
|
53
|
+
# -a install all required dependencies
|
54
|
+
|
55
|
+
cmd = "pecl install -a "+list.join(" ")+" < /dev/null"
|
56
|
+
cmd << " > /dev/null" if opts[:quiet]
|
57
|
+
cmd << " 2>&1"
|
58
|
+
|
59
|
+
interpreter.sh(cmd)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# See AutomateIt::PackageManager#uninstall
|
64
|
+
def uninstall(*packages)
|
65
|
+
return _uninstall_helper(*packages) do |list, opts|
|
66
|
+
|
67
|
+
cmd = "pecl uninstall "+list.join(" ")+" < /dev/null"
|
68
|
+
cmd << " > /dev/null" if opts[:quiet]
|
69
|
+
cmd << " 2>&1"
|
70
|
+
|
71
|
+
interpreter.sh(cmd)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/automateit/root.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# See AutomateIt::Interpreter for usage information.
|
2
2
|
module AutomateIt # :nodoc:
|
3
3
|
# AutomateIt version
|
4
|
-
VERSION=Gem::Version.new("0.71031.
|
4
|
+
VERSION=Gem::Version.new("0.71031.2")
|
5
5
|
|
6
6
|
# Instantiates a new Interpreter. See documentation for
|
7
7
|
# Interpreter#setup.
|
@@ -77,6 +77,8 @@ else
|
|
77
77
|
:portage => "arc", # Obscure package for extracting ARC files from the 80's
|
78
78
|
:gem => "s33r", # Alpha-grade package its author deprecated in favor of another
|
79
79
|
:egg => "_sre.py", # Slower reimplementation of ancient Python Regexps
|
80
|
+
:pear => "File_DICOM", # Obscure package for DICOM X-rays, abandoned in 2003
|
81
|
+
:pecl => "ecasound", # Obscure package for Ecasound libs, abandoned in 2003
|
80
82
|
### :cpan => "Acme::please", # Insane gimmick port of intercal's please statements
|
81
83
|
}
|
82
84
|
|
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.71031.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.71031.2
|
7
|
+
date: 2007-11-01 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
|
@@ -107,7 +107,9 @@ files:
|
|
107
107
|
- lib/automateit/plugin/base.rb
|
108
108
|
- lib/automateit/plugin/driver.rb
|
109
109
|
- lib/automateit/plugin/manager.rb
|
110
|
+
- lib/automateit/package_manager/pear.rb
|
110
111
|
- lib/automateit/package_manager/apt.rb
|
112
|
+
- lib/automateit/package_manager/pecl.rb
|
111
113
|
- lib/automateit/package_manager/gem.rb
|
112
114
|
- lib/automateit/package_manager/egg.rb
|
113
115
|
- lib/automateit/package_manager/yum.rb
|
metadata.gz.sig
CHANGED
Binary file
|