
import "autoclean", "package/tgz"

cpp_dirs = sys["c++/problem_*"]
c_dirs = sys["c/problem_*"]
all_dirs = cpp_dirs + c_dirs

cpp_rf_template = "c++/template.rf"
c_rf_template = "c/template.rf"

desc "Run all C and C++ tests."
task :run => all_dirs.map{ |f| "#{f}/run" }
desc "Build all."
task :build => all_dirs.map{ |f| "#{f}/test" }

desc "Remove all autogenerated files."
gen AutoClean

source "rule.rf"

desc "Create source package."
gen Package::Tgz, "pkg/c_cpp_exercises",
    :files => sys["Rantfile", "**/*.{c,cpp,h,rf}"]

gen Action do
    cpp_dirs.each { |dir|
        make "#{dir}/Rantfile" => cpp_rf_template do |t|
            sys.cp t.source, t.name
        end
    }
    c_dirs.each { |dir|
        make "#{dir}/Rantfile" => c_rf_template do |t|
            sys.cp t.source, t.name
        end
    }
    subdirs cpp_dirs, c_dirs
end
