function main() { $args = $_SERVER['argv']; $script = array_shift($args); $normalize = FALSE; $composer = FALSE; $rem_args = array(); for ($i = 0, $m = count($args); $i < $m; $i++) { $arg = $args[$i]; if ($arg == '-N' || $arg == '--normalize') { $normalize = TRUE; } else { if ($arg == '-C' || $arg == '--composer') { $composer = TRUE; } else { if (!strncmp($arg, '-', 1)) { usage($script); exit(1); } else { $rem_args[] = $arg; } } } } $dir = getcwd(); if (count($rem_args)) { $dir = $rem_args[0]; putenv('GIT_DIR=' . $dir . DIRECTORY_SEPARATOR . '.git'); } // Retrieve the path to the repository's toplevel directory. $NUL = strncasecmp(PHP_OS, 'Win', 3) ? '/dev/null' : 'NUL'; exec('git rev-parse --show-toplevel 2>' . $NUL, $output, $exitcode); if ($exitcode != 0) { fprintf(STDERR, "Could not determine path to .git folder.%s", PHP_EOL); exit(1); } $dir = trim($output[0]); if ($composer) { composer($dir); } version($dir, $normalize); }
env()->setReleasePath($prevReleasePath); // Удаляем текущий релиз run("rm -rf {$currentReleasePath}"); } else { info(PHP_EOL . "No more releases you can revert to."); } })->desc("Rollback to previous Project Release"); /** * Обновить проект. * Новый релиз не создается, но текущий релиз обновляется composer-ом. * Это быстрее работает, чем app:deploy, но откат невозможен. */ task("app:update", function () { if (installed()) { cd(env()->getReleasePath()); $output = composer("update"); writeln(PHP_EOL . $output); } else { info(PHP_EOL . "No installed Project."); } })->desc("Update current Project Release"); /** * Инсталяция проекта. * Сначала нужно инсталировать проект командой app:install. * В дальнейшем только обновлять командой app:deploy или app:update. */ task("app:install", ["deploy:setup", "deploy:download", "deploy:current", "deploy:cleanup"])->desc("Install Project '{$name}'"); /** * Удаление проекта. * Каталог с данными пользователя (install/path/data) сохраняется (если опция --with-data != yes). * Внимание, файл .htaccess из веб-папки будет удален.