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]
24 25 26 |
# File 'lib/hoe/package.rb', line 24 def need_tar @need_tar end |
#need_zip ⇒ Object
Optional: Should package create a zipfile? [default: false]
29 30 31 |
# File 'lib/hoe/package.rb', line 29 def need_zip @need_zip end |
Instance Method Details
#define_package_tasks ⇒ Object
Define tasks for plugin.
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 78 79 80 81 |
# File 'lib/hoe/package.rb', line 42 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.to_s =~ /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 c = changes[/\d\S+/] abort "Versions don't match: %s vs %s" % [v, version] if v != version abort "Versions don't match %s: %s vs %s" % [history_file, v, c] if v != c end end |
#initialize_package ⇒ Object
Initialize variables for plugin.
34 35 36 37 |
# File 'lib/hoe/package.rb', line 34 def initialize_package self.need_tar ||= false self.need_zip ||= false end |
#install_gem(name, version = nil, rdoc = true) ⇒ Object
Install the named gem.
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/hoe/package.rb', line 94 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" sudo = "sudo " unless should_not_sudo local = "--local" unless version version = "--version '#{version}'" if version cmd = "#{sudo}gem install #{local} #{name} #{version}" cmd += " --no-document" unless rdoc cmd += " #{null_dev}" unless Rake.application..trace result = sh 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.
87 88 89 |
# File 'lib/hoe/package.rb', line 87 def pkg_path "pkg/#{spec.full_name}" end |
#prerelease_version ⇒ Object
:nodoc:
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/hoe/package.rb', line 111 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 |