Module: Hoe::Package

Defined in:
lib/hoe/package.rb

Overview

Package plugin for hoe.

Tasks Provided:

install_gem

Install the package as a gem.

release

Package and upload the release.

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Instance Attribute Details

- (Object) need_tar

Optional: Should package create a tarball? [default: true]



21
22
23
# File 'lib/hoe/package.rb', line 21

def need_tar
  @need_tar
end

- (Object) need_zip

Optional: Should package create a zipfile? [default: false]



26
27
28
# File 'lib/hoe/package.rb', line 26

def need_zip
  @need_zip
end

Instance Method Details

- (Object) define_package_tasks

Define tasks for plugin.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/hoe/package.rb', line 39

def define_package_tasks
  prerelease_version

  Gem::PackageTask.new spec do |pkg|
    pkg.need_tar = @need_tar
    pkg.need_zip = @need_zip
  end

  desc 'Install the package as a gem. (opt. NOSUDO=1)'
  task :install_gem => [:clean, :package, :check_extra_deps] do
    install_gem Dir['pkg/*.gem'].first
  end

  desc 'Package and upload; Requires VERSION=x.y.z (optional PRE=a.1)'
  task :release => [:prerelease, :release_to, :postrelease]

  # no doco, invisible hook
  task :prerelease do
    abort "Fix your version before you release" if spec.version =~ /borked/
  end

  # no doco, invisible hook
  task :release_to

  # no doco, invisible hook
  task :postrelease

  desc "Sanity checks for release"
  task :release_sanity do
    v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"

    pre = ENV['PRERELEASE'] || ENV['PRE']
    v += ".#{pre}" if pre

    abort "Versions don't match #{v} vs #{version}" if v != version
  end
end

- (Object) initialize_package

Initialize variables for plugin.



31
32
33
34
# File 'lib/hoe/package.rb', line 31

def initialize_package
  self.need_tar ||= true
  self.need_zip ||= false
end

- (Object) install_gem(name, version = nil)

Install the named gem.



88
89
90
91
92
93
94
# File 'lib/hoe/package.rb', line 88

def install_gem name, version = nil
  gem_cmd = Gem.default_exec_format % 'gem'
  sudo    = 'sudo '                  unless Hoe::WINDOZE || ENV["NOSUDO"]
  local   = '--local'                unless version
  version = "--version '#{version}'" if     version
  sh "#{sudo}#{gem_cmd} install #{local} #{name} #{version}"
end

- (Object) pkg_path

Returns the path used for packaging. Convenience method for those that need to write a package hook.



81
82
83
# File 'lib/hoe/package.rb', line 81

def pkg_path
  "pkg/#{spec.full_name}"
end

- (Object) prerelease_version

:nodoc:



96
97
98
99
100
101
102
103
104
105
# File 'lib/hoe/package.rb', line 96

def prerelease_version # :nodoc:
  pre = ENV['PRERELEASE'] || ENV['PRE']
  if pre then
    spec.version.version << "." << pre if pre

    abort "ERROR: You should format PRE like pre or alpha.1 or something" if
      (Gem::VERSION < "1.4"  and pre !~ /^[a-z]+(\.\d+)?$/) or
      (Gem::VERSION >= "1.4" and pre !~ /^[a-z]+(\.?\d+)?$/)
  end
end