From a00f6566b20cb3a03c392194efebbaff505f558e Mon Sep 17 00:00:00 2001 From: stasbilay02 Date: Wed, 23 Oct 2024 13:33:59 +0300 Subject: [PATCH] bootstrap, .env.ezample to add update add --- .../console/controllers/KernelController.php | 83 ++++++++++++------- kernel/helpers/Files.php | 5 +- .../controllers/SecureRestController.php | 2 +- 3 files changed, 55 insertions(+), 35 deletions(-) diff --git a/kernel/console/controllers/KernelController.php b/kernel/console/controllers/KernelController.php index 92342db..8389b65 100644 --- a/kernel/console/controllers/KernelController.php +++ b/kernel/console/controllers/KernelController.php @@ -26,59 +26,78 @@ class KernelController extends ConsoleController } if (file_exists(ROOT_DIR . $this->argv['path'])) { - - $tmpKernelDirFull = RESOURCES_DIR . '/tmp/ad/kernel/'; - - $fileHelper = new Files(); - $fileHelper->copy_folder(KERNEL_DIR, $tmpKernelDirFull); - - if (!is_dir(RESOURCES_DIR . '/tmp/kernel')) { - mkdir(RESOURCES_DIR . '/tmp/kernel'); - } - $fileHelper->pack($tmpKernelDirFull, RESOURCES_DIR . '/tmp/kernel/kernel.igk'); - - $fileHelper->recursiveRemoveDir($tmpKernelDirFull); - $this->out->r("Ядро заархивировано", 'green'); + $tmpKernelDirFull = RESOURCES_DIR . '/tmp/ad/app/kernel'; + $this->files->copy_folder(KERNEL_DIR, $tmpKernelDirFull); + $this->out->r("Ядро скопировано во временную папку", 'green'); } else { $this->out->r("Ядро не найдено", 'red'); } + + if (isset($this->argv['bootstrap'])) { + if (file_exists(ROOT_DIR . '/bootstrap')) { + $tmpBootstrapDirFull = RESOURCES_DIR . '/tmp/ad/app/bootstrap'; + $this->files->copy_folder(ROOT_DIR . '/bootstrap', $tmpBootstrapDirFull); + $this->out->r("/bootstrap скопирован во временную папку", 'green'); + } else { + $this->out->r("/bootstrap не найден", 'red'); + } + } + + if (isset($this->argv['.env'])) { + if (file_exists(ROOT_DIR . '/.env.example')) { + $tmpEnvFull = RESOURCES_DIR . '/tmp/ad/app/env.example'; + copy(ROOT_DIR . '/.env.example', $tmpEnvFull); + $this->out->r("/.env.example скопирован во временную папку", 'green'); + } else { + $this->out->r("/.env.example не найден", 'red'); + } + } + + if (!is_dir(RESOURCES_DIR . '/tmp/app')) { + mkdir(RESOURCES_DIR . '/tmp/app'); + } + + $this->files->pack(RESOURCES_DIR . '/tmp/ad/app/', RESOURCES_DIR . '/tmp/app/app.iga'); + $this->files->recursiveRemoveDir(RESOURCES_DIR . '/tmp/ad/app/'); } /** * @throws \Exception */ - public function actionUpdateKernel() + public function actionUpdateKernel(): void { if (!isset($this->argv['path'])) { throw new \Exception('Missing kernel path "--path" specified'); } - $path = $this->argv['path']; - - if (file_exists(ROOT_DIR . $path)) { - $zip = new ZipArchive; - $tmpKernelDir = md5(time()); - $res = $zip->open(ROOT_DIR . $path); + $zip = new ZipArchive; + if (file_exists(ROOT_DIR . $this->argv['path'])) { + $tmpAppDir = md5(time()); + $res = $zip->open(ROOT_DIR . $this->argv['path']); if ($res === TRUE) { - $tmpKernelDirFull = RESOURCES_DIR . '/tmp/kernel/' . $tmpKernelDir . "/"; - $zip->extractTo($tmpKernelDirFull); + $tmpAppDirFull = RESOURCES_DIR . '/tmp/app/' . $tmpAppDir . "/"; + $zip->extractTo($tmpAppDirFull); $zip->close(); $this->files->recursiveRemoveKernelDir(); - $this->files->copy_folder($tmpKernelDirFull , ROOT_DIR . "/kernel"); - $this->files->recursiveRemoveDir($tmpKernelDirFull); - $this->out->r('Ядро обновлено.', 'green'); + $this->files->copy_folder($tmpAppDirFull . 'kernel' , ROOT_DIR . "/kernel"); + + if (isset($this->argv['bootstrap'])) { + $this->files->recursiveRemoveDir(ROOT_DIR . '/bootstrap'); + $this->files->copy_folder($tmpAppDirFull . 'bootstrap' , ROOT_DIR . '/bootstrap'); + } + + if (isset($this->argv['.env'])) { + copy($tmpAppDirFull . 'env.example', ROOT_DIR . '/.env.example'); + } + + $this->files->recursiveRemoveDir($tmpAppDirFull); + $this->out->r('Приложение обновлено.', 'green'); } else { $this->out->r('unable to open zip archive', 'red'); - return false; } } else { - $this->out->r("Модуль не найден", 'red'); + $this->out->r("archive not found", 'red'); } } - public function test() - { - - } - } \ No newline at end of file diff --git a/kernel/helpers/Files.php b/kernel/helpers/Files.php index 3ec89e2..4cd710a 100644 --- a/kernel/helpers/Files.php +++ b/kernel/helpers/Files.php @@ -47,14 +47,15 @@ class Files { $includes = new FilesystemIterator(KERNEL_DIR); foreach ($includes as $include) { - if(is_dir($include) && !is_link($include) && $include->getFilename() !== 'app_modules') { + if ($include->getFilename() === 'app_modules') continue; + + if(is_dir($include) && !is_link($include)) { $this->recursiveRemoveDir($include); } else { unlink($include); } } - rmdir(KERNEL_DIR); } public function pack(string $source, string $destination/*, bool $include_source = true*/): void diff --git a/kernel/modules/secure/controllers/SecureRestController.php b/kernel/modules/secure/controllers/SecureRestController.php index 8075d69..d73e2fd 100644 --- a/kernel/modules/secure/controllers/SecureRestController.php +++ b/kernel/modules/secure/controllers/SecureRestController.php @@ -49,6 +49,6 @@ class SecureRestController extends RestController } $this->renderApi($res); - } + } \ No newline at end of file