Create a packaging task that will package the project into distributable files (e.g zip archive or tar files).
The PackageTask will create the following targets:
Create all the requested package files.
Delete all the package files. This target is automatically added to the main clobber target.
Rebuild the package files from scratch, even if they are not out of date.
Create a gzipped tar package (if need_tar is true).
Create a gzipped tar package (if need_tar_gz is true).
Create a bzip2’d tar package (if need_tar_bz2 is true).
Create a zip package archive (if need_zip is true).
Example:
Rake::PackageTask.new("rake", "1.2.3") do |p| p.need_tar = true p.package_files.include("lib/**/*.rb") end
Create a Package Task with the given name and version.
# File lib/rake/packagetask.rb, line 78 78: def initialize(name=nil, version=nil) 79: init(name, version) 80: yield self if block_given? 81: define unless name.nil? 82: end
Create the tasks defined by this task library.
# File lib/rake/packagetask.rb, line 99 99: def define 100: fail "Version required (or :noversion)" if @version.nil? 101: @version = nil if :noversion == @version 102: 103: desc "Build all the packages" 104: task :package 105: 106: desc "Force a rebuild of the package files" 107: task :repackage => [:clobber_package, :package] 108: 109: desc "Remove package products" 110: task :clobber_package do 111: rm_r package_dir rescue nil 112: end 113: 114: task :clobber => [:clobber_package] 115: 116: [ 117: [need_tar, tgz_file, "z"], 118: [need_tar_gz, tar_gz_file, "z"], 119: [need_tar_bz2, tar_bz2_file, "j"] 120: ].each do |(need, file, flag)| 121: if need 122: task :package => ["#{package_dir}/#{file}"] 123: file "#{package_dir}/#{file}" => [package_dir_path] + package_files do 124: chdir(package_dir) do 125: sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}} 126: end 127: end 128: end 129: end 130: 131: if need_zip 132: task :package => ["#{package_dir}/#{zip_file}"] 133: file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do 134: chdir(package_dir) do 135: sh %{#{@zip_command} -r #{zip_file} #{package_name}} 136: end 137: end 138: end 139: 140: directory package_dir 141: 142: file package_dir_path => @package_files do 143: mkdir_p package_dir rescue nil 144: @package_files.each do |fn| 145: f = File.join(package_dir_path, fn) 146: fdir = File.dirname(f) 147: mkdir_p(fdir) if !File.exist?(fdir) 148: if File.directory?(fn) 149: mkdir_p(f) 150: else 151: rm_f f 152: safe_ln(fn, f) 153: end 154: end 155: end 156: self 157: end
Initialization that bypasses the “yield self” and “define” step.
# File lib/rake/packagetask.rb, line 85 85: def init(name, version) 86: @name = name 87: @version = version 88: @package_files = Rake::FileList.new 89: @package_dir = 'pkg' 90: @need_tar = false 91: @need_tar_gz = false 92: @need_tar_bz2 = false 93: @need_zip = false 94: @tar_command = 'tar' 95: @zip_command = 'zip' 96: end
# File lib/rake/packagetask.rb, line 163 163: def package_dir_path 164: "#{package_dir}/#{package_name}" 165: end
# File lib/rake/packagetask.rb, line 159 159: def package_name 160: @version ? "#{@name}-#{@version}" : @name 161: end
# File lib/rake/packagetask.rb, line 175 175: def tar_bz2_file 176: "#{package_name}.tar.bz2" 177: end
# File lib/rake/packagetask.rb, line 171 171: def tar_gz_file 172: "#{package_name}.tar.gz" 173: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.