This repository has been archived by the owner on Mar 1, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
link
72 lines (51 loc) · 2.56 KB
/
link
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env php
<?php
require __DIR__ . '/vendor/symfony/filesystem/Exception/ExceptionInterface.php';
require __DIR__ . '/vendor/symfony/filesystem/Exception/IOExceptionInterface.php';
require __DIR__ . '/vendor/symfony/filesystem/Exception/IOException.php';
require __DIR__ . '/vendor/symfony/filesystem/Filesystem.php';
use Symfony\Component\Filesystem\Filesystem;
$copy = false !== $k = \array_search('--copy', $argv, true);
$copy && \array_splice($argv, $k, 1);
$pathToProject = $argv[1] ?? \getcwd();
if ($argc !== 2) {
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);
}
$narrowsparkPackages = ['narrowspark/framework' => __DIR__];
$filesystem = new Filesystem();
$braces = ['Bridge', 'Component', 'Provider', 'Contract'];
$directories = \array_merge(...\array_values(\array_map(static function ($part) {
return \glob(__DIR__ . '/src/Viserio/' . $part . '/*', \GLOB_ONLYDIR | \GLOB_NOSORT);
}, $braces)));
$directories[] = __DIR__.'/src/Viserio/Contract';
foreach ($directories as $dir) {
if ($filesystem->exists($composer = "${dir}/composer.json")) {
$narrowsparkPackages[\json_decode(\file_get_contents($composer), false)->name] = $dir;
}
}
foreach (\glob("${pathToProject}/vendor/viserio/*", \GLOB_ONLYDIR | \GLOB_NOSORT) as $dir) {
$package = 'viserio/' . \basename($dir);
if (!$copy && \is_link($dir)) {
echo "[${package}] is already a symlink, skipping." . \PHP_EOL;
continue;
}
if (! isset($narrowsparkPackages[$package])) {
continue;
}
$narrowsparkDir = (DIRECTORY_SEPARATOR === '\\' || $copy) ? $narrowsparkPackages[$package] : $filesystem->makePathRelative($narrowsparkPackages[$package], \dirname(\realpath($dir)));
$filesystem->remove($dir);
if ($copy) {
$filesystem->mirror($narrowsparkDir, $dir);
echo "[${package}] has been copied from [${narrowsparkPackages[$package]}]\".".PHP_EOL;
} else {
$filesystem->symlink($narrowsparkDir, $dir);
echo "[${package}] has been linked to [${narrowsparkPackages[$package]}]\".".PHP_EOL;
}
}
foreach (\glob("${pathToProject}/storage/framework/*", \GLOB_NOSORT) as $cacheDir) {
$filesystem->remove($cacheDir);
}