#include "./utilities.h" #include "./config.h" #include #include #include #include #include #include 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(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