mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 06:30:59 +01:00
new cli command lntree
This commit is contained in:
parent
a38ea1a2e9
commit
df9b9db615
@ -64,6 +64,7 @@ function usage($action=null,$ret=0)
|
|||||||
echo "\t$cmd mount URL [path] (without path prints out the mounts)\n";
|
echo "\t$cmd mount URL [path] (without path prints out the mounts)\n";
|
||||||
echo "\t$cmd umount [-a|--all (restores default mounts)] URL|path\n";
|
echo "\t$cmd umount [-a|--all (restores default mounts)] URL|path\n";
|
||||||
echo "\t$cmd eacl URL [rwx-] [user or group]\n";
|
echo "\t$cmd eacl URL [rwx-] [user or group]\n";
|
||||||
|
echo "\t$cmd lntree [sqlfs://domain]from to\n";
|
||||||
echo "\tsudo -u apache $cmd migrate-db2fs --user root_admin --passwd password [--domain default] (migrates sqlfs content from DB to filesystem)\n";
|
echo "\tsudo -u apache $cmd migrate-db2fs --user root_admin --passwd password [--domain default] (migrates sqlfs content from DB to filesystem)\n";
|
||||||
|
|
||||||
echo "\nCommon options: --user user --password password [--domain domain] can be used to pass eGW credentials without using the URL writing.\n";
|
echo "\nCommon options: --user user --password password [--domain domain] can be used to pass eGW credentials without using the URL writing.\n";
|
||||||
@ -242,6 +243,10 @@ switch($cmd)
|
|||||||
do_find($argv,$find_options);
|
do_find($argv,$find_options);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'lntree':
|
||||||
|
do_lntree($argv[0], $argv[1]);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'cp':
|
case 'cp':
|
||||||
do_cp($argv,$recursive,$perms);
|
do_cp($argv,$recursive,$perms);
|
||||||
break;
|
break;
|
||||||
@ -474,7 +479,7 @@ function load_wrapper($url)
|
|||||||
case 'webdavs':
|
case 'webdavs':
|
||||||
require_once('HTTP/WebDAV/Client.php');
|
require_once('HTTP/WebDAV/Client.php');
|
||||||
break;
|
break;
|
||||||
case '': // default scheme is file and alsways available
|
case '': // default scheme is file and always available
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (!isset($GLOBALS['egw']) && !in_array($scheme,array('smb','imap')))
|
if (!isset($GLOBALS['egw']) && !in_array($scheme,array('smb','imap')))
|
||||||
@ -818,6 +823,55 @@ function do_find($bases,$options)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function do_lntree($from,$to)
|
||||||
|
{
|
||||||
|
echo "lntree $from $to\n";
|
||||||
|
if ($from[0] == '/') $from = 'sqlfs://default'.$from;
|
||||||
|
load_wrapper($from);
|
||||||
|
|
||||||
|
if (!file_exists($from) || $to[0] != '/' || file_exists($to) || !is_writable(dirname($to)))
|
||||||
|
{
|
||||||
|
usage(null,4);
|
||||||
|
}
|
||||||
|
egw_vfs::find($from, array(
|
||||||
|
'url' => true,
|
||||||
|
), '_ln', array($to));
|
||||||
|
}
|
||||||
|
|
||||||
|
function _ln($src, $base, $stat)
|
||||||
|
{
|
||||||
|
//echo "_ln('$src', '$base', ".array2string($stat).")\n";
|
||||||
|
$dst = $base.parse_url($src, PHP_URL_PATH);
|
||||||
|
|
||||||
|
if (is_link($src))
|
||||||
|
{
|
||||||
|
if (($target = sqlfs_stream_wrapper::readlink($src)))
|
||||||
|
{
|
||||||
|
if ($target[0] != '/')
|
||||||
|
{
|
||||||
|
$target = egw_vfs::dirname($src).'/'.$target;
|
||||||
|
}
|
||||||
|
echo "_ln('$src', '$base')\tsymlink('$base$target', '$dst')\n";
|
||||||
|
symlink($base.$target, $dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "_ln('$src', '$base')\tsqlfs::readlink('$src') failed\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif (is_dir($src))
|
||||||
|
{
|
||||||
|
echo "_ln('$src', '$base')\tmkdir('$dst', 0700, true)\n";
|
||||||
|
mkdir($dst, 0700, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$target = sqlfs_stream_wrapper::_fs_path($stat['ino']);
|
||||||
|
echo "_ln('$src', '$base')\tlink('$target', '$dst')\n";
|
||||||
|
link($target, $dst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a numerical mode to a symbolic mode-string
|
* Convert a numerical mode to a symbolic mode-string
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user