@@ -23,11 +23,14 @@ use Symfony\Component\Filesystem\Filesystem;
23
23
* @author Kévin Dunglas <[email protected] >
24
24
*/
25
25
26
+ $ copy = false !== $ k = array_search ('--copy ' , $ argv , true );
27
+ $ copy && array_splice ($ argv , $ k , 1 );
26
28
$ pathToProject = $ argv [1 ] ?? getcwd ();
27
29
28
30
if (!is_dir ("$ pathToProject/vendor/symfony " )) {
29
- echo 'Link dependencies to components to a local clone of the main symfony/symfony GitHub repository. ' .PHP_EOL .PHP_EOL ;
30
- echo "Usage: $ argv [0 ] /path/to/the/project " .PHP_EOL .PHP_EOL ;
31
+ echo 'Link (or copy) dependencies to components to a local clone of the main symfony/symfony GitHub repository. ' .PHP_EOL .PHP_EOL ;
32
+ echo "Usage: $ argv [0 ] /path/to/the/project " .PHP_EOL ;
33
+ echo ' Use `--copy` to copy dependencies instead of symlink ' .PHP_EOL .PHP_EOL ;
31
34
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 ;
32
35
exit (1 );
33
36
}
@@ -48,7 +51,7 @@ foreach ($directories as $dir) {
48
51
49
52
foreach (glob ("$ pathToProject/vendor/symfony/* " , GLOB_ONLYDIR | GLOB_NOSORT ) as $ dir ) {
50
53
$ package = 'symfony/ ' .basename ($ dir );
51
- if (is_link ($ dir )) {
54
+ if (! $ copy && is_link ($ dir )) {
52
55
echo "\"$ package \" is already a symlink, skipping. " .PHP_EOL ;
53
56
continue ;
54
57
}
@@ -57,11 +60,17 @@ foreach (glob("$pathToProject/vendor/symfony/*", GLOB_ONLYDIR | GLOB_NOSORT) as
57
60
continue ;
58
61
}
59
62
60
- $ sfDir = '\\' === DIRECTORY_SEPARATOR ? $ sfPackages [$ package ] : $ filesystem ->makePathRelative ($ sfPackages [$ package ], dirname (realpath ($ dir )));
63
+ $ sfDir = ( '\\' === DIRECTORY_SEPARATOR || $ copy ) ? $ sfPackages [$ package ] : $ filesystem ->makePathRelative ($ sfPackages [$ package ], dirname (realpath ($ dir )));
61
64
62
65
$ filesystem ->remove ($ dir );
63
- $ filesystem ->symlink ($ sfDir , $ dir );
64
- echo "\"$ package \" has been linked to \"$ sfPackages [$ package ]\". " .PHP_EOL ;
66
+
67
+ if ($ copy ) {
68
+ $ filesystem ->mirror ($ sfDir , $ dir );
69
+ echo "\"$ package \" has been copied from \"$ sfPackages [$ package ]\". " .PHP_EOL ;
70
+ } else {
71
+ $ filesystem ->symlink ($ sfDir , $ dir );
72
+ echo "\"$ package \" has been linked to \"$ sfPackages [$ package ]\". " .PHP_EOL ;
73
+ }
65
74
}
66
75
67
76
foreach (glob ("$ pathToProject/var/cache/* " , GLOB_NOSORT ) as $ cacheDir ) {
0 commit comments