view main.cpp @ 1:a17d9d25e9ea

add readme and license
author Yasuri <yasuri@charliesmp.net>
date Sun, 13 Sep 2026 19:25:50 +0000
parents 21b543c7aa14
children 00b62a080354
line wrap: on
line source

#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;
}