#include "xmake.h" #include #include #include #include #include #include #include namespace fs = std::filesystem; namespace bp = boost::process; namespace pt = boost::property_tree; using namespace std::string_literals; namespace { const fs::path XMakefile{"XMakefile"}; void usage() { std::cout << "Usage: xmake " << std::endl; } } int xmake(int argc, char* argv[]) { try { pt::ptree ptree; pt::read_xml(XMakefile, ptree, pt::xml_parser::no_comments | pt::xml_parser::trim_whitespace); std::string action{"default"}; if (argc == 1) { // default action } else if (argc == 2) { action = argv[1]; } else { std::cerr << "Invalid arguments." << std::endl; usage; exit(1); } if (action == "default"s || action == "build") { // build } else if (action == "clean") { } else if (action == "install") { } else if (action == "rebuild") { } else if (action == "run") { } else { std::cerr << "Invalid action: " << action << std::endl; usage; exit(1); } // TODO: clearlist // TODO: dependencies // TODO: buildlist } catch (const std::exception& ex) { std::cerr << "Error: " << ex.what() << std::endl; return 1; } return 0; }