SUB_DIRS=%w[look control strings regex symbols collections patmatch object dyntype wrtests methods operators 
equality singleton clsinstant namespace mixins iterate xaround xlater hooks 
mmdel mmapi monkey selfmod modsubclass idsl concurrent gems impl]

SKIP_DIRS=%w[gems impl]

def dir_to_task(dir:, prefix:)
  "#{prefix}#{dir}".to_sym
end

BUILD_TASKS=[]
CLEAN_TASKS=[]

SUB_DIRS.each do |dir|
  build_task_name = dir_to_task(dir: dir, prefix: "build_")
  clean_task_name = dir_to_task(dir: dir, prefix: "clean_")
  if SKIP_DIRS.include?(dir)
    task build_task_name do
      puts "\n**** Skipping: #{dir} *****\n\n"
    end
    task clean_task_name do
    end
  else
    task build_task_name do
      puts 
      sh "cd #{dir} && pwd && rake"
    end

    task clean_task_name do
      sh "cd #{dir} && pwd && rake clean"
    end
  end
  BUILD_TASKS << build_task_name
  CLEAN_TASKS << clean_task_name
end

task :default => BUILD_TASKS
task :clean =>   CLEAN_TASKS
