major refactoring under the hood
[pharext/pharext] / src / pharext / Task / Extract.php
diff --git a/src/pharext/Task/Extract.php b/src/pharext/Task/Extract.php
new file mode 100644 (file)
index 0000000..b2f954f
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+namespace pharext\Task;
+
+use pharext\Task;
+use pharext\Tempdir;
+
+use Phar;
+use PharData;
+
+/**
+ * Extract a package archive
+ */
+class Extract implements Task
+{
+       /**
+        * @var Phar(Data)
+        */
+       private $source;
+
+       /**
+        * @param mixed $source archive location
+        */
+       public function __construct($source) {
+               if ($source instanceof Phar || $source instanceof PharData) {
+                       $this->source = $source;
+               } else {
+                       $this->source = new PharData($source);
+               }
+       }
+
+       /**
+        * @param bool $verbose
+        * @return \pharext\Tempdir
+        */
+       public function run($verbose = false) {
+               $dest = new Tempdir("extract");
+               $this->source->extractTo($dest);
+               return $dest;
+       }
+}