Exemplo n.º 1
0
$metapackage_repository->run('config', ['user.email', '*****@*****.**']);
$branches = array_filter($repository->getReferences()->getRemoteBranches(), function (Branch $branch) {
    if ($branch->isRemote() && preg_match('/^origin\\/8\\./', $branch->getName(), $matches)) {
        return TRUE;
    }
    return FALSE;
});
$tags = array_filter($repository->getReferences()->getTags(), function (Tag $tag) {
    return preg_match('/^8\\.[0-9]+\\.[0-9]+/', $tag->getName());
});
$refs = $tags + $branches;
$refs_array = [];
foreach ($refs as $ref) {
    $name = str_replace('origin/', '', $ref->getName());
    if ($ref instanceof Branch) {
        $name .= '-dev';
    }
    $refs_array[$name] = $ref;
}
$sorted = \Composer\Semver\Semver::sort(array_keys($refs_array));
foreach ($sorted as $version) {
    /** @var Gitonomy\Git\Reference\Tag|Gitonomy\Git\Reference\Branch $ref */
    $ref = $refs_array[$version];
    $repository->run('reset', ['--hard', $ref->getCommitHash()]);
    $path = $repository->getPath() . '/composer.lock';
    if (file_exists($path)) {
        $packageBuilder = PackageBuilder::fromLockfile($path);
        $dump = new Dumper($ref, $packageBuilder->buildPackage(), $metapackage_repository);
        $dump->write();
    }
}
 /**
  * @see Action::execute()
  */
 public function execute()
 {
     // call execute event
     parent::execute();
     // save selection
     if ($this->saveSelection) {
         $sql = '';
         foreach ($this->packages as $packageName => $packageData) {
             if (!empty($sql)) {
                 $sql .= ',';
             }
             $sql .= "(" . $this->source->sourceID . ",\r\n\t\t\t\t\t'" . escapeString($this->directory) . "',\r\n\t\t\t\t\t'" . escapeString($packageName) . "',\r\n\t\t\t\t\t'" . escapeString($packageData['hash']) . "',\r\n\t\t\t\t\t'" . escapeString($packageData['directory']) . "'\r\n\t\t\t\t\t)";
         }
         if (!empty($sql)) {
             $sql = "INSERT INTO\t\tpb" . PB_N . "_selected_package\r\n\t\t\t\t\t\t\t\t(sourceID, directory, packageName, hash, resourceDirectory)\r\n\t\t\t\t\tVALUES\t\t\t" . $sql . "\r\n\t\t\t\t\tON DUPLICATE KEY UPDATE\tresourceDirectory = VALUES(resourceDirectory)";
             WCF::getDB()->sendQuery($sql);
         }
     }
     // set package resources
     PackageHelper::registerPackageResources($this->packages);
     // read package
     $pr = new PackageReader($this->source->sourceID, $this->directory);
     try {
         // build package
         $pb = new PackageBuilder($this->source, $pr, $this->directory, $this->filename);
         if ($this->wcfSetupResource) {
             require_once PB_DIR . 'lib/system/package/StandalonePackageBuilder.class.php';
             $spb = new StandalonePackageBuilder($this->source, $this->wcfSetupResource);
             $spb->createWcfSetup($pb->getArchiveLocation());
         }
     } catch (SystemException $e) {
         PackageHelper::clearTemporaryFiles();
         throw $e;
     }
     // clear previously created archives
     PackageHelper::clearTemporaryFiles();
     // call executed event
     $this->executed();
     // forward
     HeaderUtil::redirect('index.php?page=SourceView&sourceID=' . $this->source->sourceID . SID_ARG_2ND_NOT_ENCODED);
     exit;
 }
 /**
  * Verifies if all neccessary packages are present
  *
  * @param	string	$packageType
  * @param	string	$directory
  */
 public function verifyPackages($packageType, $directory)
 {
     $directory = $this->source->sourceDirectory . $directory;
     // break if package type is unknown
     if (!isset($this->package[$packageType])) {
         return;
     }
     foreach ($this->package[$packageType] as $packageName => $package) {
         // we do not care about referenced packages with an empty file attribute
         if (empty($package['file'])) {
             continue;
         }
         // check for file in optionals/requiredments folder
         if (file_exists($directory . $package['file'])) {
             continue;
         }
         // look for previously built packages
         $location = PackageHelper::searchPackage($packageName);
         if (!is_null($location)) {
             if (!@copy($location, $directory . $package['file'])) {
                 throw new SystemException('Unable to copy archive (' . $package['file'] . '), check permissions for directory ' . $directory);
             }
             // register temporary file
             PackageHelper::registerTemporaryFile($directory . $package['file']);
             continue;
         }
         // set minimum required version or null if version does not matter
         $minVersion = isset($package['minversion']) ? $package['minversion'] : null;
         // search within cached packages
         $location = PackageHelper::searchCachedPackage($this->source->sourceID, $packageName, $minVersion);
         if (!is_null($location)) {
             $packageData = new PackageReader($this->source, $location);
             $pb = new PackageBuilder($this->source, $packageData, $location, 'pn', array(), true, true);
             // add directory if it does not exist
             FileUtil::makePath(dirname($directory . $package['file']), 0777);
             // copy archive
             if (!@copy($pb->getArchiveLocation(), $directory . $package['file'])) {
                 throw new SystemException('Unable to copy archive (' . $package['file'] . '), check permissions for directory ' . $directory);
             }
             // register temporary file
             PackageHelper::registerTemporaryFile($directory . $package['file']);
             continue;
         }
         // we were unable to locate or build package, thus we have no chance to build this package
         throw new SystemException('Can not build package, ' . $package['file'] . ' not found.');
     }
 }