Added section to README.md and minor fixes

This commit is contained in:
David Allen 2023-07-02 08:39:10 -06:00
parent 6141a24473
commit 37b65c0939
7 changed files with 83 additions and 40 deletions

View file

@ -232,32 +232,33 @@ namespace gdpm::config{
return error();
}
error set_property(
config::context& config,
const string& property,
const any& value
const string& value
){
log::println("config::set_property() called");
if(property == "username") config.username = std::any_cast<string>(value);
else if(property == "password") config.password = std::any_cast<string>(value);
else if(property == "path") config.path = std::any_cast<string>(value);
else if(property == "token") config.token = std::any_cast<string>(value);
else if(property == "packages_dir") config.packages_dir = std::any_cast<string>(value);
else if(property == "tmp_dir") config.tmp_dir = std::any_cast<string>(value);
else if(property == "remote_sources") config.remote_sources = std::any_cast<string_map>(value);
else if(property == "jobs") config.jobs = std::any_cast<int>(value);
else if(property == "timeout") config.timeout = std::any_cast<int>(value);
else if(property == "enable_sync") config.enable_sync = std::any_cast<bool>(value);
else if(property == "enable_cache") config.enable_cache = std::any_cast<bool>(value);
else if(property == "skip_prompt") config.skip_prompt = std::any_cast<bool>(value);
else if(property == "enable_file_logging") config.enable_file_logging = std::any_cast<bool>(value);
else if(property == "clean_temporary") config.clean_temporary = std::any_cast<bool>(value);
if(property == "username") config.username = value;
else if(property == "password") config.password = value;
else if(property == "path") config.path = value;
else if(property == "token") config.token = value;
else if(property == "packages-dir") config.packages_dir = value;
else if(property == "tmp-dir") config.tmp_dir = value;
else if(property == "remote-sources") log::println("use 'gpdm remote' to manage remotes");
else if(property == "jobs") config.jobs = std::stoi(value);
else if(property == "timeout") config.timeout = std::stoi(value);
else if(property == "enable-sync") config.enable_sync = utils::to_bool(value);
else if(property == "enable-cache") config.enable_cache = utils::to_bool(value);
else if(property == "skip-prompt") config.skip_prompt = utils::to_bool(value);
else if(property == "enable-file-logging") config.enable_file_logging = utils::to_bool(value);
else if(property == "clean-temporary") config.clean_temporary = utils::to_bool(value);
else{
return log::error_rc(error(
constants::error::INVALID_CONFIG,
"Could not find property"
));
}
return error();
}
template <typename T>
@ -342,14 +343,14 @@ namespace gdpm::config{
else if(property == "password") log::println("password: {}", config.password);
else if(property == "path") log::println("path: {}", config.path);
else if(property == "token") log::println("token: {}", config.token);
else if(property == "packages_dir") log::println("package directory: {}", config.packages_dir);
else if(property == "tmp_dir") log::println("temporary directory: {}", config.tmp_dir);
else if(property == "remote_sources") log::println("remote sources: \n{}", utils::join(config.remote_sources, "\t", "\n"));
else if(property == "packages-dir") log::println("package directory: {}", config.packages_dir);
else if(property == "tmp-dir") log::println("temporary directory: {}", config.tmp_dir);
else if(property == "remote-sources") log::println("remote sources: \n{}", utils::join(config.remote_sources, "\t", "\n"));
else if(property == "jobs") log::println("parallel jobs: {}", config.jobs);
else if(property == "timeout") log::println("timeout: {}", config.timeout);
else if(property == "sync") log::println("enable sync: {}", config.enable_sync);
else if(property == "cache") log::println("enable cache: {}", config.enable_cache);
else if(property == "prompt") log::println("skip prompt: {}", config.skip_prompt);
else if(property == "skip-prompt") log::println("skip prompt: {}", config.skip_prompt);
else if(property == "logging") log::println("enable file logging: {}", config.enable_file_logging);
else if(property == "clean") log::println("clean temporary files: {}", config.clean_temporary);
else if(property == "verbose") log::println("verbose: {}", config.verbose);
@ -366,14 +367,14 @@ namespace gdpm::config{
else if(property == "password") table.add_row({"Password", config.password});
else if(property == "path") table.add_row({"Path", config.path});
else if(property == "token") table.add_row({"Token", config.token});
else if(property == "packages_dir") table.add_row({"Package Directory", config.packages_dir});
else if(property == "tmp_dir") table.add_row({"Temp Directory", config.tmp_dir});
else if(property == "remote_sources") table.add_row({"Remotes", utils::join(config.remote_sources, "\t", "\n")});
else if(property == "packages-dir") table.add_row({"Package Directory", config.packages_dir});
else if(property == "tmp-dir") table.add_row({"Temp Directory", config.tmp_dir});
else if(property == "remote-sources") table.add_row({"Remotes", utils::join(config.remote_sources, "\t", "\n")});
else if(property == "jobs") table.add_row({"Threads", std::to_string(config.jobs)});
else if(property == "timeout") table.add_row({"Timeout", std::to_string(config.timeout)});
else if(property == "sync") table.add_row({"Fetch Assets", std::to_string(config.enable_sync)});
else if(property == "cache") table.add_row({"Cache", std::to_string(config.enable_cache)});
else if(property == "prompt") table.add_row({"Skip Prompt", std::to_string(config.skip_prompt)});
else if(property == "skip-prompt") table.add_row({"Skip Prompt", std::to_string(config.skip_prompt)});
else if(property == "logging") table.add_row({"File Logging", std::to_string(config.enable_file_logging)});
else if(property == "clean") table.add_row({"Clean Temporary", std::to_string(config.clean_temporary)});
else if(property == "verbose") table.add_row({"Verbosity", std::to_string(config.verbose)});
@ -391,9 +392,9 @@ namespace gdpm::config{
_print_property(config, "password");
_print_property(config, "path");
_print_property(config, "token");
_print_property(config, "packages_dir");
_print_property(config, "tmp_dir");
_print_property(config, "remote_sources");
_print_property(config, "packages-dir");
_print_property(config, "tmp-dir");
_print_property(config, "remote-sources");
_print_property(config, "jobs");
_print_property(config, "timeout");
_print_property(config, "sync");
@ -415,8 +416,8 @@ namespace gdpm::config{
}
else if(config.style == config::print_style::table){
Table table;
table.add_row({"Property", "Value"});
if(properties.empty()){
table.add_row({"Property", "Value"});
table.add_row({"Username", config.username});
table.add_row({"Password", config.password});
table.add_row({"Path", config.path});

View file

@ -93,7 +93,7 @@ namespace gdpm::package_manager{
}
};
string_list get_packages_from_parser(
string_list get_values_from_parser(
const argparse::ArgumentParser& cmd,
const std::string& arg = "packages"
){
@ -313,10 +313,17 @@ namespace gdpm::package_manager{
.help("remote to fetch")
.nargs(nargs_pattern::any);
config_get.add_description("get config properties");
config_get.add_argument("properties")
.help("get config properties")
.nargs(nargs_pattern::any);
config_get.add_description("get config properties");
config_get.add_argument("--style")
.help("set how to print output")
.nargs(1)
.default_value("list");
config_set.add_description("set config property");
config_set.add_argument("property")
.help("property name")
.required()
@ -325,11 +332,14 @@ namespace gdpm::package_manager{
.help("property value")
.required()
.nargs(1);
config_set.add_description("set config property");
config_command.add_description("manage config properties");
config_command.add_subparser(config_get);
config_command.add_subparser(config_set);
config_command.add_argument("--style")
.help("set how to print output")
.nargs(1)
.default_value("list");
remote_add.add_argument("name")
.help("remote name")
@ -394,7 +404,7 @@ namespace gdpm::package_manager{
}
else if(program.is_subcommand_used(add_command)){
action = action_e::add;
package_titles = get_packages_from_parser(add_command);
package_titles = get_values_from_parser(add_command);
set_if_used(add_command, params.remote_source, "remote");
set_if_used(add_command, config.jobs, "jobs");
set_if_used(add_command, config.skip_prompt, "skip-prompt");
@ -402,21 +412,21 @@ namespace gdpm::package_manager{
}
else if(program.is_subcommand_used(remove_command)){
action = action_e::remove;
package_titles = get_packages_from_parser(remove_command);
package_titles = get_values_from_parser(remove_command);
set_if_used(remove_command, config.clean_temporary, "clean");
set_if_used(remove_command, config.skip_prompt, "skip-prompt");
set_if_used(remove_command, params.input_files, "file");
}
else if(program.is_subcommand_used(update_command)){
action = action_e::update;
package_titles = get_packages_from_parser(update_command);
package_titles = get_values_from_parser(update_command);
set_if_used(update_command, config.clean_temporary, "clean");
set_if_used(update_command, params.remote_source, "remote");
set_if_used(update_command, params.input_files, "file");
}
else if(program.is_subcommand_used(search_command)){
action = action_e::search;
package_titles = get_packages_from_parser(search_command);
package_titles = get_values_from_parser(search_command);
set_if_used(search_command, config.rest_api_params.godot_version, "godot-version");
set_if_used(search_command, params.remote_source, "remote");
set_if_used(search_command, params.input_files, "file");
@ -439,7 +449,7 @@ namespace gdpm::package_manager{
}
else if(program.is_subcommand_used(link_command)){
action = action_e::link;
package_titles = get_packages_from_parser(link_command);
package_titles = get_values_from_parser(link_command);
set_if_used(link_command, params.paths, "path");
if(link_command.is_used("file")){
params.input_files = link_command.get<string_list>("file");
@ -450,7 +460,7 @@ namespace gdpm::package_manager{
}
else if(program.is_subcommand_used(clone_command)){
action = action_e::clone;
package_titles = get_packages_from_parser(clone_command);
package_titles = get_values_from_parser(clone_command);
set_if_used(clone_command, params.paths, "path");
if(clone_command.is_used("file")){
params.input_files = clone_command.get<string_list>("file");
@ -461,13 +471,27 @@ namespace gdpm::package_manager{
}
else if(program.is_subcommand_used(clean_command)){
action = action_e::clean;
package_titles = get_packages_from_parser(clean_command);
package_titles = get_values_from_parser(clean_command);
}
else if(program.is_subcommand_used(config_command)){
if(config_command.is_used("style")){
string style = config_command.get<string>("style");
if(!style.compare("list"))
config.style = config::print_style::list;
else if(!style.compare("table"))
config.style = config::print_style::table;
}
if(config_command.is_subcommand_used(config_get)){
action = action_e::config_get;
if(config_get.is_used("properties"))
params.args = config_get.get<string_list>("properties");
if(config_get.is_used("style")){
string style = config_get.get<string>("style");
if(!style.compare("list"))
config.style = config::print_style::list;
else if(!style.compare("table"))
config.style = config::print_style::table;
}
}
else if(config_command.is_subcommand_used(config_set)){
action = action_e::config_set;

View file

@ -57,6 +57,10 @@ namespace gdpm::utils{
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}},
};
bool to_bool(const std::string& s){
return to_lower(s) == "true";
}
std::vector<std::string> split_lines(const std::string& contents){
using namespace csv2;
csv2::Reader<