@@ -32,56 +32,56 @@ def whyrun_supported?
3232
3333action :install do
3434 # 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
3737 # If it's not installed at all, install it
38- elsif @ current_resource. version == nil
38+ elsif current_resource . version == nil
3939 install_version = candidate_version
4040 end
4141
4242 if install_version
43- description = "install package #{ @ new_resource} version #{ install_version } "
43+ description = "install package #{ new_resource } version #{ install_version } "
4444 converge_by ( description ) do
45- Chef ::Log . info ( "Installing #{ @ new_resource} version #{ install_version } " )
45+ Chef ::Log . info ( "Installing #{ new_resource } version #{ install_version } " )
4646 status = install_package ( install_version )
4747 if status
48- @ new_resource. updated_by_last_action ( true )
48+ new_resource . updated_by_last_action ( true )
4949 end
5050 end
5151 end
5252end
5353
5454action :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 } "
5858 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 } " )
6060 status = upgrade_package ( candidate_version )
6161 if status
62- @ new_resource. updated_by_last_action ( true )
62+ new_resource . updated_by_last_action ( true )
6363 end
6464 end
6565 end
6666end
6767
6868action :remove do
6969 if removing_package?
70- description = "remove package #{ @ new_resource} "
70+ description = "remove package #{ new_resource } "
7171 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 )
7575 end
7676 end
7777end
7878
7979def removing_package?
80- if @ current_resource. version . nil?
80+ if current_resource . version . nil?
8181 false # nothing to remove
82- elsif @ new_resource. version . nil?
82+ elsif new_resource . version . nil?
8383 true # remove any version of a package
84- elsif @ new_resource. version == @ current_resource. version
84+ elsif new_resource . version == current_resource . version
8585 true # remove the version we have
8686 else
8787 false # we don't have the version we want to remove
@@ -93,8 +93,8 @@ def removing_package?
9393# so refactoring into core Chef should be easy
9494
9595def 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 )
9898 @current_resource . version ( nil )
9999
100100 unless current_installed_version . nil?
@@ -108,16 +108,14 @@ def current_installed_version
108108 @current_installed_version ||= begin
109109 delimeter = /==/
110110
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 } =='"
112112 # incase you upgrade pip with pip!
113- if @ new_resource. package_name . eql? ( 'pip' )
113+ if new_resource . package_name . eql? ( 'pip' )
114114 delimeter = /\s /
115115 version_check_cmd = "pip --version"
116116 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
121119 end
122120end
123121
@@ -126,14 +124,14 @@ def candidate_version
126124 # `pip search` doesn't return versions yet
127125 # `pip list` may be coming soon:
128126 # https://bitbucket.org/ianb/pip/issue/197/option-to-show-what-version-would-be
129- @ new_resource. version ||'latest'
127+ new_resource . version ||'latest'
130128 end
131129end
132130
133131def install_package ( version )
134132 # if a version isn't specified (latest), is a source archive (ex. http://my.package.repo/SomePackage-1.0.4.zip),
135133 # 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 ] )
137135 version = ''
138136 else
139137 version = "==#{ version } "
@@ -142,28 +140,28 @@ def install_package(version)
142140end
143141
144142def upgrade_package ( version )
145- @ new_resource. options "#{ @ new_resource. options } --upgrade"
143+ new_resource . options "#{ new_resource . options } --upgrade"
146144 install_package ( version )
147145end
148146
149147def remove_package ( version )
150- @ new_resource. options "#{ @ new_resource. options } --yes"
148+ new_resource . options "#{ new_resource . options } --yes"
151149 pip_cmd ( 'uninstall' )
152150end
153151
154152def 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 )
158156end
159157
160158# TODO remove when provider is moved into Chef core
161159# this allows PythonPip to work with Chef::Resource::Package
162160def which_pip ( nr )
163161 if ( nr . respond_to? ( "virtualenv" ) && nr . virtualenv )
164162 ::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" )
167165 else
168166 'pip'
169167 end
0 commit comments