summaryrefslogtreecommitdiff
path: root/hyprpm/src/helpers/Sys.hpp
blob: 03d5a0de191ccf227afbbc0fc870f3f2b90d5cef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once

#include <string>
#include <optional>

namespace NSys {
    bool                       isSuperuser();
    int                        getUID();
    int                        getEUID();
    std::optional<std::string> findInPath(const std::string& exe);

    // NOLINTNEXTLINE
    namespace root {
        void cacheSudo();
        void dropSudo();

        //
        [[nodiscard("Discarding could lead to vulnerabilities and bugs")]] bool createDirectory(const std::string& path, const std::string& mode);
        [[nodiscard("Discarding could lead to vulnerabilities and bugs")]] bool removeRecursive(const std::string& path);
        [[nodiscard("Discarding could lead to vulnerabilities and bugs")]] bool install(const std::string& what, const std::string& where, const std::string& mode);

        // Do not use this unless absolutely necessary!
        std::string runAsSuperuserUnsafe(const std::string& cmd);
    };
};