<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -22,7 +22,7 @@ exit($cli-&gt;run());
  */
 class Pirum_CLI
 {
-  const VERSION = '0.9.1';
+  const VERSION = '0.9.2';
 
   protected $options;
   protected $formatter;
@@ -769,44 +769,58 @@ EOF;
     $files = array_reverse($files);
 
     // get information for each package
+    $packages = array();
     foreach ($files as $file)
     {
-      $this-&gt;formatter and print $this-&gt;formatter-&gt;formatSection('INFO', 'Parsing Package '.basename($file));
+      $package = new Pirum_Package($file);
+      if (file_exists($file = $this-&gt;targetDir.'/rest/r/'.strtolower($package-&gt;getName()).'/package.'.$package-&gt;getVersion().'.xml'))
+      {
+        $package-&gt;loadPackageFromFile($file);
+      }
+      else
+      {
+        $package-&gt;loadPackageFromArchive();
+      }
 
-      $info = new Pirum_Package($file);
+      $packages[] = $package;
+    }
 
-      if ($info-&gt;getChannel() != $this-&gt;server-&gt;name)
+    foreach ($packages as $package)
+    {
+      $this-&gt;formatter and print $this-&gt;formatter-&gt;formatSection('INFO', 'Parsing Package '.basename($file));
+
+      if ($package-&gt;getChannel() != $this-&gt;server-&gt;name)
       {
-        throw new Exception(sprintf('Package &quot;%s&quot; channel (%s) is not %s.', $info-&gt;getName(), $info-&gt;getChannel(), $this-&gt;server-&gt;name));
+        throw new Exception(sprintf('Package &quot;%s&quot; channel (%s) is not %s.', $package-&gt;getName(), $package-&gt;getChannel(), $this-&gt;server-&gt;name));
       }
 
-      if (!isset($this-&gt;packages[$info-&gt;getName()]))
+      if (!isset($this-&gt;packages[$package-&gt;getName()]))
       {
-        $this-&gt;packages[$info-&gt;getName()] = array(
-          'name'        =&gt; $info-&gt;getName(),
-          'license'     =&gt; $info-&gt;getLicense(),
-          'summary'     =&gt; $info-&gt;getSummary(),
-          'description' =&gt; $info-&gt;getDescription(),
+        $this-&gt;packages[$package-&gt;getName()] = array(
+          'name'        =&gt; $package-&gt;getName(),
+          'license'     =&gt; $package-&gt;getLicense(),
+          'summary'     =&gt; $package-&gt;getSummary(),
+          'description' =&gt; $package-&gt;getDescription(),
           'releases'    =&gt; array(),
           'maintainers' =&gt; array(),
-          'current_maintainers' =&gt; $info-&gt;getMaintainers(),
+          'current_maintainers' =&gt; $package-&gt;getMaintainers(),
         );
       }
 
-      $this-&gt;packages[$info-&gt;getName()]['releases'][] = array(
-        'version'     =&gt; $info-&gt;getVersion(),
-        'api_version' =&gt; $info-&gt;getApiVersion(),
-        'stability'   =&gt; $info-&gt;getStability(),
-        'date'        =&gt; $info-&gt;getDate(),
-        'filesize'    =&gt; $info-&gt;getFilesize(),
-        'php'         =&gt; $info-&gt;getMinPhp(),
-        'deps'        =&gt; $info-&gt;getDeps(),
-        'notes'       =&gt; $info-&gt;getNotes(),
-        'maintainers' =&gt; $info-&gt;getMaintainers(),
-        'info'        =&gt; $info,
+      $this-&gt;packages[$package-&gt;getName()]['releases'][] = array(
+        'version'     =&gt; $package-&gt;getVersion(),
+        'api_version' =&gt; $package-&gt;getApiVersion(),
+        'stability'   =&gt; $package-&gt;getStability(),
+        'date'        =&gt; $package-&gt;getDate(),
+        'filesize'    =&gt; $package-&gt;getFilesize(),
+        'php'         =&gt; $package-&gt;getMinPhp(),
+        'deps'        =&gt; $package-&gt;getDeps(),
+        'notes'       =&gt; $package-&gt;getNotes(),
+        'maintainers' =&gt; $package-&gt;getMaintainers(),
+        'info'        =&gt; $package,
       );
 
-      $this-&gt;packages[$info-&gt;getName()]['maintainers'] = array_merge($info-&gt;getMaintainers(), $this-&gt;packages[$info-&gt;getName()]['maintainers']);
+      $this-&gt;packages[$package-&gt;getName()]['maintainers'] = array_merge($package-&gt;getMaintainers(), $this-&gt;packages[$package-&gt;getName()]['maintainers']);
     }
   }
 
@@ -894,6 +908,7 @@ class Pirum_Package
   protected $name;
   protected $version;
   protected $archive;
+  protected $packageFile;
 
   public function __construct($archive)
   {
@@ -909,8 +924,6 @@ class Pirum_Package
     $this-&gt;tmpDir = sys_get_temp_dir().'/pirum_package_'.uniqid();
 
     mkdir($this-&gt;tmpDir, 0777, true);
-
-    $this-&gt;loadPackage();
   }
 
   public function __destruct()
@@ -1025,21 +1038,14 @@ class Pirum_Package
 
   public function copyPackageXml($target)
   {
-    copy($this-&gt;tmpDir.'/package.xml', $target);
+    copy($this-&gt;packageFile, $target);
   }
 
-  protected function loadPackage()
+  public function loadPackageFromFile($file)
   {
-    copy($this-&gt;archive, $this-&gt;tmpDir.'/archive.tgz');
-    system('cd '.$this-&gt;tmpDir.' &amp;&amp; tar zxpf archive.tgz');
+    $this-&gt;packageFile = $file;
 
-    if (!is_file($this-&gt;tmpDir.'/package.xml'))
-    {
-      throw new InvalidArgumentException('The PEAR package does not have a package.xml file.');
-    }
-
-    $packageXml = file_get_contents($this-&gt;tmpDir.'/package.xml');
-    $this-&gt;package = new SimpleXMLElement($packageXml);
+    $this-&gt;package = new SimpleXMLElement(file_get_contents($file));
 
     // check name
     if ($this-&gt;name != (string) $this-&gt;package-&gt;name)
@@ -1054,6 +1060,19 @@ class Pirum_Package
     }
   }
 
+  public function loadPackageFromArchive()
+  {
+    copy($this-&gt;archive, $this-&gt;tmpDir.'/archive.tgz');
+    system('cd '.$this-&gt;tmpDir.' &amp;&amp; tar zxpf archive.tgz');
+
+    if (!is_file($this-&gt;tmpDir.'/package.xml'))
+    {
+      throw new InvalidArgumentException('The PEAR package does not have a package.xml file.');
+    }
+
+    $this-&gt;loadPackageFromFile($this-&gt;tmpDir.'/package.xml');
+  }
+
   protected function XMLToArray($xml)
   {
     $array = array();</diff>
      <filename>application/scripts/pirum</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ae0c1f9a2685a186fd17ca5bf9c0645a3af06430</id>
    </parent>
  </parents>
  <author>
    <name>Fabien Potencier</name>
    <email>fabien.potencier@gmail.com</email>
  </author>
  <url>http://github.com/swiftmailer/swiftmailer-website/commit/f10f8b995a7e205a23e515fc9a48c5dc276d6709</url>
  <id>f10f8b995a7e205a23e515fc9a48c5dc276d6709</id>
  <committed-date>2009-11-09T01:32:17-08:00</committed-date>
  <authored-date>2009-11-09T01:32:17-08:00</authored-date>
  <message>updated pirum to 0.9.2</message>
  <tree>412f0567478b9ebfb0b7013c0c1d5cc24a57c3a0</tree>
  <committer>
    <name>Fabien Potencier</name>
    <email>fabien.potencier@gmail.com</email>
  </committer>
</commit>
