@@ -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
0 commit comments