230 lines
6.0 KiB
C++
230 lines
6.0 KiB
C++
#include "./utilities.h"
|
|
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
#include <QStringList>
|
|
#include <QFileInfo>
|
|
|
|
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
namespace RepoIndex {
|
|
|
|
namespace Utilities {
|
|
|
|
/*!
|
|
* \brief Returns the package names of the specified \a dependencyList.
|
|
*/
|
|
list<string> getNames(DependencyList dependencyList)
|
|
{
|
|
list<string> res;
|
|
for(auto dependency : dependencyList) {
|
|
res.push_back(dependency->name);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns string representations for the specified \a sigLevel.
|
|
*/
|
|
QJsonArray sigLevelStrings(alpm_siglevel_t sigLevel)
|
|
{
|
|
QJsonArray options;
|
|
if(sigLevel & ALPM_SIG_PACKAGE) {
|
|
options << QStringLiteral("package");
|
|
}
|
|
if(sigLevel & ALPM_SIG_PACKAGE_OPTIONAL) {
|
|
options << QStringLiteral("package optional");
|
|
}
|
|
if(sigLevel & ALPM_SIG_PACKAGE_MARGINAL_OK) {
|
|
options << QStringLiteral("package marginal ok");
|
|
}
|
|
if(sigLevel & ALPM_SIG_PACKAGE_UNKNOWN_OK) {
|
|
options << QStringLiteral("package unknown ok");
|
|
}
|
|
if(sigLevel & ALPM_SIG_DATABASE) {
|
|
options << QStringLiteral("database");
|
|
}
|
|
if(sigLevel & ALPM_SIG_DATABASE_OPTIONAL) {
|
|
options << QStringLiteral("database optional");
|
|
}
|
|
if(sigLevel & ALPM_SIG_DATABASE_MARGINAL_OK) {
|
|
options << QStringLiteral("database marginal ok");
|
|
}
|
|
if(sigLevel & ALPM_SIG_DATABASE_UNKNOWN_OK) {
|
|
options << QStringLiteral("database unknown ok");
|
|
}
|
|
if(sigLevel & ALPM_SIG_PACKAGE_SET) {
|
|
options << QStringLiteral("package set");
|
|
}
|
|
if(sigLevel & ALPM_SIG_PACKAGE_TRUST_SET) {
|
|
options << QStringLiteral("package trust set");
|
|
}
|
|
if(sigLevel & ALPM_SIG_USE_DEFAULT) {
|
|
options << QStringLiteral("use default");
|
|
}
|
|
return options;
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns string representations for the specified database \a usage.
|
|
*/
|
|
QJsonArray usageStrings(alpm_db_usage_t usage)
|
|
{
|
|
QJsonArray strings;
|
|
if(usage & ALPM_DB_USAGE_SYNC) {
|
|
strings << QStringLiteral("refreshing");
|
|
}
|
|
if(usage & ALPM_DB_USAGE_SEARCH) {
|
|
strings << QStringLiteral("searching");
|
|
}
|
|
if(usage & ALPM_DB_USAGE_INSTALL) {
|
|
strings << QStringLiteral("installing");
|
|
}
|
|
if(usage & ALPM_DB_USAGE_UPGRADE) {
|
|
strings << QStringLiteral("upgrading");
|
|
}
|
|
return strings;
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns the string representation for the specified \a sigStatus.
|
|
*/
|
|
QString sigStatusString(alpm_sigstatus_t sigStatus)
|
|
{
|
|
switch(sigStatus) {
|
|
case ALPM_SIGSTATUS_VALID:
|
|
return QStringLiteral("valid");
|
|
case ALPM_SIGSTATUS_KEY_EXPIRED:
|
|
return QStringLiteral("key expired");
|
|
case ALPM_SIGSTATUS_SIG_EXPIRED:
|
|
return QStringLiteral("sig expired");
|
|
case ALPM_SIGSTATUS_KEY_UNKNOWN:
|
|
return QStringLiteral("key unknown");
|
|
case ALPM_SIGSTATUS_KEY_DISABLED:
|
|
return QStringLiteral("key disabled");
|
|
default:
|
|
return QStringLiteral("invalid");
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns the string representation for the specified \a validationMethods.
|
|
*/
|
|
QJsonArray validationMethodsStrings(alpm_pkgvalidation_t validationMethods)
|
|
{
|
|
QJsonArray jsonArray;
|
|
if(validationMethods & 0x1) {
|
|
jsonArray << QStringLiteral("none");
|
|
}
|
|
if(validationMethods & 0x2) {
|
|
jsonArray << QStringLiteral("MD5");
|
|
}
|
|
if(validationMethods & 0x4) {
|
|
jsonArray << QStringLiteral("SHA256");
|
|
}
|
|
if(validationMethods & 0x8) {
|
|
jsonArray << QStringLiteral("signature");
|
|
}
|
|
if(jsonArray.empty()) {
|
|
jsonArray << QStringLiteral("unknown");
|
|
}
|
|
return jsonArray;
|
|
}
|
|
|
|
QJsonArray qjarry(StringList list)
|
|
{
|
|
QJsonArray jsonArray;
|
|
for(const char *str : list) {
|
|
jsonArray << qstr(str);
|
|
}
|
|
return jsonArray;
|
|
}
|
|
|
|
QJsonArray qjarry(DependencyList list)
|
|
{
|
|
QJsonArray jsonArray;
|
|
for(alpm_depend_t *dep : list) {
|
|
QJsonObject depObj;
|
|
depObj.insert(QStringLiteral("name"), dep->name);
|
|
depObj.insert(QStringLiteral("desc"), dep->desc);
|
|
depObj.insert(QStringLiteral("ver"), dep->version);
|
|
switch(dep->mod) {
|
|
case ALPM_DEP_MOD_ANY:
|
|
depObj.insert(QStringLiteral("mod"), QStringLiteral("any"));
|
|
break;
|
|
case ALPM_DEP_MOD_EQ:
|
|
depObj.insert(QStringLiteral("mod"), QStringLiteral("eq"));
|
|
break;
|
|
case ALPM_DEP_MOD_GE:
|
|
depObj.insert(QStringLiteral("mod"), QStringLiteral("ge"));
|
|
break;
|
|
case ALPM_DEP_MOD_LE:
|
|
depObj.insert(QStringLiteral("mod"), QStringLiteral("le"));
|
|
break;
|
|
case ALPM_DEP_MOD_GT:
|
|
depObj.insert(QStringLiteral("mod"), QStringLiteral("gt"));
|
|
break;
|
|
case ALPM_DEP_MOD_LT:
|
|
depObj.insert(QStringLiteral("mod"), QStringLiteral("lt"));
|
|
break;
|
|
}
|
|
jsonArray << depObj;
|
|
}
|
|
return jsonArray;
|
|
}
|
|
|
|
QJsonArray qjarry(_alpm_pkgvalidation_t validation)
|
|
{
|
|
QJsonArray jsonArray;
|
|
if(validation & 0x1) {
|
|
jsonArray << QStringLiteral("none");
|
|
}
|
|
if(validation & 0x2) {
|
|
jsonArray << QStringLiteral("MD5");
|
|
}
|
|
if(validation & 0x4) {
|
|
jsonArray << QStringLiteral("SHA256");
|
|
}
|
|
if(validation & 0x8) {
|
|
jsonArray << QStringLiteral("signature");
|
|
}
|
|
if(jsonArray.empty()) {
|
|
jsonArray << QStringLiteral("unknown");
|
|
}
|
|
return jsonArray;
|
|
}
|
|
|
|
QStringList qstrlist(StringList list)
|
|
{
|
|
QStringList strings;
|
|
for(const auto *str : list) {
|
|
strings << qstr(str);
|
|
}
|
|
return strings;
|
|
}
|
|
|
|
void printValues(ostream &output, const char *label, const QStringList &values)
|
|
{
|
|
output << label << ':';
|
|
for(const auto &value : values) {
|
|
output << ' ' << value.toLocal8Bit().data();
|
|
}
|
|
output << endl;
|
|
}
|
|
|
|
void printBashArray(ostream &output, const char *name, const QStringList &values)
|
|
{
|
|
output << "export " << name << '=' << '(';
|
|
for(const auto &value : values) {
|
|
output << ' ' << '\'' << value.toLocal8Bit().data() << '\'';
|
|
}
|
|
output << ' ' << ')' << endl;
|
|
}
|
|
|
|
}
|
|
|
|
} // namespace Alpm
|
|
|