diff options
Diffstat (limited to 'xmake.cpp')
-rw-r--r-- | xmake.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/xmake.cpp b/xmake.cpp new file mode 100644 index 0000000..9d953cc --- /dev/null +++ b/xmake.cpp @@ -0,0 +1,65 @@ +#include "xmake.h" + +#include <filesystem> +#include <iostream> +#include <sstream> +#include <string> + +#include <boost/property_tree/ptree.hpp> +#include <boost/property_tree/xml_parser.hpp> +#include <boost/process.hpp> + +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 <target>" << 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; +} + |