Mercurial > xbps-search-tv
diff main.cpp @ 0:21b543c7aa14
Initial commit
| author | Yasuri <yasuri@charliesmp.net> |
|---|---|
| date | Sun, 13 Sep 2026 19:19:56 +0000 |
| parents | |
| children | 00b62a080354 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Sep 13 19:19:56 2026 +0000 @@ -0,0 +1,31 @@ +#include <iostream> +#include <sstream> +#include "process.h" +std::string extract_pkgname(const std::string& fzf_line) { + std::istringstream iss(fzf_line); + std::string marker, pkgver; + iss >> marker >> pkgver; + return pkgver; +} +int main() { + char* const query_argv[] = { const_cast<char*>("xbps-query"), const_cast<char*>("-Rs"), const_cast<char*>(""), nullptr }; + std::string package_list = run_piped("/usr/bin/xbps-query", query_argv, ""); + char* const fzf_argv[] = { const_cast<char*>("fzf"), nullptr }; + std::string result = run_piped("/usr/bin/fzf", fzf_argv, package_list); + + // strip trailing newline fzf adds + if (!result.empty() && result.back() == '\n') { + result.pop_back(); + } + std::string pkgname = extract_pkgname(result); + char* const install_argv[] = { + const_cast<char*>("doas"), + const_cast<char*>("xbps-install"), + const_cast<char*>("-Sy"), + pkgname.data(), + nullptr + }; + std::string status = spawn(install_argv, "/usr/bin/doas"); + + return 0; +}
