dynamically read in CLI commands for froxlor-bin

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2023-11-28 09:07:30 +01:00
parent 1ae5311b81
commit d80c6d5714

View File

@@ -24,20 +24,8 @@
* @license https://files.froxlor.org/misc/COPYING.txt GPLv2 * @license https://files.froxlor.org/misc/COPYING.txt GPLv2
*/ */
declare(strict_types=1);
use Froxlor\Cli\ConfigDiff;
use Symfony\Component\Console\Application;
use Froxlor\Cli\RunApiCommand;
use Froxlor\Cli\ConfigServices;
use Froxlor\Cli\PhpSessionclean;
use Froxlor\Cli\SwitchServerIp;
use Froxlor\Cli\UpdateCommand;
use Froxlor\Cli\InstallCommand;
use Froxlor\Cli\MasterCron;
use Froxlor\Cli\UserCommand;
use Froxlor\Cli\ValidateAcmeWebroot;
use Froxlor\Froxlor; use Froxlor\Froxlor;
use Symfony\Component\Console\Application;
// validate correct php version // validate correct php version
if (version_compare("7.4.0", PHP_VERSION, ">=")) { if (version_compare("7.4.0", PHP_VERSION, ">=")) {
@@ -53,14 +41,26 @@ require dirname(__DIR__) . '/vendor/autoload.php';
require dirname(__DIR__) . '/lib/tables.inc.php'; require dirname(__DIR__) . '/lib/tables.inc.php';
$application = new Application('froxlor-cli', Froxlor::getFullVersion()); $application = new Application('froxlor-cli', Froxlor::getFullVersion());
$application->add(new RunApiCommand());
$application->add(new ConfigServices()); // files that are no commands
$application->add(new PhpSessionclean()); $fileIgnoreList = ['CliCommand.php', 'index.html', 'install.functions.php'];
$application->add(new SwitchServerIp()); // directory of commands to include
$application->add(new UpdateCommand()); $cmd_files = glob(Froxlor::getInstallDir() . '/lib/Froxlor/Cli/*.php');
$application->add(new InstallCommand());
$application->add(new MasterCron()); // include and add commands
$application->add(new UserCommand()); foreach ($cmd_files as $cmdFile) {
$application->add(new ValidateAcmeWebroot()); // check ignore-list
$application->add(new ConfigDiff()); if (!in_array(basename($cmdFile), $fileIgnoreList)) {
// include class-file
require $cmdFile;
// create class-name including namespace
$cmdClass = "\\Froxlor\\Cli\\" . substr(basename($cmdFile), 0, -4);
// check whether it exists
if (class_exists($cmdClass)) {
// add to cli application
$application->add(new $cmdClass());
}
}
}
$application->run(); $application->run();