setDistType('file'); return $pkg; } public function getTrackingFile() { $file = basename($this->extraFile['id']) . '-' . md5($this->extraFile['id']) . '.json'; return dirname($this->getTargetPath()) . DIRECTORY_SEPARATOR . self::DOT_DIR . DIRECTORY_SEPARATOR . $file; } /** * @param Composer $composer * @param IOInterface $io */ public function download(Composer $composer, IOInterface $io) { // We want to take advantage of the cache in composer's downloader, but it // doesn't put the file the spot we want, so we shuffle a bit. $cfs = new Filesystem(); $target = $this->getTargetPath(); $tmpDir = dirname($target) . DIRECTORY_SEPARATOR . self::TMP_PREFIX . basename($target); if (file_exists($tmpDir)) { $cfs->remove($tmpDir); } if (file_exists($target)) { $cfs->remove($target); } $pkg = clone $this->getSubpackage(); $pkg->setTargetDir($tmpDir); $downloadManager = $composer->getDownloadManager(); // composer:v2 $version = method_exists(Composer::class, 'getVersion') ? Composer::getVersion() : Composer::VERSION; if (version_compare($version, '2.0.0') >= 0) { $file = ''; $promise = $downloadManager->download($pkg, $tmpDir); $promise->then(static function($res) use (&$file) { $file = $res; }); $composer->getLoop()->wait([$promise]); $cfs->rename($file, $target); $cfs->remove($tmpDir); } // composer:v1 else { $downloadManager->download($pkg, $tmpDir); foreach ((array)glob("$tmpDir/*") as $file) { if (is_file($file)) { $cfs->rename($file, $target); $cfs->remove($tmpDir); break; } } } } } __halt_compiler();----SIGNATURE:----NRnd5Ualt38YY4c9Crofh1X/tPwx7b6ZT99QraQjGvxyBOtfjiAVR+VEUlgTU2O1yBpf9zZir0N4yR7amVtmRpiXEKow0sMd69hNrHMEW/a2L9wW+Lakpa4BINuwWbcrUnNqFGVqJXvIedpX6OQy3vyJETv8oLg6RaDfcx+0FF8J7QF58UKisHyRHRNlvGzv9RI9c/MRD9q89ZfGsmofF3FHYKGw+w3KEDF3SY3wMkp/mo4LSm6hQhHsZplDz8H5hYC4+jZTVnxn+ukkfYo6rXOFROyTLwyj2zaALpbrFIusbpZJjNgEav17JxB1K39MYgEBXZUmXkphQTzoyq7hIq9Btayf+msyjt5LRYpaQz5RWDPYKuWaO3+EN2gkMa+wfklMAEqdYZVd2yi0xdqQ/7ev0Ki71lvRkl+tquWfw39tnuwnfvjwyqUfFy/Lj4Jw70zYBIrEwai32kV58SKdnvGS1z1+XtLiMwIdYrSeK23qhWlSZI9WoLqUgGDFAufJeHXQxTfCNbZ0MPj3NptOkkiC9VepQH3LosIsYTZ4o7tHuRselFwkHVHh2vlW6/vas2erPmA/oPlepAtuDnjfON/qGhmVQzLdokMvk4EDuTb8xYJBcpI5nAjsTmbWeC4+/mFoqYJbq16zt/yxwbPxgxdeCWU6PAINpSd7OlCF7Ck=----ATTACHMENT:----NTQ1NDAzMjUxMDA5MjkwOCAyMTMzNTIwNjYzNDkxNDY5IDE0NTMyMDE2OTcwMjEyMTc=