int _main()

in include/poac/subcmd/run.hpp [22:62]


        int _main(VS&& argv) {
            namespace fs = boost::filesystem;

            const auto node = io::file::yaml::load_config("name");

            std::vector<std::string> program_args;
            // poac run -v -- -h build
            if (const auto result = std::find(argv.begin(), argv.end(), "--"); result != argv.end()) {
                // -h build
                program_args = std::vector<std::string>(result + 1, argv.end());
                // -v
                subcmd::build{}(std::vector<std::string>(argv.begin(), result));
            }
            else {
                subcmd::build{}(std::move(argv));
            }

            const std::string project_name = node.at("name").as<std::string>();
            const fs::path executable_path = fs::relative(io::file::path::current_build_bin_dir / project_name);
            if (!fs::exists(executable_path)) {
                return EXIT_FAILURE;
            }

            const std::string executable = executable_path.string();
            util::command cmd(executable);
            for (const auto &s : program_args) {
                cmd += s;
            }

            std::cout << io::cli::green << "Running: " << io::cli::reset
                      << "`" + executable + "`"
                      << std::endl;
            if (const auto ret = cmd.exec()) {
                std::cout << *ret;
            }
            else {
                std::cout << project_name + " returned 1" << std::endl;
            }

            return EXIT_SUCCESS;
        }