From a5618e22ae47e14760d1cfc5af285249c72df502 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 21 Oct 2023 09:53:49 +0000 Subject: [PATCH] cli: daemon: Add scaffolding Signed-off-by: Michael Tremer --- .gitignore | 1 + Makefile.am | 22 +++++++++++ src/cli/pakfire-daemon.c | 83 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 src/cli/pakfire-daemon.c diff --git a/.gitignore b/.gitignore index 52d8643e3..9bb476be1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /contrib/pakfire.nm /pakfire /pakfire-builder +/pakfire-daemon /src/pakfire/__version__.py /src/scripts/pakfire-daemon /src/systemd/*.service diff --git a/Makefile.am b/Makefile.am index 039c18d6b..d80f50d7e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -452,6 +452,28 @@ pakfire_client_LDADD = \ # ------------------------------------------------------------------------------ +bin_PROGRAMS += \ + pakfire-daemon + +pakfire_daemon_SOURCES = \ + src/cli/pakfire-daemon.c + +pakfire_daemon_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -I$(top_srcdir)/src/libpakfire/include + +pakfire_daemon_CFLAGS = \ + $(AM_CFLAGS) + +pakfire_daemon_LDFLAGS = \ + $(AM_LDFLAGS) + +pakfire_daemon_LDADD = \ + libpakfire.la \ + libcli.la + +# ------------------------------------------------------------------------------ + noinst_LTLIBRARIES += \ libcli.la diff --git a/src/cli/pakfire-daemon.c b/src/cli/pakfire-daemon.c new file mode 100644 index 000000000..e903bf686 --- /dev/null +++ b/src/cli/pakfire-daemon.c @@ -0,0 +1,83 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2023 Pakfire development team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +#############################################################################*/ + +#include +#include + +#include + +#include "lib/client-build.h" +#include "lib/command.h" +#include "lib/config.h" +#include "lib/pakfire.h" +#include "lib/progressbar.h" +#include "lib/repo.h" +#include "lib/upload.h" + +const char* argp_program_version = PACKAGE_VERSION; + +static const char* doc = "The Pakfire Build Daemon"; + +enum { + OPT_DEBUG = 1, +}; + +static struct argp_option options[] = { + { "debug", OPT_DEBUG, NULL, 0, "Run in debug mode", 0 }, + { NULL }, +}; + +static error_t parse(int key, char* arg, struct argp_state* state, void* data) { + struct pakfire_ctx* ctx = data; + + switch (key) { + case OPT_DEBUG: + pakfire_ctx_set_log_level(ctx, LOG_DEBUG); + break; + + default: + return ARGP_ERR_UNKNOWN; + } + + return 0; +} + +int main(int argc, char* argv[]) { + struct pakfire_ctx* ctx = NULL; + int r; + + // Setup the context + r = pakfire_ctx_create(&ctx, NULL); + if (r) + goto ERROR; + + // Parse the command line and run any commands + r = cli_parse(options, NULL, NULL, doc, parse, argc, argv, ctx); + if (r) + goto ERROR; + + // XXX Do the work + +ERROR: + if (ctx) + pakfire_ctx_unref(ctx); + + return r; +} -- 2.39.5