forked from qt-creator/qt-creator
Android: allow sdkmanager to parse all generic packages
Task-number: QTCREATORBUG-23829 Change-Id: I29bd70a6703b9537e4a884e5acc53e2e2dd020cb Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -278,6 +278,7 @@ public:
|
|||||||
NdkMarker = 0x800,
|
NdkMarker = 0x800,
|
||||||
ExtrasMarker = 0x1000,
|
ExtrasMarker = 0x1000,
|
||||||
CmdlineSdkToolsMarker = 0x2000,
|
CmdlineSdkToolsMarker = 0x2000,
|
||||||
|
GenericToolMarker = 0x4000,
|
||||||
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
|
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -300,6 +301,7 @@ private:
|
|||||||
EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const;
|
EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const;
|
||||||
Ndk *parseNdkPackage(const QStringList &data) const;
|
Ndk *parseNdkPackage(const QStringList &data) const;
|
||||||
ExtraTools *parseExtraToolsPackage(const QStringList &data) const;
|
ExtraTools *parseExtraToolsPackage(const QStringList &data) const;
|
||||||
|
GenericSdkPackage *parseGenericTools(const QStringList &data) const;
|
||||||
MarkerTag parseMarkers(const QString &line);
|
MarkerTag parseMarkers(const QString &line);
|
||||||
|
|
||||||
MarkerTag m_currentSection = MarkerTag::None;
|
MarkerTag m_currentSection = MarkerTag::None;
|
||||||
@@ -632,6 +634,10 @@ void SdkManagerOutputParser::parsePackageData(MarkerTag packageMarker, const QSt
|
|||||||
createPackage(&SdkManagerOutputParser::parseExtraToolsPackage);
|
createPackage(&SdkManagerOutputParser::parseExtraToolsPackage);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MarkerTag::GenericToolMarker:
|
||||||
|
createPackage(&SdkManagerOutputParser::parseGenericTools);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
qCDebug(sdkManagerLog) << "Unhandled package: " << markerTags.at(packageMarker);
|
qCDebug(sdkManagerLog) << "Unhandled package: " << markerTags.at(packageMarker);
|
||||||
break;
|
break;
|
||||||
@@ -832,6 +838,22 @@ ExtraTools *SdkManagerOutputParser::parseExtraToolsPackage(const QStringList &da
|
|||||||
return extraTools;
|
return extraTools;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GenericSdkPackage *SdkManagerOutputParser::parseGenericTools(const QStringList &data) const
|
||||||
|
{
|
||||||
|
GenericSdkPackage *sdkPackage = nullptr;
|
||||||
|
GenericPackageData packageData;
|
||||||
|
if (parseAbstractData(packageData, data, 1, "Generic")) {
|
||||||
|
sdkPackage = new GenericSdkPackage(packageData.revision, data.at(0));
|
||||||
|
sdkPackage->setDescriptionText(packageData.description);
|
||||||
|
sdkPackage->setDisplayText(packageData.description);
|
||||||
|
sdkPackage->setInstalledLocation(packageData.installedLocation);
|
||||||
|
} else {
|
||||||
|
qCDebug(sdkManagerLog) << "Generic: Parsing failed. Minimum required data "
|
||||||
|
"unavailable:" << data;
|
||||||
|
}
|
||||||
|
return sdkPackage;
|
||||||
|
}
|
||||||
|
|
||||||
SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line)
|
SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line)
|
||||||
{
|
{
|
||||||
if (line.isEmpty())
|
if (line.isEmpty())
|
||||||
@@ -842,6 +864,10 @@ SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QSt
|
|||||||
return pair.first;
|
return pair.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QRegularExpressionMatch match = QRegularExpression("^[a-zA-Z]+[A-Za-z0-9;._-]+").match(line);
|
||||||
|
if (match.hasMatch() && match.captured(0) == line)
|
||||||
|
return GenericToolMarker;
|
||||||
|
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -319,4 +319,19 @@ void Ndk::setAsNdkBundle(const bool isBundle)
|
|||||||
m_isBundle = isBundle;
|
m_isBundle = isBundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GenericSdkPackage::GenericSdkPackage(QVersionNumber revision, QString sdkStylePathStr, QObject *parent) :
|
||||||
|
AndroidSdkPackage(revision, sdkStylePathStr, parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GenericSdkPackage::isValid() const
|
||||||
|
{
|
||||||
|
return installedLocation().exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
AndroidSdkPackage::PackageType GenericSdkPackage::type() const
|
||||||
|
{
|
||||||
|
return AndroidSdkPackage::GenericSdkPackage;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Android
|
} // namespace Android
|
||||||
|
@@ -55,9 +55,10 @@ public:
|
|||||||
EmulatorToolsPackage = 1 << 6,
|
EmulatorToolsPackage = 1 << 6,
|
||||||
NDKPackage = 1 << 7,
|
NDKPackage = 1 << 7,
|
||||||
ExtraToolsPackage = 1 << 8,
|
ExtraToolsPackage = 1 << 8,
|
||||||
|
GenericSdkPackage = 1 << 9,
|
||||||
AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage |
|
AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage |
|
||||||
SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage | NDKPackage |
|
SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage | NDKPackage |
|
||||||
ExtraToolsPackage
|
ExtraToolsPackage | GenericSdkPackage
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PackageState {
|
enum PackageState {
|
||||||
@@ -221,6 +222,18 @@ public:
|
|||||||
ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr);
|
ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr);
|
||||||
|
|
||||||
// AndroidSdkPackage Overrides
|
// AndroidSdkPackage Overrides
|
||||||
|
public:
|
||||||
|
bool isValid() const override;
|
||||||
|
PackageType type() const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class GenericSdkPackage : public AndroidSdkPackage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GenericSdkPackage(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr);
|
||||||
|
|
||||||
|
// AndroidSdkPackage Overrides
|
||||||
|
public:
|
||||||
bool isValid() const override;
|
bool isValid() const override;
|
||||||
PackageType type() const override;
|
PackageType type() const override;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user