Changeset View
Changeset View
Standalone View
Standalone View
src/filesystem/PhutilDirectoryFixture.php
- This file was added.
| <?php | |||||
| final class PhutilDirectoryFixture extends Phobject { | |||||
| protected $path; | |||||
| public static function newFromArchive($archive) { | |||||
| $obj = self::newEmptyFixture(); | |||||
| execx( | |||||
| 'tar -C %s -xzvvf %s', | |||||
| $obj->getPath(), | |||||
| Filesystem::resolvePath($archive)); | |||||
| return $obj; | |||||
| } | |||||
| public static function newEmptyFixture() { | |||||
| $obj = new PhutilDirectoryFixture(); | |||||
| $obj->path = Filesystem::createTemporaryDirectory(); | |||||
| return $obj; | |||||
| } | |||||
| private function __construct() { | |||||
| // <restricted> | |||||
| } | |||||
| public function __destruct() { | |||||
| Filesystem::remove($this->path); | |||||
| } | |||||
| public function getPath($to_file = null) { | |||||
| return $this->path.'/'.ltrim($to_file, '/'); | |||||
| } | |||||
| public function saveToArchive($path) { | |||||
| $tmp = new TempFile(); | |||||
| execx( | |||||
| 'tar -C %s -czvvf %s .', | |||||
| $this->getPath(), | |||||
| $tmp); | |||||
| $ok = rename($tmp, Filesystem::resolvePath($path)); | |||||
| if (!$ok) { | |||||
| throw new FilesystemException($path, pht('Failed to overwrite file.')); | |||||
| } | |||||
| return $this; | |||||
| } | |||||
| } | |||||