aboutsummaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2024-03-26 21:11:58 +0000
committerMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2024-03-26 21:11:58 +0000
commita4907198eb0edd9726f585b3d0f3b301f9a1d5ab (patch)
treeff6754d49d12a642cc2ae864447fe8b9ac53341c /cli
parent8e82625c46852a81275fa8485995efca760b1abf (diff)
Add REPL cli script.
Closes #3897 Merge request studip/studip!2756
Diffstat (limited to 'cli')
-rw-r--r--cli/Commands/Base/Tinker.php40
-rwxr-xr-xcli/studip13
2 files changed, 47 insertions, 6 deletions
diff --git a/cli/Commands/Base/Tinker.php b/cli/Commands/Base/Tinker.php
new file mode 100644
index 0000000..1bc4f12
--- /dev/null
+++ b/cli/Commands/Base/Tinker.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Studip\Cli\Commands\Base;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Process\PhpExecutableFinder;
+use Symfony\Component\Process\Process;
+use Psy\Configuration;
+use Psy\Shell;
+use Psy\VersionUpdater\Checker;
+
+class Tinker extends Command
+{
+ protected static $defaultName = 'tinker';
+
+ protected function configure(): void
+ {
+ $this->setDescription('Interact with your Stud.IP in a read-eval-print loop (REPL).');
+ }
+
+ /**
+ * @SuppressWarnings(PHPMD.StaticAccess)
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $config = Configuration::fromInput($input);
+ $config->setUpdateCheck(Checker::NEVER);
+ $config->setDefaultIncludes([__DIR__ . '/../../studip_cli_env.inc.php']);
+
+ $shell = new Shell($config);
+
+ return $shell->run();
+ }
+}
diff --git a/cli/studip b/cli/studip
index d981bd9..3acd4bc 100755
--- a/cli/studip
+++ b/cli/studip
@@ -13,6 +13,7 @@ require __DIR__.'/../composer/autoload.php';
$application = new Application();
$commands = [
Commands\Base\Dump::class,
+ Commands\Base\Tinker::class,
Commands\Checks\Compatibility::class,
Commands\Checks\GlobalizedConfig::class,
Commands\Checks\HelpTours::class,
@@ -38,29 +39,29 @@ $commands = [
Commands\Fix\Biest8136::class,
Commands\Fix\IconDimensions::class,
Commands\HelpContent\Migrate::class,
+ Commands\Migrate\Migrate::class,
Commands\Migrate\MigrateList::class,
Commands\Migrate\MigrateStatus::class,
- Commands\Migrate\Migrate::class,
Commands\OAuth2\Keys::class,
Commands\OAuth2\Purge::class,
+ Commands\Plugins\I18N\I18NCompile::class,
+ Commands\Plugins\I18N\I18NDetect::class,
+ Commands\Plugins\I18N\I18NExtract::class,
Commands\Plugins\PluginActivate::class,
Commands\Plugins\PluginDeactivate::class,
Commands\Plugins\PluginInfo::class,
Commands\Plugins\PluginInstall::class,
Commands\Plugins\PluginListMigrations::class,
- Commands\Plugins\PluginStatusMigrations::class,
Commands\Plugins\PluginMigrate::class,
Commands\Plugins\PluginRegister::class,
Commands\Plugins\PluginScan::class,
+ Commands\Plugins\PluginStatusMigrations::class,
Commands\Plugins\PluginUnregister::class,
- Commands\Plugins\I18N\I18NDetect::class,
- Commands\Plugins\I18N\I18NExtract::class,
- Commands\Plugins\I18N\I18NCompile::class,
Commands\Resources\UpdateBookingIntervals::class,
Commands\SORM\DescribeModels::class,
Commands\Twillo\PrivateKeys::class,
- Commands\User\UsersDelete::class,
Commands\User\GetUser::class,
+ Commands\User\UsersDelete::class,
];
$creator = function ($command) {
return app($command);