update to 2.5.0-b2 (build 409)

This commit is contained in:
crazywhalecc
2021-07-04 15:45:30 +08:00
parent 4ee16d4fc6
commit 7ec847e576
28 changed files with 467 additions and 87 deletions

View File

@@ -3,6 +3,7 @@
namespace ZM\Command;
use League\CLImate\CLImate;
use Phar;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
@@ -56,22 +57,22 @@ class BuildCommand extends Command
@unlink($target_dir . $filename);
$phar = new Phar($target_dir . $filename);
$phar->startBuffering();
$climate = new CLImate();
$allow_dir = ["bin", "config", "resources", "src", "vendor", "composer.json", "README.md", "zhamao"];
$all = DataProvider::scanDirFiles(DataProvider::getSourceRootDir(), true, true);
$all = array_filter($all, function ($x) {
$dirs = preg_match("/(^(bin|config|resources|src|vendor)\/|^(composer\.json|README\.md)$)/", $x);
return !($dirs !== 1);
});
sort($all);
$progress = $climate->progress()->total(count($all));
$archive_dir = DataProvider::getSourceRootDir();
$scan = scandir($archive_dir);
if ($scan[0] == ".") {
unset($scan[0], $scan[1]);
}
foreach ($scan as $v) {
if (in_array($v, $allow_dir)) {
if (is_dir($archive_dir . "/" . $v)) {
$this->addDirectory($phar, $archive_dir . "/" . $v, $v);
} elseif (is_file($archive_dir . "/" . $v)) {
$phar->addFile($archive_dir . "/" . $v, $v);
}
}
foreach ($all as $k => $v) {
$phar->addFile($archive_dir . "/" . $v, $v);
$progress->current($k + 1, "Adding " . $v);
}
$phar->setStub(
@@ -81,18 +82,4 @@ class BuildCommand extends Command
$phar->stopBuffering();
$this->output->writeln("Successfully built. Location: " . $target_dir . "$filename");
}
private function addDirectory(Phar $phar, $dir, $local_dir) {
$o = scandir($dir);
if ($o[0] == ".") {
unset($o[0], $o[1]);
}
foreach ($o as $v) {
if (is_dir($dir . "/" . $v)) {
$this->addDirectory($phar, $dir . "/" . $v, $local_dir . "/" . $v);
} elseif (is_file($dir . "/" . $v)) {
$phar->addFile($dir . "/" . $v, $local_dir . "/" . $v);
}
}
}
}

View File

@@ -1,25 +1,28 @@
<?php
namespace ZM\Command;
namespace ZM\Command\Generate;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use ZM\Config\ZMConfig;
use ZM\Utils\DataProvider;
class SystemdCommand extends Command
class SystemdGenerateCommand extends Command
{
// the name of the command (the part after "bin/console")
protected static $defaultName = 'systemd:generate';
protected static $defaultName = 'generate:systemd';
protected function configure() {
$this->setDescription("生成框架的 systemd 配置文件");
ZMConfig::setDirectory(DataProvider::getSourceRootDir() . '/config');
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$path = $this->generate();
$output->writeln("<info>成功生成 systemd 文件,位置:".$path."</info>");
$output->writeln("<info>成功生成 systemd 文件,位置:" . $path . "</info>");
$output->writeln("<info>有关如何使用 systemd 配置文件,请访问 `https://github.com/zhamao-robot/zhamao-framework/issues/36`</info>");
return 0;
}
@@ -30,10 +33,10 @@ class SystemdCommand extends Command
$s .= "\nGroup=" . exec("groups | awk '{print $1}'");
$s .= "\nWorkingDirectory=" . getcwd();
global $argv;
$s .= "\nExecStart=".PHP_BINARY." {$argv[0]} server";
$s .= "\nExecStart=" . PHP_BINARY . " {$argv[0]} server";
$s .= "\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n";
@mkdir(getcwd() . "/resources/");
file_put_contents(getcwd() . "/resources/zhamao.service", $s);
return getcwd() . "/resources/zhamao.service";
file_put_contents(ZMConfig::get("global", "zm_data") . "zhamao.service", $s);
return ZMConfig::get("global", "zm_data") . "zhamao.service";
}
}

