Files
zhamao-framework/bin/start

136 lines
4.6 KiB
Plaintext
Raw Normal View History

2020-03-02 16:14:20 +08:00
#!/usr/bin/env php
<?php
use Framework\FrameworkLoader;
use Scheduler\Scheduler;
require __DIR__ . '/../src/Framework/FrameworkLoader.php';
require __DIR__ . '/../src/Scheduler/Scheduler.php';
Swoole\Coroutine::set([
'max_coroutine' => 30000,
]);
2020-06-05 13:36:30 +08:00
global $vendor_mode;
$vendor_mode = false;
if (mb_strpos(__DIR__, getcwd()) !== false && substr(str_replace(getcwd(), "", __DIR__), 0, 8) == "/vendor/") {
define("LOAD_MODE", 1); //composer项目模式
define("LOAD_MODE_COMPOSER_PATH", getcwd());
} else {
define("LOAD_MODE", 0); //正常模式
}
2020-03-02 16:14:20 +08:00
date_default_timezone_set("Asia/Shanghai");
switch ($argv[1] ?? '') {
case 'scheduler':
case 'timer':
go(function () {
try {
new Scheduler(Scheduler::REMOTE);
} catch (Exception $e) {
die($e->getMessage());
}
});
break;
2020-06-05 13:36:30 +08:00
case 'phar-build':
array_shift($argv);
require_once 'phar-build';
break;
case 'systemd':
array_shift($argv);
require_once 'systemd';
break;
2020-06-13 16:58:45 +08:00
case 'init':
array_shift($argv);
if (LOAD_MODE != 1) {
echo "initialization must be started with composer-project mode!\n";
exit(1);
}
$cwd = LOAD_MODE_COMPOSER_PATH;
echo "Copying default module file ...";
@mkdir($cwd . "/config");
@mkdir($cwd . "/src");
@mkdir($cwd . "/src/Custom");
@mkdir($cwd . "/src/Module");
@mkdir($cwd . "/src/Module/Example");
2020-06-13 17:08:13 +08:00
@mkdir($cwd . "/src/Module/Middleware");
2020-06-13 17:23:53 +08:00
$ls = [
"/config/global.php",
"/.gitignore",
"/config/file_header.json",
"/config/motd.txt",
"/src/Module/Example/Hello.php",
"/src/Module/Middleware/TimerMiddleware.php",
"/src/Custom/global_function.php"
];
foreach($ls as $v) {
if(!file_exists($cwd.$v)) {
echo "Copying ".$v.PHP_EOL;
copy($cwd."/vendor/zhamao/framework".$v, $cwd.$v);
}
}
2020-06-13 16:58:45 +08:00
$autoload = [
"psr-4" => [
"Module\\" => "src/Module",
"Custom\\" => "src/Custom"
],
"files" => [
"src/Custom/global_function.php"
]
];
$scripts = [
"server" => "vendor/bin/start server",
"server:log-debug" => "vendor/bin/start server --log-debug",
"server:log-verbose" => "vendor/bin/start server --log-verbose",
"server:log-info" => "vendor/bin/start server --log-info",
"server:log-warning" => "vendor/bin/start server --log-warning",
"server:debug-mode" => "vendor/bin/start server --debug-mode",
"systemd" => "vendor/bin/start systemd"
];
echo PHP_EOL;
if (file_exists($cwd . "/composer.json")) {
echo "Updating composer.json ...";
$composer = json_decode(file_get_contents($cwd . "/composer.json"), true);
if (!isset($composer["autoload"])) {
$composer["autoload"] = $autoload;
}
2020-06-13 17:23:53 +08:00
if (!isset($composer["scripts"])) {
2020-06-13 16:58:45 +08:00
$composer["scripts"] = $scripts;
}
2020-06-13 17:23:53 +08:00
file_put_contents($cwd . "/composer.json", json_encode($composer, 64 | 128 | 256));
2020-06-13 16:58:45 +08:00
echo PHP_EOL;
} else {
echo("Error occurred. Please check your updates.\n");
exit(1);
}
echo "success!\n";
break;
2020-03-02 16:14:20 +08:00
case '':
case 'framework':
case 'server':
2020-06-05 13:36:30 +08:00
if (!is_dir(__DIR__ . '/../vendor/') && LOAD_MODE == 0) {
2020-03-02 16:14:20 +08:00
echo "Warning: you have not update composer!\n";
2020-03-05 14:07:05 +08:00
exec("composer update", $out, $var);
2020-06-05 13:36:30 +08:00
if ($var != 0) {
2020-03-05 14:03:50 +08:00
echo "You need to run \"composer update\" at root of zhamao-framework!\n";
die;
}
2020-03-02 16:14:20 +08:00
}
$loader = new FrameworkLoader($argv);
break;
2020-04-15 10:55:10 +08:00
case '--help':
case '-h':
2020-06-05 13:36:30 +08:00
echo "\nUsage: " . $argv[0] . " [OPTION]\n";
2020-04-15 10:55:10 +08:00
echo "\nzhamao-framework start script, provides several startup arguments.";
echo "\n\n -h, --help\t\tShow this help menu";
2020-06-05 13:36:30 +08:00
echo "\n framework, server\tstart main framework, this is default option";
echo "\n phar-build\t\tbuild a new phar archive";
2020-06-13 16:58:45 +08:00
echo "\n init\t\t\tinitialize framework structure in this directory";
2020-06-05 13:36:30 +08:00
echo "\n systemd\t\tgenerate a new systemd \".service\" file to use\n\n";
2020-04-15 10:55:10 +08:00
break;
2020-03-02 16:14:20 +08:00
default:
2020-04-15 10:55:10 +08:00
echo "Unknown option \"{$argv[1]}\"!\n\"--help\" for more information\n";
2020-03-02 16:14:20 +08:00
break;
}