lithium\console\command\Library::extract PHP Method

extract() public method

If both parameters exist, then the first will be the template archive and the second will be the name of the extracted archive li3 library extract myapp : uses the command/create/template/app.phar.gz li3 library extract another_archive myapp li3 library extract plugin li3_plugin : uses the command/create/template/plugin.phar.gz
public extract ( string $name = 'new', string $result = null ) : boolean
$name string if only param, command/create/template/app.phar.gz extracted to $name otherwise, the template name or full path to extract `from` phar.gz.
$result string if exists $name is extracted to $result
return boolean
    public function extract($name = 'new', $result = null)
    {
        $from = 'app';
        $to = $name;
        if ($result) {
            $from = $name;
            $to = $result;
        }
        $to = $this->_toPath($to);
        if ($from[0] !== '/') {
            $from = Libraries::locate('command.create.template', $from, array('filter' => false, 'type' => 'file', 'suffix' => '.phar.gz'));
            if (!$from || is_array($from)) {
                return false;
            }
        }
        if (file_exists($from)) {
            try {
                $archive = new Phar($from);
            } catch (Exception $e) {
                $this->error($e->getMessage());
                return false;
            }
            if ($archive->extractTo($to)) {
                $this->out(basename($to) . " created in " . dirname($to) . " from {$from}");
                return true;
            }
        }
        $this->error("Could not extract {$to} from {$from}");
        return false;
    }

Usage Example

Beispiel #1
0
 public function testExtractWhenLibraryDoesNotExist()
 {
     $this->skipIf(!extension_loaded('zlib'), 'The zlib extension is not loaded.');
     chdir($this->_testPath);
     $app = new Library(array('request' => new Request(), 'classes' => $this->classes));
     $app->library = 'does_not_exist';
     $result = $app->extract();
     $this->assertTrue($result);
     $this->assertTrue(file_exists($this->_testPath . '/new'));
     $path = realpath($this->_testPath);
     $tplPath = realpath(LITHIUM_LIBRARY_PATH . '/lithium/console/command/create/template');
     $expected = "new created in {$path} from {$tplPath}/app.phar.gz\n";
     $result = $app->response->output;
     $this->assertEqual($expected, $result);
     $this->_cleanUp();
 }
All Usage Examples Of lithium\console\command\Library::extract