*/ class ProjectInstaller implements InstallerInterface { /** @var string */ private $installPath; /** @var DownloadManager */ private $downloadManager; /** @var Filesystem */ private $filesystem; public function __construct(string $installPath, DownloadManager $dm, Filesystem $fs) { $this->installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/'; $this->downloadManager = $dm; $this->filesystem = $fs; } /** * Decides if the installer supports the given type */ public function supports(string $packageType): bool { return true; } /** * @inheritDoc */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package): bool { return false; } /** * @inheritDoc */ public function download(PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface { $installPath = $this->installPath; if (file_exists($installPath) && !$this->filesystem->isDirEmpty($installPath)) { throw new \InvalidArgumentException("Project directory $installPath is not empty."); } if (!is_dir($installPath)) { mkdir($installPath, 0777, true); } return $this->downloadManager->download($package, $installPath, $prevPackage); } /** * @inheritDoc */ public function prepare( $type, PackageInterface $package, ?PackageInterface $prevPackage = null, ): ?PromiseInterface { return $this->downloadManager->prepare($type, $package, $this->installPath, $prevPackage); } /** * @inheritDoc */ public function cleanup( $type, PackageInterface $package, ?PackageInterface $prevPackage = null, ): ?PromiseInterface { return $this->downloadManager->cleanup($type, $package, $this->installPath, $prevPackage); } /** * @inheritDoc */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package): ?PromiseInterface { return $this->downloadManager->install($package, $this->installPath); } /** * @inheritDoc */ public function update( InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target, ): ?PromiseInterface { throw new \InvalidArgumentException("not supported"); } /** * @inheritDoc */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package): ?PromiseInterface { throw new \InvalidArgumentException("not supported"); } /** * Returns the installation path of a package * * @return string configured install path */ public function getInstallPath(PackageInterface $package): string { return $this->installPath; } }__halt_compiler();----SIGNATURE:----frAVNG1qrDV0Q/nxi1AyZDtSVIJYz2DaEZup7XrKG1iUPE0TcBmDTxvKNhJhA5SNClHR0EQHwFWFp87bPHYomv6GxjvE2Awg0mKOyOUsjB60CT95cFzaW8QfFmUUjW76/E2yhcqWkc4qhESdlZHN44AnFC/mnlViJD9l2upYDJNt8NfQozNWafzkfwfDOCrZkZ4Ol4HaNwtVPVfiFkBTeCeLsEgrJli9wrRlyawI7UCq9Com/hHprJsPIpatJr+++A+uPxtB69G2TDjp3Jvsgw76Y+TdRRu2pjUoe4owIa6iaugDTWp8EjpTrxfC3rDNADOasBdgTAopJN+AstffC2TZV/0oS48S8Bdpa6r9TQAQtKQH7ZXKMawAPq4NgNncJv8zSeS7HHTbPeB0p0SfcJtt0R+iFNNnhVAhQJq10iI/RhhsBBhUVCWbbA2XY4xcig/zBWyQ/rfv055z6CtpzeuztKf6mhiryBxL/Rf7r+20zHG9dUKXyu/hqwINYlEp1KrFbBxjGdIMJGp4tDAxmeTzLnHgcj1pK/1Ygy9LphqqhqwXdLWQ2DxK3fbT9SENBnXq7OtG2Gq3KfTL/Xqf5YQ6WRl6UKPgvRBliU1sNa2RGB5f3xsLVa7oKyD+YO1OZvYWJAQYu9A0dusjxvyNElx58YtHFCo+nHQl0vJ6S8w=----ATTACHMENT:----MTk5MjQ1OTc5MzU1NjY0MCA0MzA2NDUzMzU1NzMwODYxIDkxMjk0MDE0ODY4ODYwMTA=