예제 #1
0
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);
}
예제 #2
0
        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 из веб-папки будет удален.