aboutsummaryrefslogtreecommitdiff
path: root/api/logic/minecraft/GradleSpecifier.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-04-01 03:50:28 +0200
committerPetr Mrázek <peterix@gmail.com>2021-04-01 03:50:28 +0200
commit7246d8a77906d421de4eada95d90843b1b94326b (patch)
treea3e0132e546b11c1bd72fdf691346760686cba69 /api/logic/minecraft/GradleSpecifier.h
parentfbe9d158754bcdd12aa8889639bdbac4c125f1c9 (diff)
downloadPrismLauncher-7246d8a77906d421de4eada95d90843b1b94326b.tar.gz
PrismLauncher-7246d8a77906d421de4eada95d90843b1b94326b.tar.bz2
PrismLauncher-7246d8a77906d421de4eada95d90843b1b94326b.zip
NOISSUE improve GradleSpecifier and handle broken library names
Diffstat (limited to 'api/logic/minecraft/GradleSpecifier.h')
-rw-r--r--api/logic/minecraft/GradleSpecifier.h42
1 files changed, 25 insertions, 17 deletions
diff --git a/api/logic/minecraft/GradleSpecifier.h b/api/logic/minecraft/GradleSpecifier.h
index 959325c6..60e0a726 100644
--- a/api/logic/minecraft/GradleSpecifier.h
+++ b/api/logic/minecraft/GradleSpecifier.h
@@ -18,32 +18,35 @@ struct GradleSpecifier
{
/*
org.gradle.test.classifiers : service : 1.0 : jdk15 @ jar
- DEBUG 0 "org.gradle.test.classifiers:service:1.0:jdk15@jar"
- DEBUG 1 "org.gradle.test.classifiers"
- DEBUG 2 "service"
- DEBUG 3 "1.0"
- DEBUG 4 ":jdk15"
- DEBUG 5 "jdk15"
- DEBUG 6 "@jar"
- DEBUG 7 "jar"
+ 0 "org.gradle.test.classifiers:service:1.0:jdk15@jar"
+ 1 "org.gradle.test.classifiers"
+ 2 "service"
+ 3 "1.0"
+ 4 "jdk15"
+ 5 "jar"
*/
- QRegExp matcher("([^:@]+):([^:@]+):([^:@]+)" "(:([^:@]+))?" "(@([^:@]+))?");
+ QRegExp matcher("([^:@]+):([^:@]+):([^:@]+)" "(?::([^:@]+))?" "(?:@([^:@]+))?");
m_valid = matcher.exactMatch(value);
+ if(!m_valid) {
+ m_invalidValue = value;
+ return *this;
+ }
auto elements = matcher.capturedTexts();
m_groupId = elements[1];
m_artifactId = elements[2];
m_version = elements[3];
- m_classifier = elements[5];
- if(!elements[7].isEmpty())
+ m_classifier = elements[4];
+ if(!elements[5].isEmpty())
{
- m_extension = elements[7];
+ m_extension = elements[5];
}
return *this;
}
- operator QString() const
+ QString serialize() const
{
- if(!m_valid)
- return "INVALID";
+ if(!m_valid) {
+ return m_invalidValue;
+ }
QString retval = m_groupId + ":" + m_artifactId + ":" + m_version;
if(!m_classifier.isEmpty())
{
@@ -57,6 +60,9 @@ struct GradleSpecifier
}
QString getFileName() const
{
+ if(!m_valid) {
+ return QString();
+ }
QString filename = m_artifactId + '-' + m_version;
if(!m_classifier.isEmpty())
{
@@ -67,8 +73,9 @@ struct GradleSpecifier
}
QString toPath(const QString & filenameOverride = QString()) const
{
- if(!m_valid)
- return "INVALID";
+ if(!m_valid) {
+ return QString();
+ }
QString filename;
if(filenameOverride.isEmpty())
{
@@ -134,6 +141,7 @@ struct GradleSpecifier
return true;
}
private:
+ QString m_invalidValue;
QString m_groupId;
QString m_artifactId;
QString m_version;