zhamao-framework/src/ZM/Command/Module/ModulePackCommand.php

60 lines
2.4 KiB
PHP
Raw Normal View History

2021-06-16 00:17:30 +08:00
<?php
namespace ZM\Command\Module;
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 ZM\Config\ZMConfig;
use ZM\Console\Console;
use ZM\Utils\DataProvider;
use ZM\Utils\Manager\ModuleManager;
class ModulePackCommand extends Command
{
// the name of the command (the part after "bin/console")
protected static $defaultName = 'module:pack';
protected function configure() {
$this->addArgument("module-name", InputArgument::REQUIRED);
2021-09-01 14:14:00 +08:00
$this->setDescription("将配置好的模块构建一个phar包");
2021-06-16 00:17:30 +08:00
$this->setHelp("此功能将会把炸毛框架的模块打包为\".phar\",供发布和执行。");
$this->addOption("target", "D", InputOption::VALUE_REQUIRED, "Output Directory | 指定输出目录");
2021-07-09 12:59:07 +08:00
// ...
}
protected function execute(InputInterface $input, OutputInterface $output): int {
2021-06-16 00:17:30 +08:00
ZMConfig::setDirectory(DataProvider::getSourceRootDir() . '/config');
ZMConfig::setEnv($args["env"] ?? "");
if (ZMConfig::get("global") === false) {
2021-07-04 15:45:30 +08:00
die (zm_internal_errcode("E00007") . "Global config load failed: " . ZMConfig::$last_error . "\nPlease init first!\nSee: https://github.com/zhamao-robot/zhamao-framework/issues/37\n");
2021-06-16 00:17:30 +08:00
}
//定义常量
include_once DataProvider::getFrameworkRootDir()."/src/ZM/global_defines.php";
Console::init(
ZMConfig::get("global", "info_level") ?? 2,
null,
$args["log-theme"] ?? "default",
($o = ZMConfig::get("console_color")) === false ? [] : $o
);
$timezone = ZMConfig::get("global", "timezone") ?? "Asia/Shanghai";
date_default_timezone_set($timezone);
$list = ModuleManager::getConfiguredModules();
if (!isset($list[$input->getArgument("module-name")])) {
$output->writeln("<error>不存在模块 ".$input->getArgument("module-name")." !</error>");
return 1;
}
2021-09-11 11:59:02 +08:00
$result = ModuleManager::packModule($list[$input->getArgument("module-name")], $input->getOption("target"));
2021-06-16 00:17:30 +08:00
if ($result) Console::success("打包完成!");
else Console::error("打包失败!");
return 0;
}
}