[plasma/union] tools/styletool: tools/style: Implement install/uninstall/update commands
Arjen Hiemstra <[email protected]> Wed, 5 Aug 2026 10:33:24 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit b31d99ed25c6fb25643f01f0debc95dacb00c709 by Arjen Hiemstra.
Committed on 05/08/2026 at 10:24.
Pushed by ahiemstra into branch 'master'.
tools/style: Implement install/uninstall/update commands
These basically just call the methods of PackageHandler with the
required information.
M +69 -0 tools/styletool/styletool.cpp
https://invent.kde.org/plasma/union/-/commit/b31d99ed25c6fb25643f01f0debc95dacb00c709
diff --git a/tools/styletool/styletool.cpp b/tools/styletool/styletool.cpp
index 027be97e..7af2402f 100644
--- a/tools/styletool/styletool.cpp
+++ b/tools/styletool/styletool.cpp
@@ -12,6 +12,29 @@
int handleInstallCommand([[maybe_unused]] const QStringList &arguments)
{
+ auto parser = parseCommand(u"install"_s, arguments, [](QCommandLineParser *parser) {
+ parser->setApplicationDescription(u"Install a new style."_s);
+ parser->addPositionalArgument(u"<path>"_s, u"The path to the style to install."_s);
+ });
+
+ if (parser->positionalArguments().size() != 1) {
+ showCommandHelp(parser.get(), u"install"_s, u"Invalid arguments for command \"install\""_s, 1);
+ }
+
+ auto packageName = parser->positionalArguments().first();
+ auto packagePath = fs::absolute(fs::path(packageName.toStdString()));
+
+ auto package = Union::StylePackage{packagePath};
+ if (!package.isValid()) {
+ return printPackageError(package);
+ }
+
+ auto handler = Union::StyleRegistry::instance()->packageHandler();
+ if (auto result = handler->install(package); result != Union::PackageHandler::Error::None) {
+ return printHandlerError(package, result);
+ }
+
+ std::cout << "Installed style " << qPrintable(package.id()) << "\n";
return 0;
}
@@ -94,11 +117,57 @@ int handleListCommand([[maybe_unused]] const QStringList &arguments)
int handleUpdateCommand([[maybe_unused]] const QStringList &arguments)
{
+ auto parser = parseCommand(u"update"_s, arguments, [](QCommandLineParser *parser) {
+ parser->setApplicationDescription(u"Update a style."_s);
+ parser->addPositionalArgument(u"<path>"_s, u"The path to the style to update."_s);
+ });
+
+ if (parser->positionalArguments().size() != 1) {
+ showCommandHelp(parser.get(), u"update"_s, u"Invalid arguments for command \"update\""_s, 1);
+ }
+
+ auto packageName = parser->positionalArguments().first();
+ auto package = Union::StylePackage{fs::absolute(fs::path(packageName.toStdString()))};
+
+ if (!package.isValid()) {
+ return printPackageError(package);
+ }
+
+ auto handler = Union::StyleRegistry::instance()->packageHandler();
+ if (auto result = handler->update(package); result != Union::PackageHandler::Error::None) {
+ return printHandlerError(package, result);
+ }
+
+ std::cout << "Updated style " << qPrintable(package.id()) << " to version " << qPrintable(package.version());
return 0;
}
int handleUninstallCommand([[maybe_unused]] const QStringList &arguments)
{
+ auto parser = parseCommand(u"uninstall"_s, arguments, [](QCommandLineParser *parser) {
+ parser->setApplicationDescription(u"Uninstall am installed style."_s);
+ parser->addPositionalArgument(u"<style>"_s, u"The style to uninstall."_s);
+ });
+
+ if (parser->positionalArguments().size() != 1) {
+ showCommandHelp(parser.get(), u"uninstall"_s, u"Invalid arguments for command \"uninstall\""_s, 1);
+ }
+
+ auto style = parser->positionalArguments().first();
+
+ auto handler = Union::StyleRegistry::instance()->packageHandler();
+
+ auto package = handler->package(style);
+ if (!package.isValid()) {
+ std::cerr << qPrintable(style) << " was not found.\n";
+ return 1;
+ }
+
+ if (auto result = handler->uninstall(package); result != Union::PackageHandler::Error::None) {
+ return printHandlerError(package, result);
+ }
+
+ std::cout << "Uninstalled style " << qPrintable(style) << "\n";
return 0;
}