Remove symfony/filesystem from project depends.

This commit is contained in:
Андрей Колченко 2014-12-08 12:57:26 +03:00
parent e84689934d
commit 2a8beeb864
3 changed files with 41 additions and 55 deletions

View file

@ -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
*

View file

@ -6,8 +6,7 @@
"type": "library",
"keywords": ["deployment"],
"require": {
"php": ">=5.3",
"symfony/filesystem": ">=2.1.0,<=2.6.0"
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "4.3.5"

52
composer.lock generated
View file

@ -4,56 +4,8 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "61974b12f91cf9124bfd75a369d20ff8",
"packages": [
{
"name": "symfony/filesystem",
"version": "v2.6.0",
"target-dir": "Symfony/Component/Filesystem",
"source": {
"type": "git",
"url": "https://github.com/symfony/Filesystem.git",
"reference": "6f7c7e42f20ee200d8ac5d2ec1d2a524138305e0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Filesystem/zipball/6f7c7e42f20ee200d8ac5d2ec1d2a524138305e0",
"reference": "6f7c7e42f20ee200d8ac5d2ec1d2a524138305e0",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Component\\Filesystem\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Filesystem Component",
"homepage": "http://symfony.com",
"time": "2014-11-16 17:28:09"
}
],
"hash": "a19528b890d301384e45c1ed7d221e26",
"packages": [],
"packages-dev": [
{
"name": "doctrine/instantiator",