Add script to list dispatch commands
from https://wiki.documentfoundation.org/Development/DispatchCommands Change-Id: I996f3585bbbb18eb4b425cdd807f15d848cced36 Reviewed-on: https://gerrit.libreoffice.org/35337 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
This commit is contained in:
parent
89f5bb3cbb
commit
60d1f712f4
147
bin/list-dispatch-commands.php
Executable file
147
bin/list-dispatch-commands.php
Executable file
@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
/// Script to generate https://wiki.documentfoundation.org/Development/DispatchCommands
|
||||
|
||||
function getFilesList($directory, $extension) {
|
||||
$arrayItems = array();
|
||||
$skipByExclude = false;
|
||||
$handle = opendir($directory);
|
||||
if ($handle) {
|
||||
while (false !== ($file = readdir($handle))) {
|
||||
if ($file !== "." && $file !== "..") {
|
||||
if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) {
|
||||
$arrayItems = array_merge($arrayItems, getFilesList($directory. DIRECTORY_SEPARATOR . $file, $extension));
|
||||
} else {
|
||||
$file = $directory . DIRECTORY_SEPARATOR . $file;
|
||||
if (substr($file, -4) === $extension)
|
||||
$arrayItems[] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
return $arrayItems;
|
||||
}
|
||||
|
||||
function addMode(&$mode, $haystack, $needle, $letter) {
|
||||
$mode .= (strpos($haystack, $needle) === FALSE) ? " " : $letter;
|
||||
}
|
||||
|
||||
function analyseFile($fileName) {
|
||||
global $allSlots;
|
||||
|
||||
$lines = file($fileName);
|
||||
$index = 0;
|
||||
$count = count($lines);
|
||||
while ($index<$count) {
|
||||
$aLine = $lines[$index];
|
||||
if(substr($aLine, 0, 12) === "// Slot Nr. ") {
|
||||
$tmp = explode(':', $aLine);
|
||||
$slotId = trim($tmp[1]);
|
||||
$index++;
|
||||
$aLine = $lines[$index];
|
||||
$isEnumSlot = strpos($aLine, 'SFX_NEW_SLOT_ENUM') !== FALSE;
|
||||
$tmp = explode(',', $aLine);
|
||||
$slotRID = $tmp[1];
|
||||
|
||||
$index += $isEnumSlot ? 4 : 3;
|
||||
$aLine = $lines[$index];
|
||||
$mode = "";
|
||||
addMode($mode, $aLine, "CACHABLE", "C");
|
||||
addMode($mode, $aLine, "AUTOUPDATE", "U");
|
||||
addMode($mode, $aLine, "MENUCONFIG", "M");
|
||||
addMode($mode, $aLine, "TOOLBOXCONFIG", "T");
|
||||
addMode($mode, $aLine, "ACCELCONFIG", "A");
|
||||
$index += $isEnumSlot ? 1 : 3;
|
||||
$aLine = $lines[$index];
|
||||
if (strpos($aLine, '"') === FALSE) {
|
||||
$index++;
|
||||
$aLine = $lines[$index];
|
||||
}
|
||||
$tmp = explode('"', $aLine);
|
||||
$slotName = ".uno:" . $tmp[1];
|
||||
if (array_key_exists($slotName, $allSlots))
|
||||
$slotDescription = $allSlots[$slotName];
|
||||
else
|
||||
$slotDescription = "No description";
|
||||
if (!array_key_exists($slotName, $allSlots)) {
|
||||
$allSlots[$slotName] = new StdClass;
|
||||
$allSlots[$slotName]->slotId = $slotId;
|
||||
$allSlots[$slotName]->slotRID = $slotRID;
|
||||
$allSlots[$slotName]->mode = $mode;
|
||||
$allSlots[$slotName]->slotDescription = "";
|
||||
}
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
}
|
||||
|
||||
function analyseXCU($fileName)
|
||||
{
|
||||
global $allSlots;
|
||||
|
||||
$lines = file($fileName);
|
||||
$index = 0;
|
||||
$count = count($lines);
|
||||
|
||||
while ($index < $count)
|
||||
{
|
||||
$aLine = $lines[$index];
|
||||
if (strpos($aLine, '<node oor:name=".uno:') !== FALSE) {
|
||||
$tmp = explode( '"', $aLine );
|
||||
$slotName = $tmp[1];
|
||||
$found = false;
|
||||
while ($index < $count
|
||||
&& strpos($aLine, '<value xml:lang="en-US">') === FALSE ) {
|
||||
$index++;
|
||||
$aLine = $lines[$index];
|
||||
}
|
||||
$aLine = str_replace('<value xml:lang="en-US">', '', $aLine);
|
||||
$aLine = trim(str_replace('</value>', '', $aLine));
|
||||
if (array_key_exists($slotName, $allSlots))
|
||||
$allSlots[$slotName]->slotDescription = str_replace('~', '', $aLine);
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (count($argv) != 2) {
|
||||
print "Syntax error: ids.php module\n\n";
|
||||
print " Module is one of:\n";
|
||||
print " basslots\n";
|
||||
print " scslots\n";
|
||||
print " sdgslots\n";
|
||||
print " sdslots\n";
|
||||
print " sfxslots\n";
|
||||
print " smslots\n";
|
||||
print " svxslots\n";
|
||||
print " swslots\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$allSlots = array();
|
||||
|
||||
foreach (getFilesList("./workdir/SdiTarget", ".hxx") as $sdiFile)
|
||||
if (basename($sdiFile, ".hxx") === $argv[1])
|
||||
analyseFile($sdiFile);
|
||||
|
||||
foreach (getFilesList("officecfg/registry/data/org/openoffice/Office/UI", ".xcu") as $xcuFile)
|
||||
analyseXCU($xcuFile);
|
||||
|
||||
ksort($allSlots);
|
||||
foreach ($allSlots as $name => $props) {
|
||||
printf("|-\n| %s\n| %s\n| %d\n| %s\n| %s\n",
|
||||
$name, $props->slotRID, $props->slotId, $props->mode, $props->slotDescription);
|
||||
}
|
||||
print ("|-\n");
|
||||
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user