Fixed prompt logic and version command

This commit is contained in:
David Allen 2023-06-18 22:43:47 -06:00
parent c88cb08e03
commit 3be3d01388
2 changed files with 14 additions and 11 deletions

View file

@ -96,7 +96,6 @@ namespace gdpm::package_manager{
/* Set global options */ /* Set global options */
auto debugOpt = option("-d", "--debug").set(config.verbose, to_int(log::DEBUG)) % "show debug output"; auto debugOpt = option("-d", "--debug").set(config.verbose, to_int(log::DEBUG)) % "show debug output";
auto configOpt = option("--config-path").set(config.path) % "set config path"; auto configOpt = option("--config-path").set(config.path) % "set config path";
auto fileOpt = repeatable(option("--file", "-f").set(params.args) % "read file as input");
auto pathOpt = option("--path").set(params.paths) % "specify a path to use with command"; auto pathOpt = option("--path").set(params.paths) % "specify a path to use with command";
auto typeOpt = option("--type").set(config.info.type) % "set package type (any|addon|project)"; auto typeOpt = option("--type").set(config.info.type) % "set package type (any|addon|project)";
auto sortOpt = option("--sort").set(config.api_params.sort) % "sort packages in order (rating|cost|name|updated)"; auto sortOpt = option("--sort").set(config.api_params.sort) % "sort packages in order (rating|cost|name|updated)";
@ -107,14 +106,14 @@ namespace gdpm::package_manager{
auto tmpDirOpt = option("--tmp-dir").set(config.tmp_dir) % "set the temporary download location"; auto tmpDirOpt = option("--tmp-dir").set(config.tmp_dir) % "set the temporary download location";
auto timeoutOpt = option("--timeout").set(config.timeout) % "set the request timeout"; auto timeoutOpt = option("--timeout").set(config.timeout) % "set the request timeout";
auto verboseOpt = joinable(repeatable(option("-v", "--verbose").call([]{ config.verbose += 1; }))) % "show verbose output"; auto verboseOpt = joinable(repeatable(option("-v", "--verbose").call([]{ config.verbose += 1; }))) % "show verbose output";
auto versionOpt = option("--version").set(action, action_e::version);
/* Set the options */ /* Set the options */
auto fileOpt = repeatable(option("--file", "-f").set(params.args) % "read file as input");
auto cleanOpt = option("--clean").set(config.clean_temporary) % "enable/disable cleaning temps"; auto cleanOpt = option("--clean").set(config.clean_temporary) % "enable/disable cleaning temps";
auto parallelOpt = option("--jobs").set(config.jobs) % "set number of parallel jobs"; auto parallelOpt = option("--jobs").set(config.jobs) % "set number of parallel jobs";
auto cacheOpt = option("--enable-cache").set(config.enable_cache) % "enable/disable local caching"; auto cacheOpt = option("--enable-cache").set(config.enable_cache) % "enable/disable local caching";
auto syncOpt = option("--enable-sync").set(config.enable_sync) % "enable/disable remote syncing"; auto syncOpt = option("--enable-sync").set(config.enable_sync) % "enable/disable remote syncing";
auto skipOpt = option("--skip-prompt").set(config.skip_prompt) % "skip the y/n prompt"; auto skipOpt = option("-y", "--skip-prompt").set(config.skip_prompt, true) % "skip the y/n prompt";
auto remoteOpt = option("--remote").set(params.remote_source) % "set remote source to use"; auto remoteOpt = option("--remote").set(params.remote_source) % "set remote source to use";
auto packageValues = values("packages", package_titles); auto packageValues = values("packages", package_titles);
@ -123,16 +122,17 @@ namespace gdpm::package_manager{
auto installCmd = "install" % ( auto installCmd = "install" % (
command("install").set(action, action_e::install), command("install").set(action, action_e::install),
packageValues % "packages to install from asset library", packageValues % "packages to install from asset library",
godotVersionOpt, cleanOpt, parallelOpt, syncOpt, skipOpt, remoteOpt godotVersionOpt, cleanOpt, parallelOpt, syncOpt, skipOpt, remoteOpt, fileOpt
); );
auto addCmd = "add" % ( auto addCmd = "add" % (
command("add").set(action, action_e::add), command("add").set(action, action_e::add),
packageValues % "package(s) to add to local project", packageValues % "package(s) to add to local project",
parallelOpt, skipOpt, remoteOpt parallelOpt, skipOpt, remoteOpt, fileOpt
); );
auto removeCmd = "remove" % ( auto removeCmd = "remove" % (
command("remove").set(action, action_e::remove), command("remove").set(action, action_e::remove),
packageValues % "package(s) to remove from local project" packageValues % "package(s) to remove from local project",
fileOpt
); );
auto updateCmd = "update" % ( auto updateCmd = "update" % (
command("update").set(action, action_e::update), command("update").set(action, action_e::update),
@ -180,6 +180,9 @@ namespace gdpm::package_manager{
command("fetch").set(action, action_e::fetch), command("fetch").set(action, action_e::fetch),
option(values("remote", params.args)) % "remote to fetch asset data" option(values("remote", params.args)) % "remote to fetch asset data"
); );
auto versionCmd = "show the version and exit" %(
command("version").set(action, action_e::version)
);
auto add_arg = [&params](string arg) { params.args.emplace_back(arg); }; auto add_arg = [&params](string arg) { params.args.emplace_back(arg); };
auto remoteCmd = ( auto remoteCmd = (
command("remote").set(action, action_e::remote_list).if_missing( command("remote").set(action, action_e::remote_list).if_missing(
@ -208,10 +211,10 @@ namespace gdpm::package_manager{
); );
auto cli = ( auto cli = (
debugOpt, configOpt, verboseOpt, versionOpt, debugOpt, verboseOpt, configOpt,
(installCmd | addCmd | removeCmd | updateCmd | searchCmd | exportCmd | (installCmd | addCmd | removeCmd | updateCmd | searchCmd | exportCmd |
listCmd | linkCmd | cloneCmd | cleanCmd | configCmd | fetchCmd | listCmd | linkCmd | cloneCmd | cleanCmd | configCmd | fetchCmd |
remoteCmd | uiCmd | helpCmd) remoteCmd | uiCmd | helpCmd | versionCmd)
); );
/* Make help output */ /* Make help output */

View file

@ -213,9 +213,9 @@ namespace gdpm::utils{
bool prompt_user_yn(const char *message){ bool prompt_user_yn(const char *message){
std::string input{""}; std::string input{""};
while( !std::cin.fail() && input != "y" && input != "n" ){ while( input != "y" && input != "n" ){
bool is_default = (input == "\0" || input == "\n" || input == "\r\n" || input.empty());
input = to_lower(utils::prompt_user(message)); input = to_lower(utils::prompt_user(message));
bool is_default = (input == "\0" || input == "\n" || input == "\r\n" || input.empty());
input = is_default ? "y" : input; input = is_default ? "y" : input;
} }
return input == "y"; return input == "y";