setDefinition(); setRunningMode(); if (!(RUN_MODE & (MODE_REVISION | MODE_LOCAL))) { goto DOfrQ; } runOrDie(["rm", "-rf", VENDOR_PATH]); unlink(DB_PATH); runOrDie(["touch", DB_PATH]); runOrDie(["cp", __DIR__ . DIRECTORY_SEPARATOR . ".env.production", __DIR__ . DIRECTORY_SEPARATOR . ".env"]); if (RUN_MODE === MODE_REVISION) { goto bXSmI; } runOrDie([PHP_BINARY, COMPOSER, "update", "--no-suggest"]); goto tYpGM; bXSmI: runOrDie([PHP_BINARY, COMPOSER, "install", "--no-suggest", "--no-dev"]); tYpGM: publishLeadSec(); runOrDie([PHP_BINARY, ARTISAN, "key:generate", "--force"]); DOfrQ: if (!(RUN_MODE & MODE_STARTUP)) { goto Z_uc3; } runOrDie([KILL, "all"], RUN_IGNORE_EXIT_CODE); sleep(1); unlink(DB_PATH); runOrDie(["touch", DB_PATH]); runOrDie([PHP_BINARY, ARTISAN, "migrate:refresh", "--force"]); runOrDie([REDIS_SERVER, REDIS_CONF]); runOrDie([PHP_FPM, "-R"]); runOrDie([PHP_BINARY, ARTISAN, "web:socket-io", "start", "--daemon", ">/dev/null", "2>&1"]); runOrDie([PHP_BINARY, ARTISAN, "web:queue", "--daemon", ">/dev/null", "2>&1"]); runOrDie([PHP_BINARY, ARTISAN, "web:online-service", "--daemon", ">/dev/null", "2>&1"]); runOrDie([PHP_BINARY, ARTISAN, "web:db-sync", "--daemon", ">/dev/null", "2>1"]); runOrDie([WATCHDOG, "-d"], RUN_IGNORE_EXIT_CODE); Z_uc3: function runOrDie($cmd, $expect = 0) { if (!is_array($cmd)) { goto UlPnI; } $cmd = implode(" ", $cmd); UlPnI: echo PHP_EOL; echo "--------------------------------------------------------------------------------"; echo PHP_EOL; echo "Command: " . $cmd . PHP_EOL; echo "Output: " . PHP_EOL; system($cmd, $ret); if (!($expect !== RUN_IGNORE_EXIT_CODE && $ret != $expect)) { goto EzhUn; } EzhUn: echo PHP_EOL; } function publishLeadSec() { $providers = (require __DIR__ . DIRECTORY_SEPARATOR . "bootstrap" . DIRECTORY_SEPARATOR . "cache" . DIRECTORY_SEPARATOR . "services.php"); $providers = $providers["providers"]; foreach ($providers as $provider) { if (!(strpos($provider, "LsAPIs") !== 0 && strpos($provider, "LsArch") !== 0)) { goto D0qUv; } goto UtL6W; D0qUv: runOrDie([PHP_BINARY, ARTISAN, "vendor:publish", "--provider='{$provider}'", "--force"]); UtL6W: } eM7b7: } function setDefinition() { define("RUN_IGNORE_EXIT_CODE", 99999999); define("MODE_ALL", 0b11111111); define("MODE_PRODUCE", 0b1); define("MODE_REVISION", 0b10); define("MODE_STARTUP", 0b100); define("MODE_LOCAL", 0b1000); define("MODE_NONE", 0b0); define("DB_PATH", __DIR__ . DIRECTORY_SEPARATOR . "database" . DIRECTORY_SEPARATOR . "database.sqlite"); define("SYS_DB_PATH", "/usr/local/conf"); define("VENDOR_PATH", __DIR__ . DIRECTORY_SEPARATOR . "vendor"); define("COMPOSER", __DIR__ . DIRECTORY_SEPARATOR . "composer.phar"); define("ARTISAN", __DIR__ . DIRECTORY_SEPARATOR . "artisan"); define("WATCHER", VENDOR_PATH . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "dbwatcher"); define("WATCH_LIST", [SYS_DB_PATH . "/configs.db"]); define("REDIS_PATH", __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "redis"); define("REDIS_SERVER", REDIS_PATH . DIRECTORY_SEPARATOR . "redis-server"); define("REDIS_CONF", REDIS_PATH . DIRECTORY_SEPARATOR . "redis.conf"); define("PHP_PATH", __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "php"); define("PHP_FPM", PHP_PATH . DIRECTORY_SEPARATOR . "sbin" . DIRECTORY_SEPARATOR . "php-fpm"); define("NGINX_PATH", __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "nginx"); define("NGINX", NGINX_PATH . DIRECTORY_SEPARATOR . "sbin" . DIRECTORY_SEPARATOR . "nginx"); define("KILL", __DIR__ . DIRECTORY_SEPARATOR . "killio.sh"); define("WATCHDOG", __DIR__ . DIRECTORY_SEPARATOR . "web_watchdog"); } function setRunningMode() { $options = getopt("m::"); $mode = $options["m"] ?? "none"; switch ($mode) { case "all": define("RUN_MODE", MODE_ALL); goto HPqq4; case "produce": define("RUN_MODE", MODE_PRODUCE); goto HPqq4; case "revision": define("RUN_MODE", MODE_REVISION); goto HPqq4; case "startup": define("RUN_MODE", MODE_STARTUP); goto HPqq4; case "local": define("RUN_MODE", MODE_LOCAL); goto HPqq4; default: define("RUN_MODE", MODE_NONE); goto HPqq4; } bK1RF: HPqq4: }
© 2023 Quttera Ltd. All rights reserved.