diff --git a/include/config.hpp b/include/config.hpp index 3d2a135..5fc0fba 100644 --- a/include/config.hpp +++ b/include/config.hpp @@ -31,6 +31,7 @@ namespace gdpm::config{ bool enable_sync = true; bool enable_cache = true; bool skip_prompt = false; + bool ignore_validation = false; bool enable_file_logging; bool clean_temporary; diff --git a/src/main.cpp b/src/main.cpp index 5b73e29..0891df9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,10 +1,7 @@ // Godot Package Manager (GPM) -#include "constants.hpp" -#include "log.hpp" -#include "config.hpp" + #include "package_manager.hpp" -#include "result.hpp" #include @@ -13,7 +10,13 @@ int main(int argc, char **argv){ using namespace gdpm::package_manager; error error = initialize(argc, argv); - parse_arguments(argc, argv); + if(error.has_occurred()) { + log::error(error); + } + error = parse_arguments(argc, argv); + if(error.has_occurred()) { + log::error(error); + } finalize(); return EXIT_SUCCESS; diff --git a/src/package_manager.cpp b/src/package_manager.cpp index 924ff03..2713bd7 100644 --- a/src/package_manager.cpp +++ b/src/package_manager.cpp @@ -147,6 +147,13 @@ namespace gdpm::package_manager{ .help("set verbosity level") .nargs(nargs_pattern::optional); + program.add_argument("--ignore-validation") + .action([&](const auto&){ config.ignore_validation = true; }) + .default_value(false) + .implicit_value(true) + .help("ignore checking if current directory is a Godot project") + .nargs(0); + install_command.add_description("install package(s)"); install_command.add_argument("packages") .required() @@ -409,6 +416,13 @@ namespace gdpm::package_manager{ return log::error_rc(ec::ARGPARSE_ERROR, e.what()); } + /* Check if we're running in a directory with 'project.godot' file */ + if (!config.ignore_validation) { + if(!std::filesystem::exists("project.godot")){ + return error(ec::FILE_NOT_FOUND, "no 'project.godot' file found in current directory"); + } + } + if(program.is_subcommand_used(install_command)){ action = action_e::install; // if(install_command.is_used("packages"))