From e26e58df99bfb81c615bce53d7921410aaa65930 Mon Sep 17 00:00:00 2001 From: Justyna Hudziak Date: Fri, 27 Sep 2024 14:54:24 +0200 Subject: [PATCH] Lua: Add support for permissions in FilePath class Change-Id: Ie7fde3f3efe79930ef89715ae43a520583016495 Reviewed-by: Marcus Tillmanns --- src/plugins/lua/bindings/qt.cpp | 18 ++++++++++++++++++ src/plugins/lua/bindings/utils.cpp | 10 +++++++++- src/plugins/lua/meta/qt.lua | 18 ++++++++++++++++++ src/plugins/lua/meta/utils.lua | 8 ++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/plugins/lua/bindings/qt.cpp b/src/plugins/lua/bindings/qt.cpp index 733eac85a4d..fc929a84531 100644 --- a/src/plugins/lua/bindings/qt.cpp +++ b/src/plugins/lua/bindings/qt.cpp @@ -9,6 +9,7 @@ #include #include #include +#include namespace Lua::Internal { @@ -110,6 +111,23 @@ void setupQtModule() "NoSort", QDir::NoSort ) ); + + qt["QFileDevice"] = lua.create_table_with( + "Permission", lua.create_table_with( + "ReadOwner", QFileDevice::ReadOwner, + "ReadUser", QFileDevice::ReadUser, + "ReadGroup", QFileDevice::ReadGroup, + "ReadOther", QFileDevice::ReadOther, + "WriteOwner", QFileDevice::WriteOwner, + "WriteUser", QFileDevice::WriteUser, + "WriteGroup", QFileDevice::WriteGroup, + "WriteOther", QFileDevice::WriteOther, + "ExeOwner", QFileDevice::ExeOwner, + "ExeUser", QFileDevice::ExeUser, + "ExeGroup", QFileDevice::ExeGroup, + "ExeOther", QFileDevice::ExeOther + ) + ); // clang-format on return qt; diff --git a/src/plugins/lua/bindings/utils.cpp b/src/plugins/lua/bindings/utils.cpp index efd5a73a74c..be40b86c627 100644 --- a/src/plugins/lua/bindings/utils.cpp +++ b/src/plugins/lua/bindings/utils.cpp @@ -161,7 +161,15 @@ void setupUtilsModule() "resolvePath", sol::overload( [](const FilePath &p, const QString &path) { return p.resolvePath(path); }, - [](const FilePath &p, const FilePath &path) { return p.resolvePath(path); })); + [](const FilePath &p, const FilePath &path) { return p.resolvePath(path); }), + "permissions", + [](FilePath& p) { + return static_cast(p.permissions().toInt()); + }, + "setPermissions", + [](FilePath& p, QFileDevice::Permission permissions) { + p.setPermissions(static_cast(permissions)); + }); utils["FilePath"]["dirEntries_cb"] = utils["__dirEntries_cb__"]; utils["FilePath"]["dirEntries"] = wrap(utils["__dirEntries_cb__"]); diff --git a/src/plugins/lua/meta/qt.lua b/src/plugins/lua/meta/qt.lua index 6adaa261fc3..3588dcf6038 100644 --- a/src/plugins/lua/meta/qt.lua +++ b/src/plugins/lua/meta/qt.lua @@ -92,4 +92,22 @@ qt.QDirIterator = { } } +qt.QFileDevice = { + ---@enum Permission + Permission = { + ReadOwner = 0, + ReadUser = 0, + ReadGroup = 0, + ReadOther = 0, + WriteOwner = 0, + WriteUser = 0, + WriteGroup = 0, + WriteOther = 0, + ExeOwner = 0, + ExeUser = 0, + ExeGroup = 0, + ExeOther = 0, + } +} + return qt diff --git a/src/plugins/lua/meta/utils.lua b/src/plugins/lua/meta/utils.lua index adccb82525c..950561133ee 100644 --- a/src/plugins/lua/meta/utils.lua +++ b/src/plugins/lua/meta/utils.lua @@ -89,6 +89,14 @@ function utils.FilePath:completeSuffix() end ---@return boolean function utils.FilePath:isAbsolutePath() end +---Returns the complete OR-ed together combination of permissions for the file. +---@return Permission +function utils.FilePath:permissions() end + +---Sets permissions for the file. +---@param permissions Permission The complete OR-ed together combination of permissions for the file. +function utils.FilePath:setPermissions() end + ---@class CommandLine ---@field command FilePath The command to execute. ---@field arguments string[] The arguments to pass to the command.