Module: Hoe::Package
- Defined in:
- lib/hoe/package.rb
Overview
Package plugin for hoe.
Tasks Provided:
- install_gem
-
Install the package as a gem.
- prerelease
-
Hook for pre-release actions like sanity checks.
- postrelease
-
Hook for post-release actions like release announcements.
- release
-
Package and upload the release.
Instance Attribute Summary collapse
-
#need_tar ⇒ Object
Optional: Should package create a tarball? [default: true].
-
#need_zip ⇒ Object
Optional: Should package create a zipfile? [default: false].
Instance Method Summary collapse
-
#define_package_tasks ⇒ Object
Define tasks for plugin.
-
#initialize_package ⇒ Object
Initialize variables for plugin.
-
#install_gem(name, version = nil, rdoc = true) ⇒ Object
Install the named gem.
-
#pkg_path ⇒ Object
Returns the path used for packaging.
-
#prerelease_version ⇒ Object
:nodoc:.
Instance Attribute Details
#need_tar ⇒ Object
Optional: Should package create a tarball? [default: true]
23 24 25 |
# File 'lib/hoe/package.rb', line 23 def need_tar @need_tar end |
#need_zip ⇒ Object
Optional: Should package create a zipfile? [default: false]
28 29 30 |
# File 'lib/hoe/package.rb', line 28 def need_zip @need_zip end |
Instance Method Details
#define_package_tasks ⇒ Object
Define tasks for plugin.
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 76 77 |
# File 'lib/hoe/package.rb', line 41 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 |
#initialize_package ⇒ Object
Initialize variables for plugin.
33 34 35 36 |
# File 'lib/hoe/package.rb', line 33 def initialize_package self.need_tar ||= false self.need_zip ||= false end |
#install_gem(name, version = nil, rdoc = true) ⇒ Object
Install the named gem.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/hoe/package.rb', line 90 def install_gem name, version = nil, rdoc = true should_not_sudo = Hoe::WINDOZE || ENV["NOSUDO"] || File.writable?(Gem.dir) null_dev = Hoe::WINDOZE ? "> NUL 2>&1" : "> /dev/null 2>&1" gem_cmd = Gem.default_exec_format % "gem" sudo = "sudo " unless should_not_sudo local = "--local" unless version version = "--version '#{version}'" if version cmd = "#{sudo}#{gem_cmd} install #{local} #{name} #{version}" cmd += " --no-document" unless rdoc cmd += " #{null_dev}" unless Rake.application..trace puts cmd if Rake.application..trace result = system cmd Gem::Specification.reset result end |
#pkg_path ⇒ Object
Returns the path used for packaging. Convenience method for those that need to write a package hook.
83 84 85 |
# File 'lib/hoe/package.rb', line 83 def pkg_path "pkg/#{spec.full_name}" end |
#prerelease_version ⇒ Object
:nodoc:
109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/hoe/package.rb', line 109 def prerelease_version # :nodoc: pre = ENV["PRERELEASE"] || ENV["PRE"] return unless pre spec.version = "#{spec.version}.#{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 |