Sha256: 86e26cdcabcfaec30ebba3611d5e0081ca257cfa5ee176f15ba52754f5593983

Contents?: true

Size: 1.92 KB

Versions: 4

Compression:

Stored size: 1.92 KB

Contents

require 'libgems/uninstaller'

module BPM
  class Local < Repository
    def uninstall(package)
      LibGems::Uninstaller.new(package).uninstall
      true
    rescue LibGems::InstallError
      false
    end

    def pack(path, email=nil)
      package_path = File.dirname(File.expand_path path)
      cur_pwd = Dir.pwd

      FileUtils.cd package_path if package_path != cur_pwd
      package = BPM::Package.new(nil, email || creds.email)
      package.json_path = File.basename path
      
      
      if package.valid?
        silence do
          LibGems::Builder.new(package.to_spec).build
        end
      end

      FileUtils.cd cur_pwd if package_path != cur_pwd
      package
    end

    def unpack(path, target)
      package       = BPM::Package.new
      package.bpkg  = path
      unpack_dir    = File.expand_path(File.join(Dir.pwd, target, package.to_full_name))
      LibGems::Installer.new(path, :unpack => true).unpack unpack_dir
      package
    end

    def installed(packages)
      specs = LibGems.source_index.search dependency_for(packages)

      specs.map do |spec|
        [spec.name, spec.version, spec.original_platform]
      end
    end
    
    def preferred_version(package, vers, prerelease)
      dep = LibGems::Dependency.new package, vers
      specs = LibGems.source_index.search dep
      specs.last.version.to_s
    end

    def source_root(package, vers, prerelease)
      dep = LibGems::Dependency.new package, vers
      specs = LibGems.source_index.search dep

      dep2 = LibGems::Dependency.new package, '>= 0'
      specs2 = LibGems.source_index.search dep2 

      spec = specs.last
      spec &&
      File.join(spec.installation_path, 'gems', "#{spec.name}-#{spec.version}") 
    end
    
    private

    def silence
      original_verbose = LibGems.configuration.verbose
      LibGems.configuration.verbose = false
      yield
    ensure
      LibGems.configuration.verbose = original_verbose
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bpm-0.1.4 lib/bpm/local.rb
bpm-0.1.3 lib/bpm/local.rb
bpm-0.1.2 lib/bpm/local.rb
bpm-0.1.0 lib/bpm/local.rb