diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-01-15 20:26:54 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-01-15 20:26:54 +0100 |
| commit | 2485d00c4c40713b6cb3c39595d69ea2cf497b47 (patch) | |
| tree | 3661ae4c7d131dcb2762581ceb6eca8370d2e341 /cli/main.cpp | |
| parent | dd97107aa81e1137c80602c044b3805bf4ffda56 (diff) | |
| download | katja-2485d00c4c40713b6cb3c39595d69ea2cf497b47.tar.gz | |
Add a simple CLI instead of TUI
Diffstat (limited to 'cli/main.cpp')
| -rw-r--r-- | cli/main.cpp | 61 |
1 files changed, 45 insertions, 16 deletions
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 <filesystem> #include <memory> +#include <iostream> -#include <ftxui/component/screen_interactive.hpp> -#include <ftxui/dom/elements.hpp> -#include <ftxui/component/component.hpp> #include <toml.hpp> import katja.database; import katja.repository; import katja.sbo; -import katja.page; +import katja.configuration; + +static void get_updates(std::shared_ptr<katja::repository> repository, katja::package_database&& installed_database) +{ + const std::vector<katja::package_identifier> 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<katja::repository> repository, const std::string& needle) +{ + const std::vector<katja::package_identifier> 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<katja::sbo_repository>(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<katja::sbo_repository>(slackbuild_repository); - auto container = Screen(std::vector<std::pair<std::string, katja::Page>>{ - { "Home", ftxui::Make<katja::WelcomePage>() }, - { "Updates", ftxui::Make<katja::UpdatesPage>(repository, std::move(installed_database)) }, - { "Search", ftxui::Make<katja::SearchPage>(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<katja::sbo_repository>(slackbuild_repository); - screen.Loop(container); + search_names(repository, std::string(argv[2])); + } } + return EXIT_SUCCESS; } |
