Class: Reap::PackageTask
Overview
Package Task
This task allows on to create standard .zip, .tgz, or .tbz packages, plus create gem distributions.
Constant Summary
Constants inherited from Task
Task::DEFAULT_INCLUDE, Task::MUST_EXCLUDE, Task::RUBY
Instance Attribute Summary
Attributes inherited from Task
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Task
#[], inherited, #initialize, #package_name, registry, #ruby, #sh, tasks
Constructor Details
This class inherits a constructor from Reap::Task
Class Method Details
.desc ⇒ Object
16 |
# File 'lib/reap/tasks/package-task.rb', line 16 def self.desc ; "Build standard .tar.gz, .tar.bzip2 and .zip packages." ; end |
.task ⇒ Object
14 |
# File 'lib/reap/tasks/package-task.rb', line 14 def self.task ; :package ; end |
Instance Method Details
#run ⇒ Object
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/reap/tasks/package-task.rb', line 52 def run # create package image if FileTest.directory?(@dir) print "Directory '#{@dir}' already exists. Clobber? [y/N] " until inp = $stdin.gets[0,1] ; sleep 1 ; end if (inp || 'y').downcase == 'y' puts "Removing old directory '#{File.(@dir)}'..." trash_dir = ".trash/#{File.basename(@dir)}" FileUtils.mkdir_p(".trash") unless FileTest.directory?(".trash") FileUtils.rm_r(trash_dir) if FileTest.exists?(trash_dir) FileUtils.mv(@dir, trash_dir) else puts "Reap package task canceled." exit 0 end end package_dir_path = "#{@dir}/#{@package_name}" package_files = FileList.new package_files.include(*@include) package_files.exclude(*@exclude) if @exclude and not @exclude.empty? FileUtils.mkdir_p @dir #rescue nil package_files.each do |fn| f = File.join(package_dir_path, fn) fdir = File.dirname(f) FileUtils.mkdir_p(fdir) if not File.exist?(fdir) if File.directory?(fn) FileUtils.mkdir_p(f) else FileUtils.rm_f(f) FileUtils.safe_ln(fn, f) end end # create standard package files FileUtils.chdir(@dir) do # tar bzip2 for unix if @bzip2 puts "\nReap is shelling out work to tar and bzip2..." sh %{tar --bzip2 -cvf #{@package_name}.tbz #{@package_name}} end # tar gzip for unix if @gzip puts "\nReap is shelling out work to tar and gzip..." sh %{tar --gzip -cvf #{@package_name}.tgz #{@package_name}} end # zip for windows if @zip puts "\nReap is shelling out work to zip..." sh %{zip -r #{@package_name}.zip #{@package_name}} end puts end # create gem package if @gem run_gem end return true end |
#set(section) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/reap/tasks/package-task.rb', line 19 def set( section ) @dir = section['dir'] || 'pkg' @name = section['name'] || @config['name'] @version = section['version'] || @config['version'] || '0.0.1' @package_name = @name + '--' + @version @author = section['author'] || @config['author'] @email = section['email'] || @config['email'] @summary = section['summary'] || @config['summary'] @project = section['project'] || @config['rubyforge']['project'] @homepage = section['homepage'] || @config['homepage'] || @config['rubyforge']['homepage'] @include = section['include'] || DEFAULT_INCLUDE @exclude = MUST_EXCLUDE + section['exclude'] @zip = section['zip'].nil? ? true : section['zip'] @gzip = section['gzip'].nil? ? true : section['zip'] @bzip2 = section['bzip2'].nil? ? true : section['zip'] @gem = section['gem'].nil? ? true : section['gem'] # gem specific if self['platform'] @platform = ::Gem.const_get(section['platform']) else @platform = ::Gem::Platform::RUBY end @autorequire = section['autorequire'] @requirements = section['requirements'] || [] @dependencies = section['dependencies'] || [] @executables = section['executables'] || [] end |