@@ -32,56 +32,56 @@ def whyrun_supported?
32
32
33
33
action :install do
34
34
# If we specified a version, and it's not the current version, move to the specified version
35
- if @ new_resource. version != nil && @ new_resource. version != @ current_resource. version
36
- install_version = @ new_resource. version
35
+ if new_resource . version != nil && new_resource . version != current_resource . version
36
+ install_version = new_resource . version
37
37
# If it's not installed at all, install it
38
- elsif @ current_resource. version == nil
38
+ elsif current_resource . version == nil
39
39
install_version = candidate_version
40
40
end
41
41
42
42
if install_version
43
- description = "install package #{ @ new_resource} version #{ install_version } "
43
+ description = "install package #{ new_resource } version #{ install_version } "
44
44
converge_by ( description ) do
45
- Chef ::Log . info ( "Installing #{ @ new_resource} version #{ install_version } " )
45
+ Chef ::Log . info ( "Installing #{ new_resource } version #{ install_version } " )
46
46
status = install_package ( install_version )
47
47
if status
48
- @ new_resource. updated_by_last_action ( true )
48
+ new_resource . updated_by_last_action ( true )
49
49
end
50
50
end
51
51
end
52
52
end
53
53
54
54
action :upgrade do
55
- if @ current_resource. version != candidate_version
56
- orig_version = @ current_resource. version || "uninstalled"
57
- description = "upgrade #{ @ current_resource} version from #{ @ current_resource. version } to #{ candidate_version } "
55
+ if current_resource . version != candidate_version
56
+ orig_version = current_resource . version || "uninstalled"
57
+ description = "upgrade #{ current_resource } version from #{ current_resource . version } to #{ candidate_version } "
58
58
converge_by ( description ) do
59
- Chef ::Log . info ( "Upgrading #{ @ new_resource} version from #{ orig_version } to #{ candidate_version } " )
59
+ Chef ::Log . info ( "Upgrading #{ new_resource } version from #{ orig_version } to #{ candidate_version } " )
60
60
status = upgrade_package ( candidate_version )
61
61
if status
62
- @ new_resource. updated_by_last_action ( true )
62
+ new_resource . updated_by_last_action ( true )
63
63
end
64
64
end
65
65
end
66
66
end
67
67
68
68
action :remove do
69
69
if removing_package?
70
- description = "remove package #{ @ new_resource} "
70
+ description = "remove package #{ new_resource } "
71
71
converge_by ( description ) do
72
- Chef ::Log . info ( "Removing #{ @ new_resource} " )
73
- remove_package ( @ new_resource. version )
74
- @ new_resource. updated_by_last_action ( true )
72
+ Chef ::Log . info ( "Removing #{ new_resource } " )
73
+ remove_package ( new_resource . version )
74
+ new_resource . updated_by_last_action ( true )
75
75
end
76
76
end
77
77
end
78
78
79
79
def removing_package?
80
- if @ current_resource. version . nil?
80
+ if current_resource . version . nil?
81
81
false # nothing to remove
82
- elsif @ new_resource. version . nil?
82
+ elsif new_resource . version . nil?
83
83
true # remove any version of a package
84
- elsif @ new_resource. version == @ current_resource. version
84
+ elsif new_resource . version == current_resource . version
85
85
true # remove the version we have
86
86
else
87
87
false # we don't have the version we want to remove
@@ -93,8 +93,8 @@ def removing_package?
93
93
# so refactoring into core Chef should be easy
94
94
95
95
def load_current_resource
96
- @current_resource = Chef ::Resource ::PythonPip . new ( @ new_resource. name )
97
- @current_resource . package_name ( @ new_resource. package_name )
96
+ @current_resource = Chef ::Resource ::PythonPip . new ( new_resource . name )
97
+ @current_resource . package_name ( new_resource . package_name )
98
98
@current_resource . version ( nil )
99
99
100
100
unless current_installed_version . nil?
@@ -108,16 +108,14 @@ def current_installed_version
108
108
@current_installed_version ||= begin
109
109
delimeter = /==/
110
110
111
- version_check_cmd = "#{ which_pip ( @ new_resource) } freeze | grep -i '^#{ @ new_resource. package_name } =='"
111
+ version_check_cmd = "#{ which_pip ( new_resource ) } freeze | grep -i '^#{ new_resource . package_name } =='"
112
112
# incase you upgrade pip with pip!
113
- if @ new_resource. package_name . eql? ( 'pip' )
113
+ if new_resource . package_name . eql? ( 'pip' )
114
114
delimeter = /\s /
115
115
version_check_cmd = "pip --version"
116
116
end
117
- p = shell_out! ( version_check_cmd )
118
- p . stdout . split ( delimeter ) [ 1 ] . strip
119
- rescue Chef ::Exceptions ::ShellCommandFailed
120
- rescue Mixlib ::ShellOut ::ShellCommandFailed
117
+ result = shell_out ( version_check_cmd )
118
+ ( result . exitstatus == 0 ) ? result . stdout . split ( delimeter ) [ 1 ] . strip : nil
121
119
end
122
120
end
123
121
@@ -126,14 +124,14 @@ def candidate_version
126
124
# `pip search` doesn't return versions yet
127
125
# `pip list` may be coming soon:
128
126
# https://bitbucket.org/ianb/pip/issue/197/option-to-show-what-version-would-be
129
- @ new_resource. version ||'latest'
127
+ new_resource . version ||'latest'
130
128
end
131
129
end
132
130
133
131
def install_package ( version )
134
132
# if a version isn't specified (latest), is a source archive (ex. http://my.package.repo/SomePackage-1.0.4.zip),
135
133
# or from a VCS (ex. git+https://git.repo/some_pkg.git) then do not append a version as this will break the source link
136
- if version == 'latest' || @ new_resource. name . downcase . start_with? ( 'http:' , 'https:' ) || [ 'git' , 'hg' , 'svn' ] . include? ( @ new_resource. name . downcase . split ( '+' ) [ 0 ] )
134
+ if version == 'latest' || new_resource . name . downcase . start_with? ( 'http:' , 'https:' ) || [ 'git' , 'hg' , 'svn' ] . include? ( new_resource . name . downcase . split ( '+' ) [ 0 ] )
137
135
version = ''
138
136
else
139
137
version = "==#{ version } "
@@ -142,28 +140,28 @@ def install_package(version)
142
140
end
143
141
144
142
def upgrade_package ( version )
145
- @ new_resource. options "#{ @ new_resource. options } --upgrade"
143
+ new_resource . options "#{ new_resource . options } --upgrade"
146
144
install_package ( version )
147
145
end
148
146
149
147
def remove_package ( version )
150
- @ new_resource. options "#{ @ new_resource. options } --yes"
148
+ new_resource . options "#{ new_resource . options } --yes"
151
149
pip_cmd ( 'uninstall' )
152
150
end
153
151
154
152
def pip_cmd ( subcommand , version = '' )
155
- options = { :timeout => @ new_resource. timeout , :user => @ new_resource. user , :group => @ new_resource. group }
156
- options [ :environment ] = { 'HOME' => ::File . expand_path ( "~#{ @ new_resource. user } " ) } if @ new_resource. user
157
- shell_out! ( "#{ which_pip ( @ new_resource) } #{ subcommand } #{ @ new_resource. options } #{ @ new_resource. name } #{ version } " , options )
153
+ options = { :timeout => new_resource . timeout , :user => new_resource . user , :group => new_resource . group }
154
+ options [ :environment ] = { 'HOME' => ::File . expand_path ( "~#{ new_resource . user } " ) } if new_resource . user
155
+ shell_out! ( "#{ which_pip ( new_resource ) } #{ subcommand } #{ new_resource . options } #{ new_resource . name } #{ version } " , options )
158
156
end
159
157
160
158
# TODO remove when provider is moved into Chef core
161
159
# this allows PythonPip to work with Chef::Resource::Package
162
160
def which_pip ( nr )
163
161
if ( nr . respond_to? ( "virtualenv" ) && nr . virtualenv )
164
162
::File . join ( nr . virtualenv , '/bin/pip' )
165
- elsif " #{ node [ 'python' ] [ 'install_method' ] } " . eql? ( "source" )
166
- ::File . join ( " #{ node [ 'python' ] [ 'prefix_dir' ] } " , "/bin/pip" )
163
+ elsif node [ 'python' ] [ 'install_method' ] . eql? ( "source" )
164
+ ::File . join ( node [ 'python' ] [ 'prefix_dir' ] , "/bin/pip" )
167
165
else
168
166
'pip'
169
167
end
0 commit comments