require 'rake'

task :clean do
  Dir['*.n'].each do |n|
    puts "Removing #{n}"
    FileUtils.rm_f(n)
  end
end

task :record do
  sh %{darcs record *.neko}
end

def build(name)
  sh %{nekoc #{name}.neko}
end

def genexe(name)
  sh %{nekotools boot #{name}.n}
end

def run(name)
  sh %{neko #{name}}
end

dependencies = {
  'lexer' => %w[file.n regexp.n lexer.n buffer.n stringscanner.n],
  'hello' => %w[hello.n],
  'readline' => %w[readline.n file.n buffer.n],
  'stringscanner' => %w[file.n buffer.n regexp.n stringscanner.n string.n],
  'oxidtuple' => %w[oxidtuple.n],
}

Dir['*.neko'].each do |neko|
  name = File.basename(neko, '.neko')

  desc "create #{name}.n via nekoc"
  file("#{name}.n" => neko){ build(name) }

  desc "create #{name} via nekotools from #{name}.n"
  file(name => dependencies[name]){ genexe(name) }
end