b2f954f0c44572957927f98e533739c6aad21565
[pharext/pharext] / src / pharext / Task / Extract.php
1 <?php
2
3 namespace pharext\Task;
4
5 use pharext\Task;
6 use pharext\Tempdir;
7
8 use Phar;
9 use PharData;
10
11 /**
12 * Extract a package archive
13 */
14 class Extract implements Task
15 {
16 /**
17 * @var Phar(Data)
18 */
19 private $source;
20
21 /**
22 * @param mixed $source archive location
23 */
24 public function __construct($source) {
25 if ($source instanceof Phar || $source instanceof PharData) {
26 $this->source = $source;
27 } else {
28 $this->source = new PharData($source);
29 }
30 }
31
32 /**
33 * @param bool $verbose
34 * @return \pharext\Tempdir
35 */
36 public function run($verbose = false) {
37 $dest = new Tempdir("extract");
38 $this->source->extractTo($dest);
39 return $dest;
40 }
41 }