View File

@@ -23,7 +23,7 @@ class ModuleListCommand extends Command
ZMConfig::setDirectory(DataProvider::getSourceRootDir() . '/config');
ZMConfig::setEnv($args["env"] ?? "");
if (ZMConfig::get("global") === false) {
die ("Global config load failed: " . ZMConfig::$last_error . "\nPlease init first!\n");
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");
}
//定义常量
@@ -52,6 +52,9 @@ class ModuleListCommand extends Command
$out_list["目录"] = str_replace(DataProvider::getSourceRootDir() . "/", "", $v["module-path"]);
$this->printList($out_list);
}
if ($list === []) {
echo Console::setColor("没有发现已编写打包配置文件zm.json的模块", "yellow") . PHP_EOL;
}
$list = ModuleManager::getPackedModules();
foreach ($list as $v) {
echo "[" . Console::setColor($v["name"], "gold") . "]" . PHP_EOL;
@@ -62,7 +65,7 @@ class ModuleListCommand extends Command
$this->printList($out_list);
}
if ($list === []) {
echo Console::setColor("没有发现已编写打包配置文件zm.json的模块和已打包且装载的模块!", "yellow") . PHP_EOL;
echo Console::setColor("没有发现已打包且装载的模块!", "yellow") . PHP_EOL;
}
return 0;
}

View File

@@ -27,7 +27,7 @@ class ModulePackCommand extends Command
ZMConfig::setDirectory(DataProvider::getSourceRootDir() . '/config');
ZMConfig::setEnv($args["env"] ?? "");
if (ZMConfig::get("global") === false) {
die ("Global config load failed: " . ZMConfig::$last_error . "\nPlease init first!\n");
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");
}
//定义常量

View File

@@ -7,6 +7,7 @@ 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;
@@ -19,20 +20,25 @@ class ModuleUnpackCommand extends Command
protected static $defaultName = 'module:unpack';
protected function configure() {
$this->addArgument("module-name", InputArgument::REQUIRED);
$this->setDefinition([
new InputArgument("module-name", InputArgument::REQUIRED),
new InputOption("override-light-cache", null, null, "覆盖现有的LightCache项目"),
new InputOption("override-zm-data", null, null, "覆盖现有的zm_data文件"),
new InputOption("override-source", null, null, "覆盖现有的源码文件")
]);
$this->setDescription("Unpack a phar module into src directory");
$this->setHelp("此功能将phar格式的模块包解包到src目录下。");
ZMConfig::setDirectory(DataProvider::getSourceRootDir() . '/config');
ZMConfig::setEnv($args["env"] ?? "");
if (ZMConfig::get("global") === false) {
die ("Global config load failed: " . ZMConfig::$last_error . "\nPlease init first!\n");
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");
}
//定义常量
include_once DataProvider::getFrameworkRootDir()."/src/ZM/global_defines.php";
Console::init(
ZMConfig::get("global", "info_level") ?? 2,
ZMConfig::get("global", "info_level") ?? 4,
null,
$args["log-theme"] ?? "default",
($o = ZMConfig::get("console_color")) === false ? [] : $o
@@ -49,7 +55,7 @@ class ModuleUnpackCommand extends Command
$output->writeln("<error>不存在打包的模块 ".$input->getArgument("module-name")." !</error>");
return 1;
}
$result = ModuleManager::unpackModule($list[$input->getArgument("module-name")]);
$result = ModuleManager::unpackModule($list[$input->getArgument("module-name")], $input->getOptions());
if ($result) Console::success("解压完成!");
else Console::error("解压失败!");
return 0;