Bläddra i källkod

Add Tar and Phar downloaders

Kirill chEbba Chebunin 13 år sedan
förälder
incheckning
43631ccd5b

+ 8 - 2
src/Composer/Downloader/PearDownloader.php

@@ -15,13 +15,19 @@ namespace Composer\Downloader;
 use Composer\Package\PackageInterface;
 
 /**
+ * Downloader for pear packages
+ *
  * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @author Kirill chEbba Chebunin <iam@chebba.org>
  */
-class PearDownloader extends FileDownloader
+class PearDownloader extends TarDownloader
 {
+    /**
+     * {@inheritDoc}
+     */
     protected function extract($file, $path)
     {
-        system(sprintf('tar -zxf %s', escapeshellarg($file)));
+        parent::extract($file, $path);
         @unlink($path . '/package.sig');
         @unlink($path . '/package.xml');
     }

+ 33 - 0
src/Composer/Downloader/PharDownloader.php

@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Downloader;
+
+use Composer\Package\PackageInterface;
+
+/**
+ * Downloader for phar files
+ *
+ * @author Kirill chEbba Chebunin <iam@chebba.org>
+ */
+class PharDownloader extends FileDownloader
+{
+    /**
+     * {@inheritDoc}
+     */
+    protected function extract($file, $path)
+    {
+        // Can throw an UnexpectedValueException
+        $archive = new \Phar($file);
+        $archive->extractTo($path);
+    }
+}

+ 33 - 0
src/Composer/Downloader/TarDownloader.php

@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Downloader;
+
+use Composer\Package\PackageInterface;
+
+/**
+ * Downloader for tar files: tar, tar.gz or tar.bz2
+ *
+ * @author Kirill chEbba Chebunin <iam@chebba.org>
+ */
+class TarDownloader extends FileDownloader
+{
+    /**
+     * {@inheritDoc}
+     */
+    protected function extract($file, $path)
+    {
+        // Can throw an UnexpectedValueException
+        $archive = new \PharData($file);
+        $archive->extractTo($path);
+    }
+}