Added plantxt export

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97
2023-06-25 14:11:41 +03:00
parent ef0752972a
commit 84c63f4f01
14 changed files with 282 additions and 176 deletions

View File

@ -70,11 +70,17 @@ auto ProviderCapabilities::hash(ResourceProvider p, QIODevice* device, QString t
}
QCryptographicHash hash(algo);
if(!hash.addData(device))
if (!hash.addData(device))
qCritical() << "Failed to read JAR to create hash!";
Q_ASSERT(hash.result().length() == hash.hashLength(algo));
return { hash.result().toHex() };
}
QString getMetaURL(ResourceProvider provider, QVariant projectID)
{
return ((provider == ModPlatform::ResourceProvider::FLAME) ? "https://www.curseforge.com/projects/" : "https://modrinth.com/mod/") +
projectID.toString();
}
} // namespace ModPlatform

View File

@ -144,6 +144,7 @@ inline auto getOverrideDeps() -> QList<OverrideDep>
{ "qvIfYCYJ", "P7dR8mSH", "API", ModPlatform::ResourceProvider::MODRINTH },
{ "lwVhp9o5", "Ha28R6CL", "KotlinLibraries", ModPlatform::ResourceProvider::MODRINTH } };
};
QString getMetaURL(ResourceProvider provider, QVariant projectID);
} // namespace ModPlatform

View File

@ -15,11 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "ExportModsToStringTask.h"
#include "modplatform/ModIndex.h"
#include "ExportToModList.h"
namespace ExportToString {
QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData extraData)
namespace ExportToModList {
QString ExportToModList(QList<Mod*> mods, Formats format, OptionalData extraData)
{
switch (format) {
case HTML: {
@ -28,12 +27,7 @@ QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData ex
auto meta = mod->metadata();
auto modName = mod->name();
if (extraData & Url) {
auto url = mod->homeurl();
if (meta != nullptr) {
url = (meta->provider == ModPlatform::ResourceProvider::FLAME ? "https://www.curseforge.com/minecraft/mc-mods/"
: "https://modrinth.com/mod/") +
meta->slug.remove(".pw.toml");
}
auto url = mod->metaurl();
if (!url.isEmpty())
modName = QString("<a href=\"%1\">%2</a>").arg(url, modName);
}
@ -49,7 +43,7 @@ QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData ex
line += " by " + mod->authors().join(", ");
lines.append(QString("<ul>%1</ul>").arg(line));
}
return QString("<html><body>\n\t%1\n</body></html>").arg(lines.join("\n\t"));
return QString("<html><body><li>\n\t%1\n</li></body></html>").arg(lines.join("\n\t"));
}
case MARKDOWN: {
QStringList lines;
@ -57,12 +51,7 @@ QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData ex
auto meta = mod->metadata();
auto modName = mod->name();
if (extraData & Url) {
auto url = mod->homeurl();
if (meta != nullptr) {
url = (meta->provider == ModPlatform::ResourceProvider::FLAME ? "https://www.curseforge.com/minecraft/mc-mods/"
: "https://modrinth.com/mod/") +
meta->slug.remove(".pw.toml");
}
auto url = mod->metaurl();
if (!url.isEmpty())
modName = QString("[%1](%2)").arg(modName, url);
}
@ -76,6 +65,31 @@ QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData ex
}
if (extraData & Authors && !mod->authors().isEmpty())
line += " by " + mod->authors().join(", ");
lines << "- " + line;
}
return lines.join("\n");
}
case PLAINTXT: {
QStringList lines;
for (auto mod : mods) {
auto meta = mod->metadata();
auto modName = mod->name();
auto line = "name: " + modName + ";";
if (extraData & Url) {
auto url = mod->metaurl();
if (!url.isEmpty())
line += " url: " + url + ";";
}
if (extraData & Version) {
auto ver = mod->version();
if (ver.isEmpty() && meta != nullptr)
ver = meta->version().toString();
if (!ver.isEmpty())
line += " version: " + QString("[%1]").arg(ver) + ";";
}
if (extraData & Authors && !mod->authors().isEmpty())
line += " authors " + mod->authors().join(", ") + ";";
lines << line;
}
return lines.join("\n");
@ -86,19 +100,13 @@ QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData ex
}
}
QString ExportModsToStringTask(QList<Mod*> mods, QString lineTemplate)
QString ExportToModList(QList<Mod*> mods, QString lineTemplate)
{
QStringList lines;
for (auto mod : mods) {
auto meta = mod->metadata();
auto modName = mod->name();
auto url = mod->homeurl();
if (meta != nullptr) {
url = (meta->provider == ModPlatform::ResourceProvider::FLAME ? "https://www.curseforge.com/minecraft/mc-mods/"
: "https://modrinth.com/mod/") +
meta->slug.remove(".pw.toml");
}
auto url = mod->metaurl();
auto ver = mod->version();
if (ver.isEmpty() && meta != nullptr)
ver = meta->version().toString();
@ -111,4 +119,4 @@ QString ExportModsToStringTask(QList<Mod*> mods, QString lineTemplate)
}
return lines.join("\n");
}
} // namespace ExportToString
} // namespace ExportToModList

View File

@ -20,14 +20,14 @@
#include <QString>
#include "minecraft/mod/Mod.h"
namespace ExportToString {
namespace ExportToModList {
enum Formats { HTML, MARKDOWN };
enum Formats { HTML, MARKDOWN, PLAINTXT, CUSTOM };
enum OptionalData {
Authors = 1 << 0,
Url = 1 << 1,
Version = 1 << 2,
};
QString ExportModsToStringTask(QList<Mod*> mods, Formats format, OptionalData extraData);
QString ExportModsToStringTask(QList<Mod*> mods, QString lineTemplate);
} // namespace ExportToString
QString ExportToModList(QList<Mod*> mods, Formats format, OptionalData extraData);
QString ExportToModList(QList<Mod*> mods, QString lineTemplate);
} // namespace ExportToModList