12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace Modules\Develop\Support;
- use Catch\CatchAdmin;
- use Catch\Exceptions\FailedException;
- use Catch\Facade\Zipper;
- use Illuminate\Support\Facades\File;
- /**
- * module install
- */
- class ModuleInstall
- {
- const NORMAL_INSTALL = 1;
- const ZIP_INSTALL = 2;
- public function __construct(protected readonly int|string $type){}
- /**
- *
- * @param array $params
- */
- public function install(array $params): void
- {
- try {
- if ($this->type === self::NORMAL_INSTALL) {
- $this->installWithTitle($params['title']);
- }
- if ($this->type == self::ZIP_INSTALL) {
- $this->installWithZip($params['title'], $params['file']);
- }
- } catch (\Exception $e) {
- if ($this->type == self::ZIP_INSTALL) {
- CatchAdmin::deleteModulePath($params['title']);
- }
- throw new FailedException('安装失败: ' . $e->getMessage());
- }
- }
- /**
- *
- * @param string $title
- */
- protected function installWithTitle(string $title): void
- {
- try {
- $installer = CatchAdmin::getModuleInstaller($title);
- $installer->install();
- } catch (\Exception|\Throwable $e) {
- // CatchAdmin::deleteModulePath($title);
- throw new FailedException('安装失败: ' . $e->getMessage());
- }
- }
- /**
- * get
- *
- * @param string $title
- * @param string $zip
- */
- protected function installWithZip(string $title, string $zip): void
- {
- $zipRepository = Zipper::make($zip)->getRepository();
- $zipRepository->getArchive()->extractTo(CatchAdmin::getModulePath($title));
- $this->installWithTitle($title);
- File::delete($zip);
- }
- }
|