102 lines
2.1 KiB
PHP
102 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Dipper\Console;
|
|
|
|
use Illuminate\Filesystem\Filesystem as IlluminateFilesystem;
|
|
|
|
/**
|
|
* @author HollyTeng <n.haoyuan@gmail.com>
|
|
* @author HollyTeng <n.haoyuan@gmail.com>
|
|
*/
|
|
trait Filesystem
|
|
{
|
|
/**
|
|
* Determine if a file or directory exists.
|
|
*
|
|
* @param string $path
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function exists($path)
|
|
{
|
|
return file_exists($path);
|
|
}
|
|
|
|
/**
|
|
* Create a file at the given path with the given contents.
|
|
*
|
|
* @param string $path
|
|
* @param string $contents
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function createFile($path, $contents = '', $lock = false)
|
|
{
|
|
$this->createDirectory(dirname($path));
|
|
|
|
return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
|
|
}
|
|
|
|
/**
|
|
* Create a directory.
|
|
*
|
|
* @param string $path
|
|
* @param int $mode
|
|
* @param bool $recursive
|
|
* @param bool $force
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function createDirectory($path, $mode = 0755, $recursive = true, $force = true)
|
|
{
|
|
if ($force) {
|
|
return @mkdir($path, $mode, $recursive);
|
|
}
|
|
|
|
return mkdir($path, $mode, $recursive);
|
|
}
|
|
|
|
/**
|
|
* Delete an existing file or directory at the given path.
|
|
*
|
|
* @param string $path
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function delete($path)
|
|
{
|
|
$filesystem = new IlluminateFilesystem();
|
|
|
|
$filesystem->delete($path);
|
|
}
|
|
|
|
/**
|
|
* Create a hard link to the target file or directory.
|
|
*
|
|
* @param string $target
|
|
* @param string $link
|
|
* @return void
|
|
*/
|
|
public function link($target, $link)
|
|
{
|
|
if (! windows_os()) {
|
|
return symlink($target, $link);
|
|
}
|
|
|
|
$mode = $this->isDirectory($target) ? 'J' : 'H';
|
|
|
|
exec("mklink /{$mode} \"{$link}\" \"{$target}\"");
|
|
}
|
|
|
|
/**
|
|
* Determine if the given path is a directory.
|
|
*
|
|
* @param string $directory
|
|
* @return bool
|
|
*/
|
|
public function isDirectory($directory)
|
|
{
|
|
return is_dir($directory);
|
|
}
|
|
}
|