180 lines
4.8 KiB
C++
180 lines
4.8 KiB
C++
#include "./utilities.h"
|
|
#include "./config.h"
|
|
|
|
#include <c++utilities/conversion/stringconversion.h>
|
|
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
#include <QStringList>
|
|
#include <QFileInfo>
|
|
|
|
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
namespace RepoIndex {
|
|
|
|
namespace Utilities {
|
|
|
|
/*!
|
|
* \brief Returns string representations for the specified \a sigLevel.
|
|
*/
|
|
QJsonArray sigLevelStrings(SignatureLevel sigLevel)
|
|
{
|
|
QJsonArray options;
|
|
if(sigLevel & SignatureLevel::Package) {
|
|
options << QStringLiteral("package");
|
|
}
|
|
if(sigLevel & SignatureLevel::PackageOptional) {
|
|
options << QStringLiteral("package optional");
|
|
}
|
|
if(sigLevel & SignatureLevel::PackageMarginalOk) {
|
|
options << QStringLiteral("package marginal ok");
|
|
}
|
|
if(sigLevel & SignatureLevel::PackageUnknownOk) {
|
|
options << QStringLiteral("package unknown ok");
|
|
}
|
|
if(sigLevel & SignatureLevel::Database) {
|
|
options << QStringLiteral("database");
|
|
}
|
|
if(sigLevel & SignatureLevel::DatabaseOptional) {
|
|
options << QStringLiteral("database optional");
|
|
}
|
|
if(sigLevel & SignatureLevel::DatabaseMarginalOk) {
|
|
options << QStringLiteral("database marginal ok");
|
|
}
|
|
if(sigLevel & SignatureLevel::DatabaseUnknownOk) {
|
|
options << QStringLiteral("database unknown ok");
|
|
}
|
|
if(sigLevel & SignatureLevel::UseDefault) {
|
|
options << QStringLiteral("default");
|
|
}
|
|
return options;
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns string representations for the specified database \a usage.
|
|
*/
|
|
QJsonArray usageStrings(RepositoryUsage usage)
|
|
{
|
|
QJsonArray strings;
|
|
if(usage & RepositoryUsage::Sync) {
|
|
strings << QStringLiteral("refreshing");
|
|
}
|
|
if(usage & RepositoryUsage::Search) {
|
|
strings << QStringLiteral("searching");
|
|
}
|
|
if(usage & RepositoryUsage::Install) {
|
|
strings << QStringLiteral("installing");
|
|
}
|
|
if(usage & RepositoryUsage::Upgrade) {
|
|
strings << QStringLiteral("upgrading");
|
|
}
|
|
if(strings.empty()) {
|
|
strings << QStringLiteral("none");
|
|
}
|
|
return strings;
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns the string representation for the specified \a sigStatus.
|
|
*/
|
|
QString sigStatusString(SignatureStatus sigStatus)
|
|
{
|
|
switch(sigStatus) {
|
|
case SignatureStatus::Valid:
|
|
return QStringLiteral("valid");
|
|
case SignatureStatus::KeyExpired:
|
|
return QStringLiteral("key expired");
|
|
case SignatureStatus::SigExpired:
|
|
return QStringLiteral("sig expired");
|
|
case SignatureStatus::KeyUnknown:
|
|
return QStringLiteral("key unknown");
|
|
case SignatureStatus::KeyDisabled:
|
|
return QStringLiteral("key disabled");
|
|
default:
|
|
return QStringLiteral("invalid");
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns the string representation for the specified \a validationMethods.
|
|
*/
|
|
QJsonArray validationMethodsStrings(PackageValidation validationMethods)
|
|
{
|
|
QJsonArray jsonArray;
|
|
if(validationMethods & PackageValidation::None) {
|
|
jsonArray << QStringLiteral("none");
|
|
}
|
|
if(validationMethods & PackageValidation::Md5Sum) {
|
|
jsonArray << QStringLiteral("MD5");
|
|
}
|
|
if(validationMethods & PackageValidation::Sha256Sum) {
|
|
jsonArray << QStringLiteral("SHA256");
|
|
}
|
|
if(validationMethods & PackageValidation::PgpSignature) {
|
|
jsonArray << QStringLiteral("PGP signature");
|
|
}
|
|
//if(jsonArray.empty()) {
|
|
// jsonArray << QStringLiteral("unknown");
|
|
//}
|
|
return jsonArray;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
void printError(const exception &ex)
|
|
{
|
|
string message(ex.what());
|
|
printError(message);
|
|
}
|
|
|
|
void printError(const QString &message)
|
|
{
|
|
string msg(message.toStdString());
|
|
printError(msg);
|
|
}
|
|
|
|
void printError(string &message)
|
|
{
|
|
if(useShSyntax) {
|
|
ConversionUtilities::findAndReplace<string>(message, "'", "\'");
|
|
cerr << "export REPOINDEX_ERROR='" << message << '\'' << endl;
|
|
} else {
|
|
cerr << shchar << "Error: " << message << endl;
|
|
}
|
|
}
|
|
|
|
void stripVersion(QString &packageName)
|
|
{
|
|
int lastHyphen = packageName.lastIndexOf(QChar('-'));
|
|
if(lastHyphen > 0) {
|
|
packageName.remove(lastHyphen, packageName.size() - lastHyphen);
|
|
int lastHyphen = packageName.lastIndexOf(QChar('-'));
|
|
if(lastHyphen > 0) {
|
|
packageName.remove(lastHyphen, packageName.size() - lastHyphen);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
} // namespace Alpm
|
|
|