Sha256: 5fca59f8bfced37333d382c6986a8841a7dcc74e820b76f496ec3aba03586c26

Contents?: true

Size: 1.24 KB

Versions: 7

Compression:

Stored size: 1.24 KB

Contents

require "decko/application"
require_relative "alias"

CARD_TASKS = (
  %i[eat migrate reset_cache reset_tmp seed setup sow update] +
  # { assets: %i[refresh code wipe] },
  # above caused loading problem because of .sort is rails' #run_tasks_blocks
  [{ migrate: %i[cards structure core_cards deck_cards redo stamp] },
   { mod: %i[list symlink leftover uninstall install] },
   { seed: %i[build clean dump plow polish replant update] }]
).freeze

def link_task task, from: nil, to: nil, namespace: nil
  case task
  when Hash
    task.each do |key, val|
      link_task val, from: from, to: to, namespace: append_to_namespace(namespace, key)
    end
  when Array
    task.each { |t| link_task t, from: from, to: to, namespace: namespace }
  else
    shared_part = append_to_namespace namespace, task
    alias_task "#{from}:#{shared_part}", "#{to}:#{shared_part}"
  end
end

private

def alias_task name, old_name
  t = Rake::Task[old_name]
  desc t.full_comment if t.full_comment
  task name, *t.arg_names do |_, args|
    # values_at is broken on Rake::TaskArguments
    args = t.arg_names.map { |a| args[a] }
    t.invoke(args)
  end
end

def append_to_namespace namespace, part
  [namespace, part].compact.join(":")
end

link_task CARD_TASKS, from: :decko, to: :card

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
decko-0.15.6 lib/rake_tasks/decko.rake
decko-0.15.5 lib/rake_tasks/decko.rake
decko-0.15.4 lib/rake_tasks/decko.rake
decko-0.15.3 lib/rake_tasks/decko.rake
decko-0.15.2.pre1 lib/rake_tasks/decko.rake
decko-0.15.1.1 lib/rake_tasks/decko.rake
decko-0.15.1 lib/rake_tasks/decko.rake