public static function getPackages($username)
 {
     $packagistClient = new \Packagist\Api\Client();
     //$packages = $packagistClient->search($username);
     // didn't notice much difference between multiple requests or a generic
     // search with multiple results.
     // this could be faster if I checked here if there was a path found already
     $packages = [];
     $packageNames = $packagistClient->all(array('vendor' => $username));
     foreach ($packageNames as $name) {
         array_push($packages, $packagistClient->get($name));
     }
     return $packages;
 }
    $ratio = (double) $options['r'];
} elseif (isset($options['ratio'])) {
    $ratio = (double) $options['ratio'];
} else {
    $ratio = 0;
}
// Compute the min number of keywords
if (isset($options['i'])) {
    $min = (int) $options['i'];
} elseif (isset($options['min'])) {
    $min = (int) $options['min'];
} else {
    $min = false;
}
// Get all keywords
$client = new Packagist\Api\Client();
$keywords = [];
$n = 0;
$projects = $client->all();
$count = count($projects);
$bar = new Dariuszp\CliProgressBar($count);
echo 'Pass 1/2: Analyzing projects' . PHP_EOL;
$bar->display();
foreach ($projects as $key => $name) {
    $bar->progress();
    try {
        $package = $client->get($name);
        $versions = $package->getVersions();
        if (!empty($versions)) {
            $n++;
            foreach (reset($versions)->getKeywords() as $keyword) {
 /**
  * runs the actual steps to verify if there are updates available
  *
  * @param SS_HTTPRequest $request
  */
 public function run($request)
 {
     // Retrieve the packages
     $packages = $this->getPackages();
     $dependencies = $this->getDependencies();
     // Load the Packagist API
     $packagist = new Packagist\Api\Client();
     // run through the packages and check each for updates
     foreach ($packages as $package) {
         // verify that we need to check this package.
         if (!isset($dependencies[$package])) {
             continue;
         } else {
             // get information about this package from packagist.
             try {
                 $latest = $packagist->get($package);
             } catch (Guzzle\Http\Exception\ClientErrorResponseException $e) {
                 SS_Log::log($e->getMessage(), SS_Log::WARN);
                 continue;
             }
             // Check if there is a newer version
             $currentVersion = $dependencies[$package];
             $result = $this->hasUpdate($currentVersion, $latest->getVersions());
             // Check if there is a newer version and if so record the update
             if ($result !== false) {
                 $this->recordUpdate($package, $currentVersion, $result);
             }
         }
     }
     // finished message
     $this->message('The task finished running. You can find the updated information in the database now.');
 }
Beispiel #4
0
/**
 *
 *
 *
 *
 */
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
/** @var Application $console */
$console->register('packagist:process-package')->setDefinition(array(new InputArgument('name', InputArgument::REQUIRED, 'name of the package'), new InputArgument('dir', InputArgument::REQUIRED, 'Directory to put the signature files into')))->setDescription('find all packages with this exact name and create signatures')->setCode(function (InputInterface $input, OutputInterface $output) use($config) {
    $name = $input->getArgument('name');
    $dir = $input->getArgument('dir');
    $client = new Packagist\Api\Client();
    $SignatureClient = new \Cotya\SignatureChainer\Client($config['userAgent'], $config['githubApiToken']);
    $storage = new \Cotya\SignatureChainer\Storage($dir . '/signatures');
    $packages = $client->get($name);
    $numberOfVersions = count($packages->getVersions());
    $output->writeln("found {$numberOfVersions} versions for {$packages->getName()}");
    foreach ($packages->getVersions() as $version) {
        /** @var \Packagist\Api\Result\Package\Version $version */
        if (!is_numeric(mb_substr($version->getVersionNormalized(), 0, 1, 'utf-8')) || mb_stripos($version->getVersionNormalized(), '-dev') !== false) {
            $output->writeln('jump over version: ' . $version->getVersionNormalized());
            continue;
        }
        $dist = $version->getDist();
        if (!$dist || !$dist->getUrl()) {
            $output->writeln('no Dist url found ');
            var_dump($dist);
 public function process()
 {
     // Retrieve the packages
     $packages = $this->getPackages();
     $dependencies = $this->getDependencies();
     // Load the Packagist API
     require_once BASE_PATH . '/vendor/autoload.php';
     $packagist = new Packagist\Api\Client();
     // Record updates we need to notify about
     $updates = array();
     // Loop through each package
     foreach ($packages as $package) {
         echo PHP_EOL;
         $this->logMessage('Checking ' . $package);
         // Get the currentVersion
         if (!isset($dependencies[$package])) {
             $this->logMessage($package . ' cannot be found in composer.json');
             continue;
         } else {
             $currentVersion = $dependencies[$package];
             $currentStability = $this->getStability($currentVersion);
             $versionDesc = $currentVersion;
             if ($currentStability !== 'stable') {
                 $versionDesc .= '-' . $currentStability;
             }
             $this->logMessage('Installed: ' . $versionDesc, true);
         }
         // Get the details from packagist
         try {
             $latest = $packagist->get($package);
         } catch (Guzzle\Http\Exception\ClientErrorResponseException $ex) {
             $this->logMessage($ex->getMessage());
             continue;
         }
         $versions = $latest->getVersions();
         // Check if there is a newer version
         $result = $this->hasUpdate($currentVersion, $versions);
         if ($result === false) {
             $this->logMessage('Up to date');
         } else {
             $this->logMessage('Update to ' . $result);
         }
         // Record the result and check if any update is newer than one we knew about before
         $update = $this->recordUpdate($package, $currentVersion, $result);
         if ($update) {
             $updates[$package] = array('package' => $package, 'installed' => $versionDesc, 'latest' => $result);
         }
     }
     // Email updates
     $this->emailUpdates($updates);
 }
Beispiel #6
0
 /**
  * @param $packageName
  * @return mixed
  */
 public function getPackage($packageName)
 {
     $package = null;
     if (!empty($packageName)) {
         try {
             $client = new \Packagist\Api\Client();
             $package = $client->get($packageName);
         } catch (\Exception $e) {
         }
     }
     return $package;
 }