lib/rake/funnel/tasks/paket.rb in rake-funnel-0.1.0.pre vs lib/rake/funnel/tasks/paket.rb in rake-funnel-0.2.0.pre

- old
+ new

@@ -4,26 +4,32 @@ class Paket < Rake::TaskLib include Rake::Funnel::Support attr_accessor :name, :paket, :paket_args, :bootstrapper, :bootstrapper_args - def initialize(name = :paket) - @name = name + def initialize(*args, &task_block) + setup_ivars(args) + define(args, &task_block) + end + + private + def setup_ivars(args) + @name = args.shift || :paket + @paket = File.join('.paket', 'paket.exe') @paket_args = 'restore' @bootstrapper = File.join('.paket', 'paket.bootstrapper.exe') @bootstrapper_args = nil - - yield self if block_given? - define end - private - def define - desc "#{paket_cmd.join(' ')} (optionally #{bootstrapper_cmd.join(' ')})" - task name do + def define(args, &task_block) + desc 'Restore packages' unless Rake.application.last_description + + task(name, *args) do |_, task_args| + task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block + sh(*bootstrapper_cmd) unless File.exist?(paket) sh(*paket_cmd) end self