From 3983548e7c0f107fa7b7cc3c4c36aa009590b481 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Mon, 19 Apr 2021 11:02:48 +0200 Subject: Moves Modules to own package Removes phar Renames bin 'n' stuff --- src/Command/RunCommand.php | 6 ++-- src/Module/Module.php | 6 ++++ src/Module/Modules/AptModule.php | 54 ------------------------------ src/Module/Modules/UserModule.php | 70 --------------------------------------- src/Task.php | 29 ++++++++++++++++ 5 files changed, 38 insertions(+), 127 deletions(-) create mode 100644 src/Module/Module.php delete mode 100644 src/Module/Modules/AptModule.php delete mode 100644 src/Module/Modules/UserModule.php (limited to 'src') diff --git a/src/Command/RunCommand.php b/src/Command/RunCommand.php index 145b2d5..6d8d2c9 100644 --- a/src/Command/RunCommand.php +++ b/src/Command/RunCommand.php @@ -30,14 +30,14 @@ class RunCommand extends Command } $commands = []; - foreach ($config['tasks'] as $taskName => $task) { + foreach ($config['tasks'] as $task) { /**@var Task $task*/ if (! $task->module->checkState()) { - $output->writeln($taskName . ': Adding commands from ' . get_class($task->module)); + $output->writeln($task->getName() . ': Adding commands from ' . get_class($task->module)); array_push($commands, ...$task->module->getCommands()); } else { - $output->writeln($taskName . ': Skipping commands from ' . get_class($task->module)); + $output->writeln($task->getName() . ': Skipping commands from ' . get_class($task->module)); } } diff --git a/src/Module/Module.php b/src/Module/Module.php new file mode 100644 index 0000000..51672f9 --- /dev/null +++ b/src/Module/Module.php @@ -0,0 +1,6 @@ +enablePTY(); - - $ssh->exec("dpkg -l $this->package | grep 'ii'"); - $dpkg = $ssh->read(); - - $state = match ($this->state) { - State::PRESENT => str_starts_with($dpkg, 'ii'), - State::ABSENT => str_contains($dpkg, 'no packages found'), - }; - - $ssh->disablePTY(); - - return $state; - } - - /** - * @inheritDoc - */ - public function getCommands(): array - { - return match ($this->state) { - State::PRESENT => ["sudo apt install -y $this->package"], - State::ABSENT => ["sudo apt remove -y $this->package"], - }; - } -} diff --git a/src/Module/Modules/UserModule.php b/src/Module/Modules/UserModule.php deleted file mode 100644 index 1749b58..0000000 --- a/src/Module/Modules/UserModule.php +++ /dev/null @@ -1,70 +0,0 @@ -options = array_replace([ - 'append' => false, - 'create_home' => true, - 'groups' => [], - 'shell' => '/bin/bash', - ], $options); - } - - /** - * @inheritDoc - */ - public function checkState(): bool - { - global $ssh; - /**@var SSH2 $ssh*/ - $ssh->enablePTY(); - - $ssh->exec("cat /etc/passwd | grep $this->name:"); - $hasUser = $ssh->read(); - - $state = match ($this->state) { - State::PRESENT => str_starts_with($hasUser, "$this->name:"), - State::ABSENT => empty($hasUser), - }; - - $ssh->disablePTY(); - - return $state; - } - - /** - * @inheritDoc - */ - public function getCommands(): array - { - return match ($this->state) { - State::PRESENT => [ - "sudo adduser $this->name --quiet" . - " --shell " . $this->options['shell'] . - ($this->options['create_home'] ? '' : ' --no-create-home'), - "sudo usermod -" . ($this->options['append'] ? 'a' : '') . "G " . implode(',', $this->options['groups']) . " $this->name" - ], - State::ABSENT => [ - "sudo apt remove -y $this->package", - ], - }; - } -} diff --git a/src/Task.php b/src/Task.php index a5698ea..8bb68e8 100644 --- a/src/Task.php +++ b/src/Task.php @@ -6,6 +6,7 @@ use PHPIAC\Module\ModuleInterface; class Task { + public string $name = ''; public ModuleInterface $module; /** @@ -13,6 +14,34 @@ class Task */ public function __construct() {} + /** + * @param string $name + * + * @return $this + */ + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + if (! empty($this->name)) { + return $this->name; + } + + $moduleReflection = new \ReflectionClass($this->module); + $firstProperty = $moduleReflection->getProperties()[0]; + $firstProperty->setAccessible(true); + + return $moduleReflection->getShortName() . ' - ' . $firstProperty->getValue($this->module); + } + /** * @param ModuleInterface $module * -- cgit v1.2.3