3 namespace pharext\Task
;
9 * Fixup package.xml files in an extracted PECL dir
11 class PeclFixup
implements Task
19 * @param string $source source directory
21 public function __construct($source) {
22 $this->source
= $source;
26 * @param bool $verbose
27 * @return string sanitized source location
28 * @throws \pahrext\Exception
30 public function run($verbose = false) {
31 if ($verbose !== false) {
32 printf("Sanitizing PECL dir ...\n");
34 $dirs = glob("{$this->source}/*", GLOB_ONLYDIR
);
35 $files = array_diff(glob("{$this->source}/*"), $dirs);
36 $check = array_reduce($files, function($r, $v) {
37 return $v && fnmatch("package*.xml", basename($v));
40 if (count($dirs) !== 1 ||
!$check) {
41 throw new Exception("Does not look like an extracted PECL dir: {$this->source}");
44 $dest = current($dirs);
46 foreach ($files as $file) {
48 printf("Moving %s into %s ...\n", basename($file), basename($dest));
50 if (!rename($file, "$dest/" . basename($file))) {