summaryrefslogtreecommitdiff
path: root/cli/main.cpp
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-01-15 20:26:54 +0100
committerEugen Wissner <belka@caraus.de>2026-01-15 20:26:54 +0100
commit2485d00c4c40713b6cb3c39595d69ea2cf497b47 (patch)
tree3661ae4c7d131dcb2762581ceb6eca8370d2e341 /cli/main.cpp
parentdd97107aa81e1137c80602c044b3805bf4ffda56 (diff)
downloadkatja-2485d00c4c40713b6cb3c39595d69ea2cf497b47.tar.gz
Add a simple CLI instead of TUI
Diffstat (limited to 'cli/main.cpp')
-rw-r--r--cli/main.cpp61
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;
}