Extract logic to determine which package manager
..is used Always Composer for PHP. npm, yarn or pnpm for node.
This commit is contained in:
parent
b2ccc4027f
commit
c6a6b4de5d
9 changed files with 202 additions and 24 deletions
|
@ -2,7 +2,9 @@
|
|||
|
||||
namespace App\Console\Command;
|
||||
|
||||
use App\Action\DeterminePackageManager;
|
||||
use App\Action\DetermineProjectLanguage;
|
||||
use App\Enum\PackageManager;
|
||||
use App\Enum\ProjectLanguage;
|
||||
use App\Process\Process;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
@ -47,12 +49,24 @@ final class PackageInstallCommand extends AbstractCommand
|
|||
break;
|
||||
|
||||
case ProjectLanguage::JavaScript->value:
|
||||
if ($this->filesystem->exists($workingDir.'/yarn.lock')) {
|
||||
$command = ['yarn', 'add'];
|
||||
} elseif ($this->filesystem->exists($workingDir.'/pnpm-lock.yaml')) {
|
||||
$command = ['pnpm', 'install'];
|
||||
} else {
|
||||
$command = ['npm', 'install'];
|
||||
$packageManager = new DeterminePackageManager(
|
||||
filesystem: $this->filesystem,
|
||||
projectLanguage: $language,
|
||||
workingDir: $workingDir,
|
||||
);
|
||||
|
||||
switch ($packageManager->getPackageManager()) {
|
||||
case PackageManager::pnpm->value:
|
||||
$command = ['pnpm', 'install'];
|
||||
break;
|
||||
|
||||
case PackageManager::yarn->value:
|
||||
$command = ['yarn', 'add'];
|
||||
break;
|
||||
|
||||
default:
|
||||
$command = ['npm', 'install'];
|
||||
break;
|
||||
}
|
||||
|
||||
$process = Process::create(
|
||||
|
|
Reference in a new issue