* 3.4: [Validator] Allow underscore character "_" in URL username and password [SecurityBundle] Passwords are not encoded when algorithm set to \"true\" do not validate passwords when the hash is null [DI] Fix making the container path-independent when the app is in /app Allow copy instead of symlink for ./link script [FrameworkBundle] resolve service locators in `debug:*` commands bumped Symfony version to 3.4.37 updated VERSION for 3.4.36 update CONTRIBUTORS for 3.4.36 updated CHANGELOG for 3.4.36
81 lines
2.8 KiB
PHP
Executable File
81 lines
2.8 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (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.
|
|
*/
|
|
|
|
require __DIR__.'/src/Symfony/Component/Filesystem/Exception/ExceptionInterface.php';
|
|
require __DIR__.'/src/Symfony/Component/Filesystem/Exception/IOExceptionInterface.php';
|
|
require __DIR__.'/src/Symfony/Component/Filesystem/Exception/IOException.php';
|
|
require __DIR__.'/src/Symfony/Component/Filesystem/Filesystem.php';
|
|
|
|
use Symfony\Component\Filesystem\Filesystem;
|
|
|
|
/**
|
|
* Links dependencies to components to a local clone of the main symfony/symfony GitHub repository.
|
|
*
|
|
* @author Kévin Dunglas <dunglas@gmail.com>
|
|
*/
|
|
|
|
$copy = false !== $k = array_search('--copy', $argv, true);
|
|
$copy && array_splice($argv, $k, 1);
|
|
$pathToProject = $argv[1] ?? getcwd();
|
|
|
|
if (!is_dir("$pathToProject/vendor/symfony")) {
|
|
echo 'Link (or copy) dependencies to components to a local clone of the main symfony/symfony GitHub repository.'.PHP_EOL.PHP_EOL;
|
|
echo "Usage: $argv[0] /path/to/the/project".PHP_EOL;
|
|
echo ' Use `--copy` to copy dependencies instead of symlink'.PHP_EOL.PHP_EOL;
|
|
echo "The directory \"$pathToProject\" does not exist or the dependencies are not installed, did you forget to run \"composer install\" in your project?".PHP_EOL;
|
|
exit(1);
|
|
}
|
|
|
|
$sfPackages = array('symfony/symfony' => __DIR__);
|
|
|
|
$filesystem = new Filesystem();
|
|
$braces = array('Bundle', 'Bridge', 'Component', 'Component/Security', 'Contracts');
|
|
$directories = array_merge(...array_values(array_map(function ($part) {
|
|
return glob(__DIR__.'/src/Symfony/'.$part.'/*', GLOB_ONLYDIR | GLOB_NOSORT);
|
|
}, $braces)));
|
|
|
|
$directories[] = __DIR__.'/src/Symfony/Contracts';
|
|
|
|
foreach ($directories as $dir) {
|
|
if ($filesystem->exists($composer = "$dir/composer.json")) {
|
|
$sfPackages[json_decode(file_get_contents($composer))->name] = $dir;
|
|
}
|
|
}
|
|
|
|
foreach (glob("$pathToProject/vendor/symfony/*", GLOB_ONLYDIR | GLOB_NOSORT) as $dir) {
|
|
$package = 'symfony/'.basename($dir);
|
|
if (!$copy && is_link($dir)) {
|
|
echo "\"$package\" is already a symlink, skipping.".PHP_EOL;
|
|
continue;
|
|
}
|
|
|
|
if (!isset($sfPackages[$package])) {
|
|
continue;
|
|
}
|
|
|
|
$sfDir = ('\\' === DIRECTORY_SEPARATOR || $copy) ? $sfPackages[$package] : $filesystem->makePathRelative($sfPackages[$package], dirname(realpath($dir)));
|
|
|
|
$filesystem->remove($dir);
|
|
|
|
if ($copy) {
|
|
$filesystem->mirror($sfDir, $dir);
|
|
echo "\"$package\" has been copied from \"$sfPackages[$package]\".".PHP_EOL;
|
|
} else {
|
|
$filesystem->symlink($sfDir, $dir);
|
|
echo "\"$package\" has been linked to \"$sfPackages[$package]\".".PHP_EOL;
|
|
}
|
|
}
|
|
|
|
foreach (glob("$pathToProject/var/cache/*", GLOB_NOSORT) as $cacheDir) {
|
|
$filesystem->remove($cacheDir);
|
|
}
|