7b84ca1efa29abe34a543267ec1d436907d1c184
[pharext/pharext] / src / pharext / Task / GitClone.php
1 <?php
2
3 namespace pharext\Task;
4
5 use pharext\ExecCmd;
6 use pharext\Task;
7 use pharext\Tempdir;
8
9 /**
10 * Clone a git repo
11 */
12 class GitClone implements Task
13 {
14 /**
15 * @var string
16 */
17 private $source;
18
19 /**
20 * @param string $source git repo location
21 */
22 public function __construct($source) {
23 $this->source = $source;
24 }
25
26 /**
27 * @param bool $verbose
28 * @return \pharext\Tempdir
29 */
30 public function run($verbose = false) {
31 if ($verbose !== false) {
32 printf("Fetching %s ...\n", $this->source);
33 }
34 $local = new Tempdir("gitclone");
35 $cmd = new ExecCmd("git", $verbose);
36 $cmd->run(["clone", $this->source, $local]);
37 return $local;
38 }
39 }