pharext\Task\PeclFixup::run PHP Method

run() public method

public run ( boolean $verbose = false ) : string
$verbose boolean
return string sanitized source location
    public function run($verbose = false)
    {
        if ($verbose !== false) {
            printf("Sanitizing PECL dir ...\n");
        }
        $dirs = glob("{$this->source}/*", GLOB_ONLYDIR);
        $files = array_diff(glob("{$this->source}/*"), $dirs);
        $check = array_reduce($files, function ($r, $v) {
            return $v && fnmatch("package*.xml", basename($v));
        }, true);
        if (count($dirs) !== 1 || !$check) {
            throw new Exception("Does not look like an extracted PECL dir: {$this->source}");
        }
        $dest = current($dirs);
        foreach ($files as $file) {
            if ($verbose) {
                printf("Moving %s into %s ...\n", basename($file), basename($dest));
            }
            if (!rename($file, "{$dest}/" . basename($file))) {
                throw new Exception();
            }
        }
        return $dest;
    }

Usage Example

Beispiel #1
0
 function testPecl()
 {
     $cmd = new Task\StreamFetch("http://pecl.php.net/get/pecl_http", function ($pct) use(&$log) {
         $log[] = $pct;
     });
     $tmp = $cmd->run();
     $this->assertTrue(is_file($tmp), "is_file({$tmp})");
     $this->assertGreaterThan(1, count($log), "1 < count(\$log)");
     $this->assertContains(0, $log, "in_array(0, \$log)");
     $this->assertContains(1, $log, "in_array(1, \$log)");
     $cmd = new Task\Extract($tmp);
     $dir = $cmd->run();
     $this->assertTrue(is_dir($dir), "is_dir({$dir})");
     $this->assertTrue(is_file("{$dir}/package.xml"), "is_file({$dir}/package.xml");
     $cmd = new Task\PeclFixup($dir);
     $new = $cmd->run();
     $this->assertTrue(is_dir($new), "is_dir({$new})");
     $this->assertFalse(is_file("{$dir}/package.xml"), "is_file({$dir}/package.xml");
     $this->assertTrue(is_file("{$new}/package.xml"), "is_file({$new}/package.xml");
     (new Task\Cleanup($dir))->run();
     $this->assertFalse(is_dir($dir), "is_dir({$dir})");
     $this->assertFalse(is_dir($new), "is_dir({$new})");
 }