#ifndef PACKAGE_TOOL_H
#define PACKAGE_TOOL_H

#include <thread>

#include "Utils/command_util.h"
#include "Utils/file_util.h"

#include "stacer-core_global.h"

class STACERCORESHARED_EXPORT PackageTool
{
public:
    enum PackageTools {
        APT,        // debian
        DNF,        // fedora
        YUM,        // fedora
        PACMAN,     // arch
        ZYPPER,     // opensuse
        UNKNOWN
    };

public:
    // APT
    static QFileInfoList getDpkgPackageCaches();
    static QStringList getDpkgPackages();
    static bool dpkgRemovePackages(QStringList packages);

    // DNF - YUM
    static QStringList getRpmPackages();
    static bool dnfRemovePackages(QStringList packages);
    static bool yumRemovePackages(QStringList packages);

    // Arch
    static QFileInfoList getPacmanPackageCaches();
    static QStringList getPacmanPackages();
    static bool pacmanRemovePackages(QStringList packages);

    // Snap
    static QStringList getSnapPackages();
    static bool snapRemovePackages(QStringList packages);

    static const PackageTools currentPackageTool;
};

#endif // PACKAGE_TOOL_H
