major refactoring under the hood
[pharext/pharext] / src / pharext / Task / Phpize.php
1 <?php
2
3 namespace pharext\Task;
4
5 use pharext\Exception;
6 use pharext\ExecCmd;
7 use pharext\Task;
8
9 /**
10 * Run phpize in the extension source directory
11 */
12 class Phpize implements Task
13 {
14 /**
15 * @var string
16 */
17 private $phpize;
18
19 /**
20 *
21 * @var string
22 */
23 private $cwd;
24
25 /**
26 * @param string $cwd working directory
27 * @param string $prefix install prefix, e.g. /usr/local
28 * @param string $common_name PHP program common name, e.g. php5
29 */
30 public function __construct($cwd, $prefix = null, $common_name = "php") {
31 $this->cwd = $cwd;
32 $cmd = $common_name . "ize";
33 if (isset($prefix)) {
34 $cmd = $prefix . "/bin/" . $cmd;
35 }
36 $this->phpize = $cmd;
37 }
38
39 /**
40 * @param bool $verbose
41 * @throws \pharext\Exception
42 */
43 public function run($verbose = false) {
44 $pwd = getcwd();
45 if (!chdir($this->cwd)) {
46 throw new Exception;
47 }
48 try {
49 $cmd = new ExecCmd($this->phpize, $verbose);
50 $cmd->run();
51 } finally {
52 chdir($pwd);
53 }
54 }
55 }