aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/vendor/thor-0.11.3/lib/thor/tasks/package.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/vendor/thor-0.11.3/lib/thor/tasks/package.rb')
-rw-r--r--railties/lib/vendor/thor-0.11.3/lib/thor/tasks/package.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/railties/lib/vendor/thor-0.11.3/lib/thor/tasks/package.rb b/railties/lib/vendor/thor-0.11.3/lib/thor/tasks/package.rb
new file mode 100644
index 0000000000..603d61b4ab
--- /dev/null
+++ b/railties/lib/vendor/thor-0.11.3/lib/thor/tasks/package.rb
@@ -0,0 +1,31 @@
+require "fileutils"
+
+class Thor
+ # Creates a package task.
+ #
+ # ==== Parameters
+ # spec<Gem::Specification>
+ #
+ # ==== Options
+ # :dir - The package directory. Defaults to ./pkg.
+ #
+ def self.package_task(spec, options={})
+ tasks['package'] = Thor::PackageTask.new(spec, options)
+ end
+
+ class PackageTask < Task
+ attr_accessor :spec, :config
+
+ def initialize(gemspec, config={})
+ super(:package, "Build a gem package", "package", {})
+ @spec = gemspec
+ @config = {:dir => File.join(Dir.pwd, "pkg")}.merge(config)
+ end
+
+ def run(instance, args=[])
+ FileUtils.mkdir_p(config[:dir])
+ Gem::Builder.new(spec).build
+ FileUtils.mv(spec.file_name, File.join(config[:dir], spec.file_name))
+ end
+ end
+end