Skip to content

Commit 153da9f

Browse files
committed
initial go at easy_install
1 parent 1d3cfc2 commit 153da9f

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

chef/lib/chef/provider/package/easy_install.rb

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,67 @@ class Provider
2525
class Package
2626
class EasyInstall < Chef::Provider::Package
2727

28+
def install_check(name, version)
29+
command = "python -c \"import sys; print sys.path\""
30+
check = false
31+
if version
32+
package = "#{name}-#{version}"
33+
else
34+
package = "#{name}"
35+
end
36+
status = popen4(command) do |pid, stdin, stdout, stderr|
37+
stdout.each do |line|
38+
if line.include? package
39+
check = true
40+
end
41+
end
42+
end
43+
check
44+
end
2845

46+
def easy_install_binary_path
47+
path = @new_resource.easy_install_binary
48+
path ? path : 'easy_install'
49+
end
50+
51+
def load_current_resource
52+
@current_resource = Chef::Resource::Package.new(@new_resource.name)
53+
@current_resource.package_name(@new_resource.package_name)
54+
@current_resource.version(nil)
55+
56+
if install_check(@new_resource.package_name, @new_resource.version)
57+
Chef::Log.debug("#{@new_resource.package_name} at version #{@new_resource.version}")
58+
@current_resource.version(@new_resource.version)
59+
end
60+
61+
@current_resource
62+
end
63+
64+
def candidate_version
65+
return @candidate_version if @candidate_version
66+
@canidate_version = @new_resource.version
67+
@candidate_version
68+
end
69+
70+
def install_package(name, version)
71+
if version
72+
run_command(:command => "#{easy_install_binary_path} \"#{name}==#{version}\"")
73+
else
74+
run_command(:command => "#{easy_install_binary_path} #{name}")
75+
end
76+
end
77+
78+
def upgrade_package(name, version)
79+
install_package(name)
80+
end
81+
82+
def remove_package(name, version)
83+
run_command(:command => "#{easy_install_binary_path} -m #{name}")
84+
end
85+
86+
def purge_package(name, version)
87+
remove_package(name, version)
88+
end
2989

3090

3191
end

chef/lib/chef/resource/easy_install_package.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ def initialize(name, collection=nil, node=nil)
2828
@provider = Chef::Provider::Package::EasyInstall
2929
end
3030

31+
# Sets a custom easy_install_binary to run for easy_install commands.
32+
def easy_install_binary(arg=nil)
33+
set_or_return(
34+
:easy_install_binary,
35+
arg,
36+
:kind_of => [ String ]
37+
)
38+
end
39+
3140
end
3241
end
3342
end

0 commit comments

Comments
 (0)