Allow parsing sub-variants of mingw-w64 packages
This might be useful for providing additional targets in the future. The exact names of those sub-variants are still subject to change.
This commit is contained in:
parent
56ee1325f0
commit
cc05267338
|
@ -1041,8 +1041,9 @@ bool PackageNameData::isVcsPackage() const
|
|||
|
||||
PackageNameData PackageNameData::decompose(std::string_view packageName)
|
||||
{
|
||||
static constexpr auto targetPrefixBrackets = 2;
|
||||
static const auto packageNameRegex
|
||||
= std::regex("((lib32|mingw-w64|android-aarch64|android-x86-64|android-x86|android-armv7a-eabi|arm-none-eabi|aarch64-linux-"
|
||||
= std::regex("((lib32|mingw-w64(-(ucrt|clang-x86_64|clang-aarch64))?|android-aarch64|android-x86-64|android-x86|android-armv7a-eabi|arm-none-eabi|aarch64-linux-"
|
||||
"gnu|static-compat|riscv64-linux|avr|psp)-)?(.*?)((-(cvs|svn|hg|darcs|bzr|git|custom|compat|static|qt\\d+|doc|cli|gui))*)");
|
||||
auto data = PackageNameData{};
|
||||
auto match = std::cmatch{};
|
||||
|
@ -1054,8 +1055,8 @@ PackageNameData PackageNameData::decompose(std::string_view packageName)
|
|||
regexMatch.first + offset, static_cast<std::size_t>(regexMatch.length() - static_cast<std::cmatch::difference_type>(offset)));
|
||||
};
|
||||
data.targetPrefix = matchToStringView(match[2]);
|
||||
data.actualName = matchToStringView(match[3]);
|
||||
data.vcsSuffix = match[4].length() ? matchToStringView(match[4], 1) : std::string_view{};
|
||||
data.actualName = matchToStringView(match[3 + targetPrefixBrackets]);
|
||||
data.vcsSuffix = match[4 + targetPrefixBrackets].length() ? matchToStringView(match[4 + targetPrefixBrackets], 1) : std::string_view{};
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
|
@ -128,6 +128,10 @@ void ParserTests::testParsingPackageName()
|
|||
CPPUNIT_ASSERT_EQUAL("gcc"sv, mingwGCC.actualName);
|
||||
CPPUNIT_ASSERT_EQUAL("mingw-w64"sv, mingwGCC.targetPrefix);
|
||||
CPPUNIT_ASSERT_EQUAL(""sv, mingwGCC.vcsSuffix);
|
||||
const auto mingwUcrtCppWinrt = PackageNameData::decompose("mingw-w64-ucrt-cppwinrt");
|
||||
CPPUNIT_ASSERT_EQUAL("cppwinrt"sv, mingwUcrtCppWinrt.actualName);
|
||||
CPPUNIT_ASSERT_EQUAL("mingw-w64-ucrt"sv, mingwUcrtCppWinrt.targetPrefix);
|
||||
CPPUNIT_ASSERT_EQUAL(""sv, mingwUcrtCppWinrt.vcsSuffix);
|
||||
const auto staticCompatQt6 = PackageNameData::decompose("static-compat-qt6-base");
|
||||
CPPUNIT_ASSERT_EQUAL("qt6-base"sv, staticCompatQt6.actualName);
|
||||
CPPUNIT_ASSERT_EQUAL("static-compat"sv, staticCompatQt6.targetPrefix);
|
||||
|
|
Loading…
Reference in New Issue