annotate main.cpp @ 0:21b543c7aa14

Initial commit
author Yasuri <yasuri@charliesmp.net>
date Sun, 13 Sep 2026 19:19:56 +0000
parents
children 00b62a080354
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
1 #include <iostream>
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
2 #include <sstream>
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
3 #include "process.h"
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
4 std::string extract_pkgname(const std::string& fzf_line) {
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
5 std::istringstream iss(fzf_line);
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
6 std::string marker, pkgver;
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
7 iss >> marker >> pkgver;
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
8 return pkgver;
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
9 }
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
10 int main() {
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
11 char* const query_argv[] = { const_cast<char*>("xbps-query"), const_cast<char*>("-Rs"), const_cast<char*>(""), nullptr };
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
12 std::string package_list = run_piped("/usr/bin/xbps-query", query_argv, "");
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
13 char* const fzf_argv[] = { const_cast<char*>("fzf"), nullptr };
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
14 std::string result = run_piped("/usr/bin/fzf", fzf_argv, package_list);
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
15
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
16 // strip trailing newline fzf adds
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
17 if (!result.empty() && result.back() == '\n') {
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
18 result.pop_back();
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
19 }
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
20 std::string pkgname = extract_pkgname(result);
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
21 char* const install_argv[] = {
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
22 const_cast<char*>("doas"),
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
23 const_cast<char*>("xbps-install"),
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
24 const_cast<char*>("-Sy"),
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
25 pkgname.data(),
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
26 nullptr
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
27 };
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
28 std::string status = spawn(install_argv, "/usr/bin/doas");
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
29
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
30 return 0;
21b543c7aa14 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
31 }