From a794d24c81af0111a47a039f24b8ce64c88b0ccc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 17 Oct 2021 17:02:18 +0100 Subject: [PATCH] Added a tool to generate a Markdown document of all core permissions --- tools/generate-permission-doc.php | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tools/generate-permission-doc.php diff --git a/tools/generate-permission-doc.php b/tools/generate-permission-doc.php new file mode 100644 index 000000000..57fd04626 --- /dev/null +++ b/tools/generate-permission-doc.php @@ -0,0 +1,100 @@ +getPermissions(); +ksort($permissions, SORT_STRING); + +fwrite($doc, "# PocketMine-MP Core Permissions\n"); +fwrite($doc, "Generated from PocketMine-MP " . VersionInfo::VERSION()->getFullVersion() . "\n"); +fwrite($doc, "\n"); +fwrite($doc, "| Name | Description | Implied permissions |\n"); +fwrite($doc, "|:-----|:------------|:-------------------:|\n"); +foreach($permissions as $permission){ + $link = count($permission->getChildren()) === 0 ? "N/A" : "[Jump](#" . markdownify("Permissions implied by `" . $permission->getName() . "`") . ")"; + fwrite($doc, "| `" . $permission->getName() . "` | " . $permission->getDescription() . " | $link |\n"); +} + +fwrite($doc, "\n\n"); +fwrite($doc, "## Implied permissions\n"); +fwrite($doc, "Some permissions automatically grant (or deny) other permissions by default when granted. These are referred to as **implied permissions**.
\n"); +fwrite($doc, "Permissions may imply permissions which in turn imply other permissions (e.g. `pocketmine.group.operator` implies `pocketmine.group.user`, which in turn implies `pocketmine.command.help`).
\n"); +fwrite($doc, "Implied permissions can be overridden by explicit permissions from elsewhere.
\n"); +fwrite($doc, "**Note:** When explicitly denied, implied permissions are inverted. This means that \"granted\" becomes \"denied\" and vice versa.\n"); +fwrite($doc, "\n\n"); +foreach($permissions as $permission){ + if(count($permission->getChildren()) === 0){ + continue; + } + fwrite($doc, "### Permissions implied by `" . $permission->getName() . "`\n"); + fwrite($doc, "Users granted this permission will also be granted/denied the following permissions implicitly:\n\n"); + + fwrite($doc, "| Name | Type |\n"); + fwrite($doc, "|:-----|:----:|\n"); + $children = $permission->getChildren(); + ksort($children, SORT_STRING); + foreach($children as $childName => $isGranted){ + fwrite($doc, "| `$childName` | " . ($isGranted ? "Granted" : "Denied") . " |\n"); + } + fwrite($doc, "\n"); +} + +fclose($doc); +echo "Done.\n";