setDescription('检查配置文件是否和框架当前版本有更新');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
if (LOAD_MODE !== 1) {
$output->writeln('仅限在Composer依赖模式中使用此命令!');
return 1;
}
$current_cfg = getcwd() . '/config/';
$remote_cfg = include_once FRAMEWORK_ROOT_DIR . '/config/global_old.php';
if (file_exists($current_cfg . 'global.php')) {
$this->check($remote_cfg, 'global.php', $output);
}
if (file_exists($current_cfg . 'global.development.php')) {
$this->check($remote_cfg, 'global.development.php', $output);
}
if (file_exists($current_cfg . 'global.staging.php')) {
$this->check($remote_cfg, 'global.staging.php', $output);
}
if (file_exists($current_cfg . 'global.production.php')) {
$this->check($remote_cfg, 'global.production.php', $output);
}
if ($this->need_update === true) {
$output->writeln('有配置文件需要更新,详情见文档 `https://framework.zhamao.xin/update/config`');
} else {
$output->writeln('配置文件暂无更新!');
}
return 0;
}
/**
* @param mixed $remote
* @param mixed $local
*/
private function check($remote, $local, OutputInterface $out)
{
$local_file = include_once WORKING_DIR . '/config/' . $local;
if ($local_file === true) {
$local_file = config('global');
}
foreach ($remote as $k => $v) {
if (!isset($local_file[$k])) {
$out->writeln('配置文件 ' . $local . " 需要更新!(当前配置文件缺少 `{$k}` 字段配置)");
$this->need_update = true;
}
}
}
}