123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #!/usr/bin/env php
- <?php
-
- /*
- * This file is part of the Symfony Standard Edition.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- $rootDir = dirname(__DIR__);
- $vendorDir = $rootDir.'/vendor';
-
- array_shift($argv);
- if (!isset($argv[0])) {
- exit(<<<EOF
- Symfony2 vendors script management.
-
- Specify a command to run:
-
- install: install vendors as specified in deps or deps.lock (recommended)
- update: update vendors to their latest versions (as specified in deps)
-
-
- EOF
- );
- }
-
- if (!in_array($command = array_shift($argv), array('install', 'update'))) {
- exit(sprintf("Command \"%s\" does not exist.\n", $command));
- }
-
- /*
- * Check wether this project is based on the Standard Edition that was
- * shipped with vendors or not.
- */
- if (is_dir($vendorDir.'/symfony') && !is_dir($vendorDir.'/symfony/.git') && !in_array('--reinstall', $argv)) {
- exit(<<<EOF
- Your project seems to be based on a Standard Edition that includes vendors.
-
- Try to run ./bin/vendors install --reinstall
-
-
- EOF
- );
- }
-
- if (!is_dir($vendorDir)) {
- mkdir($vendorDir, 0777, true);
- }
-
- // versions
- $versions = array();
- if ('install' === $command && file_exists($rootDir.'/deps.lock')) {
- foreach (file($rootDir.'/deps.lock', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
- $parts = array_values(array_filter(explode(' ', $line)));
- if (2 !== count($parts)) {
- exit(sprintf('The deps version file is not valid (near "%s")', $line));
- }
- $versions[$parts[0]] = $parts[1];
- }
- }
-
- $newversions = array();
- $deps = parse_ini_file($rootDir.'/deps', true, INI_SCANNER_RAW);
- if (false === $deps) {
- exit("The deps file is not valid ini syntax. Perhaps missing a trailing newline?\n");
- }
- foreach ($deps as $name => $dep) {
- $dep = array_map('trim', $dep);
-
- // revision
- if (isset($versions[$name])) {
- $rev = $versions[$name];
- } else {
- $rev = isset($dep['version']) ? $dep['version'] : 'origin/HEAD';
- }
-
- // install dir
- $installDir = isset($dep['target']) ? $vendorDir.'/'.$dep['target'] : $vendorDir.'/'.$name;
- if (in_array('--reinstall', $argv)) {
- if (PHP_OS == 'WINNT') {
- system(sprintf('rmdir /S /Q %s', escapeshellarg(realpath($installDir))));
- } else {
- system(sprintf('rm -rf %s', escapeshellarg($installDir)));
- }
- }
-
- echo "> Installing/Updating $name\n";
-
- // url
- if (!isset($dep['git'])) {
- exit(sprintf('The "git" value for the "%s" dependency must be set.', $name));
- }
- $url = $dep['git'];
-
- if (!is_dir($installDir)) {
- system(sprintf('git clone %s %s', escapeshellarg($url), escapeshellarg($installDir)));
- }
-
- system(sprintf('cd %s && git fetch origin && git reset --hard %s', escapeshellarg($installDir), escapeshellarg($rev)));
-
- if ('update' === $command) {
- ob_start();
- system(sprintf('cd %s && git log -n 1 --format=%%H', escapeshellarg($installDir)));
- $newversions[] = trim($name.' '.ob_get_clean());
- }
- }
-
- // update?
- if ('update' === $command) {
- file_put_contents($rootDir.'/deps.lock', implode("\n", $newversions));
- }
-
- // php on windows can't use the shebang line from system()
- $interpreter = PHP_OS == 'WINNT' ? 'php.exe' : '';
-
- // Update the bootstrap files
- system(sprintf('%s %s', $interpreter, escapeshellarg($rootDir.'/vendor/bundles/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php')));
-
- // Update assets
- system(sprintf('%s %s assets:install %s', $interpreter, escapeshellarg($rootDir.'/app/console'), escapeshellarg($rootDir.'/web/')));
-
- // Remove the cache
- system(sprintf('%s %s cache:clear --no-warmup', $interpreter, escapeshellarg($rootDir.'/app/console')));
|