Sha256: 9e3a1d01a115ab701bf8eeff87a17edc0c39c52ba135228c5922c6f1d2e47698

Contents?: true

Size: 1.87 KB

Versions: 19

Compression:

Stored size: 1.87 KB

Contents

require File.join(File.dirname(__FILE__), 'gem_management')

module Merb
  module RakeHelper
    
    extend GemManagement
    
    def self.install(name, options = {})
      defaults = { :cache => false }
      defaults[:install_dir] = ENV['GEM_DIR'] if ENV['GEM_DIR']
      opts = defaults.merge(options)
      dir = if File.directory?(subdir = File.join(Dir.pwd, name))
        subdir
      else
        Dir.pwd
      end
      install_gem_from_source(dir, name, opts)
      ensure_wrapper(opts[:install_dir] || Gem.default_dir, name)
    end
    
    def self.install_package(pkg, options = {})
      defaults = { :cache => false }
      defaults[:install_dir] = ENV['GEM_DIR'] if ENV['GEM_DIR']
      opts = defaults.merge(options)
      # Needs to be executed from the directory that contains all packages
      Dir.chdir(File.dirname(pkg_file = File.expand_path(pkg))) do 
        install_gem(pkg_file, opts)
      end
      name = File.basename(pkg, '.gem')[/^(.*?)-([\d\.]+)$/, 1]
      ensure_wrapper(opts[:install_dir] || Gem.default_dir, name)
    end
    
    def self.uninstall(name, options = {})
      defaults = { :ignore => true, :executables => true }
      defaults[:install_dir] = ENV['GEM_DIR'] if ENV['GEM_DIR']
      uninstall_gem(name, defaults.merge(options))
    end  
    
    def self.sudo
      ENV['MERB_SUDO'] ||= "sudo"
      sudo = windows? ? "" : ENV['MERB_SUDO']
    end

    def self.windows?
      (PLATFORM =~ /win32|cygwin/) rescue nil
    end
    
    protected
    
    def self.ensure_wrapper(gemdir, name)
      # See if there's a local bin dir - one directory up from ./gems
      bindir = File.expand_path(File.join(gemdir, '..', 'bin'))
      # Fall back to system wide bindir - usually needs sudo permissions
      bindir = Gem.bindir unless File.directory?(bindir)
      ensure_bin_wrapper_for(gemdir, bindir, name, :no_minigems => ['merb-gen'])
    end
    
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
merb-core-1.0.15 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.14 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.13 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.12 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.11 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.10 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.1 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.2 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.3 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.5 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.4 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.6.1 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.8.1 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.7.1 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.7 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.6 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.8 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0.9 lib/merb-core/tasks/merb_rake_helper.rb
merb-core-1.0 lib/merb-core/tasks/merb_rake_helper.rb