Class: Chef::Provider::Package::EasyInstall
Constant Summary
Mixin::ShellOut::DEPRECATED_OPTIONS
Instance Attribute Summary
#action, #current_resource, #new_resource, #run_context
Instance Method Summary
collapse
#run_command_compatible_options, #shell_out, #shell_out!
#action_install, #action_purge, #action_reconfig, #action_remove, #action_upgrade, #define_resource_requirements, #expand_options, #get_preseed_file, #initialize, #preseed_package, #preseed_resource, #reconfig_package, #removing_package?, #target_version_already_installed?, #whyrun_supported?
#chdir_or_tmpdir, #handle_command_failures, #output_of_command, #run_command, #run_command_with_systems_locale
#popen4
#popen4
#action_nothing, #cleanup_after_converge, #cookbook_name, #define_resource_requirements, #events, #initialize, #node, #process_resource_requirements, #requirements, #resource_collection, #run_action, #set_updated_status, #whyrun_mode?, #whyrun_supported?
#method_missing
#convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #snake_case_basename
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Chef::DSL::Recipe
Instance Method Details
#candidate_version ⇒ Object
108
109
110
111
112
113
114
115
|
# File 'lib/chef/provider/package/easy_install.rb', line 108
def candidate_version
return @candidate_version if @candidate_version
result = shell_out!("#{easy_install_binary_path} -n #{@new_resource.package_name}", :returns=>[0,1])
@candidate_version = result.stdout[/(.*)Best match: (.*) (.*)$/, 3]
@candidate_version
end
|
#easy_install_binary_path ⇒ Object
54
55
56
57
|
# File 'lib/chef/provider/package/easy_install.rb', line 54
def easy_install_binary_path
path = @new_resource.easy_install_binary
path ? path : 'easy_install'
end
|
#install_check(name) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/chef/provider/package/easy_install.rb', line 32
def install_check(name)
check = false
begin
output = shell_out!("#{python_binary_path} -c \"import #{name}\"", :returns=>[0,1]).stderr
if output.include? "ImportError"
output = shell_out!("#{python_binary_path} -c \"import sys; print sys.path\"", :returns=>[0,1]).stdout
if output.downcase.include? "#{name.downcase}"
check = true
end
else
check = true
end
rescue
end
check
end
|
#install_package(name, version) ⇒ Object
117
118
119
|
# File 'lib/chef/provider/package/easy_install.rb', line 117
def install_package(name, version)
run_command(:command => "#{easy_install_binary_path}#{expand_options(@new_resource.options)} \"#{name}==#{version}\"")
end
|
#load_current_resource ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/chef/provider/package/easy_install.rb', line 69
def load_current_resource
@current_resource = Chef::Resource::Package.new(@new_resource.name)
@current_resource.package_name(@new_resource.package_name)
@current_resource.version(nil)
package_version = nil
if install_check(module_name)
begin
output = shell_out!("#{python_binary_path} -c \"import #{module_name}; print #{module_name}.__version__\"").stdout
package_version = output.strip
rescue
output = shell_out!("#{python_binary_path} -c \"import sys; print sys.path\"", :returns=>[0,1]).stdout
output_array = output.gsub(/[\[\]]/,'').split(/\s*,\s*/)
package_path = ""
output_array.each do |entry|
if entry.downcase.include?(@new_resource.package_name)
package_path = entry
end
end
package_path[/\S\S(.*)\/(.*)-(.*)-py(.*).egg\S/]
package_version = $3
end
end
if package_version == @new_resource.version
Chef::Log.debug("#{@new_resource} at version #{@new_resource.version}")
@current_resource.version(@new_resource.version)
else
Chef::Log.debug("#{@new_resource} at version #{package_version}")
@current_resource.version(package_version)
end
@current_resource
end
|
#module_name ⇒ Object
64
65
66
67
|
# File 'lib/chef/provider/package/easy_install.rb', line 64
def module_name
m = @new_resource.module_name
m ? m : @new_resource.name
end
|
#purge_package(name, version) ⇒ Object
129
130
131
|
# File 'lib/chef/provider/package/easy_install.rb', line 129
def purge_package(name, version)
remove_package(name, version)
end
|
#python_binary_path ⇒ Object
59
60
61
62
|
# File 'lib/chef/provider/package/easy_install.rb', line 59
def python_binary_path
path = @new_resource.python_binary
path ? path : 'python'
end
|
#remove_package(name, version) ⇒ Object
125
126
127
|
# File 'lib/chef/provider/package/easy_install.rb', line 125
def remove_package(name, version)
run_command(:command => "#{easy_install_binary_path }#{expand_options(@new_resource.options)} -m #{name}")
end
|
#upgrade_package(name, version) ⇒ Object
121
122
123
|
# File 'lib/chef/provider/package/easy_install.rb', line 121
def upgrade_package(name, version)
install_package(name, version)
end
|