repoindex/alpm/utilities.cpp

180 lines
4.8 KiB
C++
Raw Normal View History

#include "./utilities.h"
2015-12-25 01:58:19 +01:00
#include "./config.h"
#include <c++utilities/conversion/stringconversion.h>
2015-08-10 22:46:01 +02:00
2015-09-04 14:37:01 +02:00
#include <QJsonObject>
2015-08-10 22:46:01 +02:00
#include <QJsonArray>
2015-09-04 14:37:01 +02:00
#include <QStringList>
#include <QFileInfo>
2015-08-10 22:46:01 +02:00
#include <iostream>
2015-08-10 22:46:01 +02:00
using namespace std;
namespace RepoIndex {
2015-08-10 22:46:01 +02:00
namespace Utilities {
/*!
* \brief Returns string representations for the specified \a sigLevel.
*/
2016-02-14 23:48:43 +01:00
QJsonArray sigLevelStrings(SignatureLevel sigLevel)
2015-08-10 22:46:01 +02:00
{
QJsonArray options;
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::Package) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("package");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::PackageOptional) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("package optional");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::PackageMarginalOk) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("package marginal ok");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::PackageUnknownOk) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("package unknown ok");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::Database) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("database");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::DatabaseOptional) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("database optional");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::DatabaseMarginalOk) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("database marginal ok");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::DatabaseUnknownOk) {
2015-08-10 22:46:01 +02:00
options << QStringLiteral("database unknown ok");
}
2016-02-14 23:48:43 +01:00
if(sigLevel & SignatureLevel::UseDefault) {
options << QStringLiteral("default");
2015-08-10 22:46:01 +02:00
}
return options;
}
/*!
* \brief Returns string representations for the specified database \a usage.
*/
2016-02-14 23:48:43 +01:00
QJsonArray usageStrings(RepositoryUsage usage)
2015-08-10 22:46:01 +02:00
{
QJsonArray strings;
2016-02-14 23:48:43 +01:00
if(usage & RepositoryUsage::Sync) {
2015-08-10 22:46:01 +02:00
strings << QStringLiteral("refreshing");
}
2016-02-14 23:48:43 +01:00
if(usage & RepositoryUsage::Search) {
2015-08-10 22:46:01 +02:00
strings << QStringLiteral("searching");
}
2016-02-14 23:48:43 +01:00
if(usage & RepositoryUsage::Install) {
2015-08-10 22:46:01 +02:00
strings << QStringLiteral("installing");
}
2016-02-14 23:48:43 +01:00
if(usage & RepositoryUsage::Upgrade) {
2015-08-10 22:46:01 +02:00
strings << QStringLiteral("upgrading");
}
2016-02-14 23:48:43 +01:00
if(strings.empty()) {
strings << QStringLiteral("none");
}
2015-08-10 22:46:01 +02:00
return strings;
}
/*!
* \brief Returns the string representation for the specified \a sigStatus.
*/
2016-02-14 23:48:43 +01:00
QString sigStatusString(SignatureStatus sigStatus)
2015-08-10 22:46:01 +02:00
{
switch(sigStatus) {
2016-02-14 23:48:43 +01:00
case SignatureStatus::Valid:
2015-08-10 22:46:01 +02:00
return QStringLiteral("valid");
2016-02-14 23:48:43 +01:00
case SignatureStatus::KeyExpired:
2015-08-10 22:46:01 +02:00
return QStringLiteral("key expired");
2016-02-14 23:48:43 +01:00
case SignatureStatus::SigExpired:
2015-08-10 22:46:01 +02:00
return QStringLiteral("sig expired");
2016-02-14 23:48:43 +01:00
case SignatureStatus::KeyUnknown:
2015-08-10 22:46:01 +02:00
return QStringLiteral("key unknown");
2016-02-14 23:48:43 +01:00
case SignatureStatus::KeyDisabled:
2015-08-10 22:46:01 +02:00
return QStringLiteral("key disabled");
default:
return QStringLiteral("invalid");
}
}
2015-09-04 14:37:01 +02:00
/*!
* \brief Returns the string representation for the specified \a validationMethods.
*/
2016-02-14 23:48:43 +01:00
QJsonArray validationMethodsStrings(PackageValidation validationMethods)
2015-09-04 14:37:01 +02:00
{
QJsonArray jsonArray;
2016-02-14 23:48:43 +01:00
if(validationMethods & PackageValidation::None) {
2015-09-04 14:37:01 +02:00
jsonArray << QStringLiteral("none");
}
2016-02-14 23:48:43 +01:00
if(validationMethods & PackageValidation::Md5Sum) {
2015-09-04 14:37:01 +02:00
jsonArray << QStringLiteral("MD5");
}
2016-02-14 23:48:43 +01:00
if(validationMethods & PackageValidation::Sha256Sum) {
2015-09-04 14:37:01 +02:00
jsonArray << QStringLiteral("SHA256");
}
2016-02-25 22:53:33 +01:00
if(validationMethods & PackageValidation::PgpSignature) {
jsonArray << QStringLiteral("PGP signature");
2015-09-04 14:37:01 +02:00
}
2016-02-15 01:27:50 +01:00
//if(jsonArray.empty()) {
// jsonArray << QStringLiteral("unknown");
//}
2015-09-04 14:37:01 +02:00
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;
}
2015-12-25 01:58:19 +01:00
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;
}
}
2016-02-14 23:48:43 +01:00
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);
}
}
}
2015-08-10 22:46:01 +02:00
}
} // namespace Alpm