Skip to content

Commit 48755b1

Browse files
bug #766 Use Composer vendor-dir (tgalopin)
This PR was merged into the 1.12-dev branch. Discussion ---------- Use Composer vendor-dir Extracted from #737 Commits ------- 9127994 Use Composer vendor-dir
2 parents 8e4b174 + 9127994 commit 48755b1

File tree

4 files changed

+16
-9
lines changed

4 files changed

+16
-9
lines changed

src/Flex.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
use Composer\Script\ScriptEvents;
4949
use Symfony\Component\Console\Input\ArgvInput;
5050
use Symfony\Component\Console\Output\OutputInterface;
51+
use Symfony\Component\Filesystem\Filesystem;
5152
use Symfony\Flex\Event\UpdateEvent;
5253
use Symfony\Flex\Unpack\Operation;
5354
use Symfony\Thanks\Thanks;
@@ -584,9 +585,12 @@ function ($value) {
584585
}
585586
}
586587

587-
private function synchronizePackageJson(?string $rootDir)
588+
private function synchronizePackageJson(string $rootDir)
588589
{
589-
$synchronizer = new PackageJsonSynchronizer($rootDir);
590+
$rootDir = realpath($rootDir);
591+
$vendorDir = trim((new Filesystem())->makePathRelative($this->config->get('vendor-dir'), $rootDir), \DIRECTORY_SEPARATOR);
592+
593+
$synchronizer = new PackageJsonSynchronizer($rootDir, $vendorDir);
590594

591595
if ($synchronizer->shouldSynchronize()) {
592596
$packagesNames = array_column($this->composer->getLocker()->getLockData()['packages'] ?? [], 'name');

src/PackageJsonSynchronizer.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
class PackageJsonSynchronizer
2525
{
2626
private $rootDir;
27+
private $vendorDirname;
2728

28-
public function __construct(?string $rootDir)
29+
public function __construct(string $rootDir, string $vendorDirname)
2930
{
3031
$this->rootDir = $rootDir;
32+
$this->vendorDirname = $vendorDirname;
3133
}
3234

3335
public function shouldSynchronize(): bool
@@ -81,7 +83,7 @@ private function addPackageJsonLink(string $phpPackage): bool
8183
}
8284

8385
$manipulator = new JsonManipulator(file_get_contents($this->rootDir.'/package.json'));
84-
$manipulator->addSubNode('devDependencies', '@'.$phpPackage, 'file:vendor/'.$phpPackage.$assetsDir);
86+
$manipulator->addSubNode('devDependencies', '@'.$phpPackage, 'file:'.$this->vendorDirname.'/'.$phpPackage.$assetsDir);
8587

8688
$content = json_decode($manipulator->getContents(), true);
8789

@@ -112,7 +114,7 @@ private function registerWebpackResources(array $phpPackages)
112114
}
113115

114116
// Register in config
115-
$packageJsonPath = $this->rootDir.'/vendor/'.$phpPackage.$assetsDir.'/package.json';
117+
$packageJsonPath = $this->rootDir.'/'.$this->vendorDirname.'/'.$phpPackage.$assetsDir.'/package.json';
116118
$packageJson = (new JsonFile($packageJsonPath))->read();
117119

118120
foreach ($packageJson['symfony']['controllers'] ?? [] as $controllerName => $defaultConfig) {
@@ -169,7 +171,7 @@ public function registerPeerDependencies(array $phpPackages)
169171
continue;
170172
}
171173

172-
$packageJsonPath = $this->rootDir.'/vendor/'.$phpPackage.$assetsDir.'/package.json';
174+
$packageJsonPath = $this->rootDir.'/'.$this->vendorDirname.'/'.$phpPackage.$assetsDir.'/package.json';
173175
$packageJson = (new JsonFile($packageJsonPath))->read();
174176
$versionParser = new VersionParser();
175177

@@ -198,7 +200,7 @@ public function registerPeerDependencies(array $phpPackages)
198200
private function resolveAssetsDir(string $phpPackage)
199201
{
200202
foreach (['/assets', '/Resources/assets'] as $subdir) {
201-
if (file_exists($this->rootDir.'/vendor/'.$phpPackage.$subdir.'/package.json')) {
203+
if (file_exists($this->rootDir.'/'.$this->vendorDirname.'/'.$phpPackage.$subdir.'/package.json')) {
202204
return $subdir;
203205
}
204206
}

tests/FlexTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,12 +325,13 @@ private function mockFlex(BufferIO $io, RootPackageInterface $package, Recipe $r
325325
return \Closure::bind(function () use ($composer, $io, $configurator, $downloader, $lock) {
326326
$flex = new Flex();
327327
$flex->composer = $composer;
328+
$flex->config = $composer->getConfig();
328329
$flex->io = $io;
329330
$flex->configurator = $configurator;
330331
$flex->downloader = $downloader;
331332
$flex->runningCommand = function () {
332333
};
333-
$flex->options = new Options(['config-dir' => 'config', 'var-dir' => 'var']);
334+
$flex->options = new Options(['config-dir' => 'config', 'var-dir' => 'var', 'root-dir' => '.']);
334335
$flex->lock = $lock;
335336

336337
return $flex;

tests/PackageJsonSynchronizerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protected function setUp(): void
2626
$this->tempDir = sys_get_temp_dir().'/flex-package-json-'.substr(md5(uniqid('', true)), 0, 6);
2727
(new Filesystem())->mirror(__DIR__.'/Fixtures/packageJson', $this->tempDir);
2828

29-
$this->synchronizer = new PackageJsonSynchronizer($this->tempDir);
29+
$this->synchronizer = new PackageJsonSynchronizer($this->tempDir, 'vendor');
3030
}
3131

3232
protected function tearDown(): void

0 commit comments

Comments
 (0)