Files
qt-creator/src/plugins/android/sdkmanageroutputparser.h
Jarek Kobus e2e0a9a718 SdkManagerOutputParser: Hide subclasses for package parsers
Change-Id: I05543aeb8b5f039cad349dad6fc3af557e487dfc
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2024-02-02 10:05:33 +00:00

61 lines
2.4 KiB
C++

// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "androidsdkpackage.h"
namespace Android::Internal {
/*!
\class SdkManagerOutputParser
\brief The SdkManagerOutputParser class is a helper class to parse the output of the \c sdkmanager
commands.
*/
class SdkManagerOutputParser
{
public:
enum MarkerTag
{
None = 0x001,
InstalledPackagesMarker = 0x002,
AvailablePackagesMarkers = 0x004,
AvailableUpdatesMarker = 0x008,
EmptyMarker = 0x010,
PlatformMarker = 0x020,
SystemImageMarker = 0x040,
BuildToolsMarker = 0x080,
SdkToolsMarker = 0x100,
PlatformToolsMarker = 0x200,
EmulatorToolsMarker = 0x400,
NdkMarker = 0x800,
ExtrasMarker = 0x1000,
CmdlineSdkToolsMarker = 0x2000,
GenericToolMarker = 0x4000,
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
};
SdkManagerOutputParser(AndroidSdkPackageList &container) : m_packages(container) {}
void parsePackageListing(const QString &output);
AndroidSdkPackageList &m_packages;
private:
void compilePackageAssociations();
void parsePackageData(MarkerTag packageMarker, const QStringList &data);
AndroidSdkPackage *parsePlatform(const QStringList &data) const;
QPair<SystemImage *, int> parseSystemImage(const QStringList &data) const;
AndroidSdkPackage *parseBuildToolsPackage(const QStringList &data) const;
AndroidSdkPackage *parseSdkToolsPackage(const QStringList &data) const;
AndroidSdkPackage *parsePlatformToolsPackage(const QStringList &data) const;
AndroidSdkPackage *parseEmulatorToolsPackage(const QStringList &data) const;
AndroidSdkPackage *parseNdkPackage(const QStringList &data) const;
AndroidSdkPackage *parseExtraToolsPackage(const QStringList &data) const;
AndroidSdkPackage *parseGenericTools(const QStringList &data) const;
MarkerTag parseMarkers(const QString &line);
MarkerTag m_currentSection = MarkerTag::None;
QHash<AndroidSdkPackage *, int> m_systemImages;
friend class SdkManagerOutputParserTest;
};
} // namespace Android::Internal