From: Michael Tremer Date: Fri, 27 Jun 2025 08:25:53 +0000 (+0000) Subject: CLI: Add a convenience function to run the client X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed60efa212c53449f4a97d88e13f07a535f6eea3;p=pakfire.git CLI: Add a convenience function to run the client Signed-off-by: Michael Tremer --- diff --git a/src/cli/lib/client-build.c b/src/cli/lib/client-build.c index 6fff2cbe..36bcad18 100644 --- a/src/cli/lib/client-build.c +++ b/src/cli/lib/client-build.c @@ -165,33 +165,13 @@ static int ready_callback(struct pakfire_client* client, void* data) { int cli_client_build(void* data, int argc, char* argv[]) { struct cli_global_args* global_args = data; struct cli_local_args local_args = {}; - struct pakfire_client* client = NULL; int r; // Parse the command line r = cli_parse(options, NULL, args_doc, doc, parse, 0, argc, argv, &local_args); if (r) - goto ERROR; - - // Connect to the build service - r = cli_setup_client(&client, global_args); - if (r < 0) - goto ERROR; - - // Set ready callback - pakfire_client_set_ready_callback(client, ready_callback, &local_args); + return r; // Run the client - r = pakfire_client_run(client); - if (r < 0) - goto ERROR; - - // Return the status - r = local_args.status; - -ERROR: - if (client) - pakfire_client_unref(client); - - return r; + return cli_run_client(global_args, ready_callback, &local_args); } diff --git a/src/cli/lib/pakfire.c b/src/cli/lib/pakfire.c index c1da92fb..7cbb6d81 100644 --- a/src/cli/lib/pakfire.c +++ b/src/cli/lib/pakfire.c @@ -205,3 +205,26 @@ ERROR: return r; } + +int cli_run_client(struct cli_global_args* args, pakfire_client_ready_callback callback, void* data) { + struct pakfire_client* client = NULL; + int r; + + // Create a new client + r = cli_setup_client(&client, args); + if (r < 0) + goto ERROR; + + // Set the ready callback + if (callback) + pakfire_client_set_ready_callback(client, callback, data); + + // Run the client + r = pakfire_client_run(client); + +ERROR: + if (client) + pakfire_client_unref(client); + + return r; +} diff --git a/src/cli/lib/pakfire.h b/src/cli/lib/pakfire.h index 1da58d69..dd5dc1c3 100644 --- a/src/cli/lib/pakfire.h +++ b/src/cli/lib/pakfire.h @@ -50,5 +50,6 @@ int cli_setup_config(struct pakfire_config** config, struct cli_global_args* arg int cli_setup_pakfire(struct pakfire** pakfire, struct cli_global_args* args); int cli_setup_build(struct pakfire_build** build, struct cli_global_args* args, int flags); int cli_setup_client(struct pakfire_client** client, struct cli_global_args* args); +int cli_run_client(struct cli_global_args* args, pakfire_client_ready_callback callback, void* data); #endif /* PAKFIRE_CLI_PAKFIRE_H */ diff --git a/src/cli/lib/repo_create.c b/src/cli/lib/repo_create.c index cf91e295..55847f92 100644 --- a/src/cli/lib/repo_create.c +++ b/src/cli/lib/repo_create.c @@ -84,28 +84,13 @@ static int ready_callback(struct pakfire_client* client, void* data) { int cli_repo_create(void* data, int argc, char* argv[]) { struct cli_global_args* global_args = data; struct cli_local_args local_args = {}; - struct pakfire_client* client = NULL; int r; // Parse the command line r = cli_parse(options, NULL, args_doc, doc, parse, 0, argc, argv, &local_args); if (r) - goto ERROR; - - // Connect to the build service - r = cli_setup_client(&client, global_args); - if (r < 0) - goto ERROR; - - // Set ready callback - pakfire_client_set_ready_callback(client, ready_callback, &local_args); + return r; // Run the client - r = pakfire_client_run(client); - -ERROR: - if (client) - pakfire_client_unref(client); - - return r; + return cli_run_client(global_args, ready_callback, &local_args); } diff --git a/src/cli/lib/upload_create.c b/src/cli/lib/upload_create.c index c31b2616..42f2f196 100644 --- a/src/cli/lib/upload_create.c +++ b/src/cli/lib/upload_create.c @@ -86,28 +86,13 @@ static int ready_callback(struct pakfire_client* client, void* data) { int cli_upload_create(void* data, int argc, char* argv[]) { struct cli_global_args* global_args = data; struct cli_local_args local_args = {}; - struct pakfire_client* client = NULL; int r; // Parse the command line r = cli_parse(NULL, NULL, args_doc, doc, parse, 0, argc, argv, &local_args); if (r) - goto ERROR; - - // Connect to the build service - r = cli_setup_client(&client, global_args); - if (r < 0) - goto ERROR; - - // Set ready callback - pakfire_client_set_ready_callback(client, ready_callback, &local_args); + return r; // Run the client - r = pakfire_client_run(client); - -ERROR: - if (client) - pakfire_client_unref(client); - - return r; + return cli_run_client(global_args, ready_callback, &local_args); } diff --git a/src/cli/lib/upload_delete.c b/src/cli/lib/upload_delete.c index 540786bd..79e65aee 100644 --- a/src/cli/lib/upload_delete.c +++ b/src/cli/lib/upload_delete.c @@ -77,28 +77,13 @@ static int ready_callback(struct pakfire_client* client, void* data) { int cli_upload_delete(void* data, int argc, char* argv[]) { struct cli_global_args* global_args = data; struct cli_local_args local_args = {}; - struct pakfire_client* client = NULL; int r; // Parse the command line r = cli_parse(NULL, NULL, args_doc, doc, parse, 0, argc, argv, &local_args); if (r) - goto ERROR; - - // Connect to the build service - r = cli_setup_client(&client, global_args); - if (r < 0) - goto ERROR; - - // Set ready callback - pakfire_client_set_ready_callback(client, ready_callback, &local_args); + return r; // Run the client - r = pakfire_client_run(client); - -ERROR: - if (client) - pakfire_client_unref(client); - - return r; + return cli_run_client(global_args, ready_callback, &local_args); } diff --git a/src/cli/lib/upload_list.c b/src/cli/lib/upload_list.c index 3444601e..caf8bbcb 100644 --- a/src/cli/lib/upload_list.c +++ b/src/cli/lib/upload_list.c @@ -41,28 +41,13 @@ static int ready_callback(struct pakfire_client* client, void* data) { int cli_upload_list(void* data, int argc, char* argv[]) { struct cli_global_args* global_args = data; - struct pakfire_client* client = NULL; int r; // Parse the command line r = cli_parse(NULL, NULL, NULL, doc, NULL, 0, argc, argv, NULL); if (r) - goto ERROR; - - // Connect to the build service - r = cli_setup_client(&client, global_args); - if (r < 0) - goto ERROR; - - // Set ready callback - pakfire_client_set_ready_callback(client, ready_callback, NULL); + return r; // Run the client - r = pakfire_client_run(client); - -ERROR: - if (client) - pakfire_client_unref(client); - - return r; + return cli_run_client(global_args, ready_callback, NULL); }