From dd34b7441956ce6ed3159a459c1199706cfbc885 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 27 Sep 2023 15:43:29 +0000 Subject: [PATCH] cli: pakfire: Implement --yes Signed-off-by: Michael Tremer --- src/cli/lib/terminal.c | 6 +++++- src/cli/lib/terminal.h | 2 ++ src/cli/pakfire/main.c | 24 ++++++++++++++++++++---- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/cli/lib/terminal.c b/src/cli/lib/terminal.c index 72702004b..ad005029d 100644 --- a/src/cli/lib/terminal.c +++ b/src/cli/lib/terminal.c @@ -88,6 +88,11 @@ END: return r; } +int cli_term_confirm_yes(struct pakfire* pakfire, + void* data, const char* message, const char* question) { + return 0; +} + static int cli_term_enter_number(const char* question, unsigned int* choice, unsigned int min, unsigned int max) { char* line = NULL; @@ -173,7 +178,6 @@ static struct pakfire_solution* cli_term_find_solution( struct pakfire_problem** problems, const unsigned int choice) { struct pakfire_solution* selected_solution = NULL; struct pakfire_solution** solutions = NULL; - int r; // Count solutions unsigned int i = 1; diff --git a/src/cli/lib/terminal.h b/src/cli/lib/terminal.h index 7ff0f7134..5243ea419 100644 --- a/src/cli/lib/terminal.h +++ b/src/cli/lib/terminal.h @@ -26,6 +26,8 @@ int cli_term_confirm(struct pakfire* pakfire, void* data, const char* message, const char* question); +int cli_term_confirm_yes(struct pakfire* pakfire, + void* data, const char* message, const char* question); int cli_term_pick_solution( struct pakfire* pakfire, struct pakfire_transaction* transaction, void* data); diff --git a/src/cli/pakfire/main.c b/src/cli/pakfire/main.c index 6d0048a3e..fe574d59f 100644 --- a/src/cli/pakfire/main.c +++ b/src/cli/pakfire/main.c @@ -200,6 +200,23 @@ static int parse_argv(struct config* config, int argc, char* argv[]) { return 0; } +static int configure_callbacks(const struct config* config, struct pakfire* pakfire) { + // If the user wants to answer yes to everything we only configure that + if (config->yes) { + pakfire_set_confirm_callback(pakfire, cli_term_confirm_yes, NULL); + + return 0; + } + + // Configure confirm callback + pakfire_set_confirm_callback(pakfire, cli_term_confirm, NULL); + + // Configure pick solution callback + pakfire_set_pick_solution_callback(pakfire, cli_term_pick_solution, NULL); + + return 0; +} + static void cli_set_repo_enabled(struct pakfire* pakfire, const char* name, int enabled) { struct pakfire_repo* repo = NULL; @@ -249,10 +266,9 @@ int main(int argc, char* argv[]) { goto ERROR; // Configure callbacks - pakfire_set_confirm_callback(pakfire, cli_term_confirm, NULL); - - // Configure pick solution callback - pakfire_set_pick_solution_callback(pakfire, cli_term_pick_solution, NULL); + r = configure_callbacks(&config, pakfire); + if (r) + goto ERROR; // Enable repositories for (unsigned int i = 0; i < config.num_enable_repos; i++) -- 2.47.2