From 2485d00c4c40713b6cb3c39595d69ea2cf497b47 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 15 Jan 2026 20:26:54 +0100 Subject: Add a simple CLI instead of TUI --- cli/main.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 16 deletions(-) (limited to 'cli/main.cpp') diff --git a/cli/main.cpp b/cli/main.cpp index 5502800..8a8a377 100644 --- a/cli/main.cpp +++ b/cli/main.cpp @@ -7,36 +7,65 @@ module; #include #include +#include -#include -#include -#include #include import katja.database; import katja.repository; import katja.sbo; -import katja.page; +import katja.configuration; + +static void get_updates(std::shared_ptr repository, katja::package_database&& installed_database) +{ + const std::vector packages = repository->get_updates(installed_database); + + for (const auto& package_identifier : packages) + { + std::cout << package_identifier.to_string() << std::endl; + } + std::cout << std::endl << "Updates " << '(' << packages.size() << ')' << std::endl; +} + +static void search_names(std::shared_ptr repository, const std::string& needle) +{ + const std::vector packages = repository->search_names("x86-64", needle); + + for (const auto& package_identifier : packages) + { + std::cout << package_identifier.to_string() << std::endl; + } +} int main(int argc, const char **argv) { - auto configuration = toml::parse("katja.toml"); + katja::configuration configuration = katja::read_configuration(); katja::package_database installed_database = katja::read_installed_database(); - for (const auto& [repository_name, repository_value] : configuration.as_table()) + if (argc == 1) { - std::filesystem::path slackbuild_repository{ repository_value.at("path").as_string() }; - auto repository = std::make_shared(slackbuild_repository); - - auto screen = ftxui::ScreenInteractive::Fullscreen(); + return EXIT_FAILURE; + } + if (strcmp("updates", argv[1]) == 0) + { + for (const auto& [repository_name, repository_configuration] : configuration) + { + std::filesystem::path slackbuild_repository{ repository_configuration.path }; + auto repository = std::make_shared(slackbuild_repository); - auto container = Screen(std::vector>{ - { "Home", ftxui::Make() }, - { "Updates", ftxui::Make(repository, std::move(installed_database)) }, - { "Search", ftxui::Make(repository, "x86-64") } - }, screen.ExitLoopClosure()); + get_updates(repository, std::move(installed_database)); + } + } + else if (strcmp("search", argv[1]) == 0 && argc == 3) + { + for (const auto& [repository_name, repository_configuration] : configuration) + { + std::filesystem::path slackbuild_repository{ repository_configuration.path }; + auto repository = std::make_shared(slackbuild_repository); - screen.Loop(container); + search_names(repository, std::string(argv[2])); + } } + return EXIT_SUCCESS; } -- cgit v1.2.3