# class Chef::Provider::Package::EasyInstall

### Public Instance Methods

candidate_version() click to toggle source

    # File lib/chef/provider/package/easy_install.rb, line 108
    def candidate_version
       return @candidate_version if @candidate_version

       # do a dry run to get the latest 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() click to toggle source

    # 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) click to toggle source

    # File lib/chef/provider/package/easy_install.rb, line 32
    def install_check(name)
      check = false

      begin
        # first check to see if we can import it
        output = shell_out!("#{python_binary_path} -c \"import #{name}\"", :returns=>[0,1]).stderr
        if output.include? "ImportError"
          # then check to see if its on the path
          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
        # it's probably not installed
      end

      check
    end

install_package(name, version) click to toggle source

    # 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() click to toggle source

    # 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)

      # get the currently installed version if installed
      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() click to toggle source

    # 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) click to toggle source

    # File lib/chef/provider/package/easy_install.rb, line 129
    def purge_package(name, version)
      remove_package(name, version)
    end

python_binary_path() click to toggle source

    # 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) click to toggle source

    # 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) click to toggle source

    # File lib/chef/provider/package/easy_install.rb, line 121
    def upgrade_package(name, version)
      install_package(name, version)
    end