mirror of
https://github.com/hauke68/Magallanes.git
synced 2026-09-03 03:58:56 +02:00
Remove symfony/filesystem from project depends.
This commit is contained in:
@@ -4,7 +4,6 @@ namespace Mage\Task\BuiltIn\Filesystem;
|
||||
use Mage\Task\AbstractTask;
|
||||
use Mage\Task\Releases\IsReleaseAware;
|
||||
use Mage\Task\SkipException;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
|
||||
/**
|
||||
* Class LinkSharedFilesTask
|
||||
@@ -75,13 +74,12 @@ class LinkSharedFilesTask extends AbstractTask implements IsReleaseAware
|
||||
$sharedFolderPath = $remoteDirectory . $this->getParameter('shared', 'shared');
|
||||
$releasesDirectoryPath = $remoteDirectory . $this->getConfig()->release('directory', 'releases');
|
||||
$currentCopy = $releasesDirectoryPath . '/' . $this->getConfig()->getReleaseId();
|
||||
$fileSystem = new Filesystem();
|
||||
|
||||
foreach ($linkedEntities as $ePath) {
|
||||
list($entityPath, $strategy) = $this->getPath($ePath);
|
||||
if ($strategy === self::RELATIVE_LINKING) {
|
||||
$dirName = dirname($currentCopy . '/' . $entityPath);
|
||||
$target = $fileSystem->makePathRelative($sharedFolderPath, $dirName) . $entityPath;
|
||||
$target = $this->makePathRelative($sharedFolderPath, $dirName) . $entityPath;
|
||||
} else {
|
||||
$target = $sharedFolderPath . '/' . $entityPath;
|
||||
}
|
||||
@@ -94,6 +92,43 @@ class LinkSharedFilesTask extends AbstractTask implements IsReleaseAware
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given an existing path, convert it to a path relative to a given starting path
|
||||
*
|
||||
* @param string $endPath Absolute path of target
|
||||
* @param string $startPath Absolute path where traversal begins
|
||||
*
|
||||
* @return string Path of target relative to starting path
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @see https://github.com/symfony/Filesystem/blob/v2.6.1/Filesystem.php#L332
|
||||
*/
|
||||
private function makePathRelative($endPath, $startPath)
|
||||
{
|
||||
// Normalize separators on Windows
|
||||
if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
|
||||
$endPath = strtr($endPath, '\\', '/');
|
||||
$startPath = strtr($startPath, '\\', '/');
|
||||
}
|
||||
// Split the paths into arrays
|
||||
$startPathArr = explode('/', trim($startPath, '/'));
|
||||
$endPathArr = explode('/', trim($endPath, '/'));
|
||||
// Find for which directory the common path stops
|
||||
$index = 0;
|
||||
while (isset($startPathArr[$index]) && isset($endPathArr[$index]) && $startPathArr[$index] === $endPathArr[$index]) {
|
||||
$index++;
|
||||
}
|
||||
// Determine how deep the start path is relative to the common path (ie, "web/bundles" = 2 levels)
|
||||
$depth = count($startPathArr) - $index;
|
||||
// Repeated "../" for each level need to reach the common path
|
||||
$traverser = str_repeat('../', $depth);
|
||||
$endPathRemainder = implode('/', array_slice($endPathArr, $index));
|
||||
// Construct $endPath from traversing to the common path, then to the remaining $endPath
|
||||
$relativePath = $traverser . (strlen($endPathRemainder) > 0 ? $endPathRemainder . '/' : '');
|
||||
|
||||
return (strlen($relativePath) === 0) ? './' : $relativePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|string $linkedEntity
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user