mirror of https://gitee.com/karson/fastadmin.git
commit
b0cfaed544
|
|
@ -21,7 +21,7 @@ class Addon extends Command
|
|||
$this
|
||||
->setName('addon')
|
||||
->addOption('name', 'a', Option::VALUE_REQUIRED, 'addon name', null)
|
||||
->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create')
|
||||
->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package/move)', 'create')
|
||||
->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null)
|
||||
->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null)
|
||||
->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null)
|
||||
|
|
@ -51,7 +51,7 @@ class Addon extends Command
|
|||
if (!$name) {
|
||||
throw new Exception('Addon name could not be empty');
|
||||
}
|
||||
if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package'])) {
|
||||
if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package', 'move'])) {
|
||||
throw new Exception('Please input correct action name');
|
||||
}
|
||||
|
||||
|
|
@ -253,8 +253,69 @@ class Addon extends Command
|
|||
$zip->close();
|
||||
$output->info("Package Successed!");
|
||||
break;
|
||||
|
||||
default :
|
||||
case 'move':
|
||||
$movePath = [
|
||||
'adminOnlySelfDir' => ['admin/behavior', 'admin/controller', 'admin/library', 'admin/model', 'admin/validate', 'admin/view'],
|
||||
'adminAllSubDir' => ['admin/lang'],
|
||||
'publicDir' => ['public/assets/addons', 'public/assets/js/backend']
|
||||
];
|
||||
$paths = [];
|
||||
$appPath = str_replace('/', DS, APP_PATH);
|
||||
$rootPath = str_replace('/', DS, ROOT_PATH);
|
||||
foreach ($movePath as $k => $items) {
|
||||
switch ($k) {
|
||||
case 'adminOnlySelfDir':
|
||||
foreach ($items as $v) {
|
||||
$v = str_replace('/', DS, $v);
|
||||
$oldPath = $appPath . $v . DS . $name;
|
||||
$newPath = $rootPath . "addons" . DS . $name . DS . "application" . DS . $v . DS . $name;
|
||||
$paths[$oldPath] = $newPath;
|
||||
}
|
||||
break;
|
||||
case 'adminAllSubDir':
|
||||
foreach ($items as $v) {
|
||||
$v = str_replace('/', DS, $v);
|
||||
$vPath = $appPath . $v;
|
||||
$list = scandir($vPath);
|
||||
foreach ($list as $_v) {
|
||||
if (!in_array($_v, ['.', '..']) && is_dir($vPath . DS . $_v)) {
|
||||
$oldPath = $appPath . $v . DS . $_v . DS . $name;
|
||||
$newPath = $rootPath . "addons" . DS . $name . DS . "application" . DS . $v . DS . $_v . DS . $name;
|
||||
$paths[$oldPath] = $newPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'publicDir':
|
||||
foreach ($items as $v) {
|
||||
$v = str_replace('/', DS, $v);
|
||||
$oldPath = $rootPath . $v . DS . $name;
|
||||
$newPath = $rootPath . 'addons' . DS . $name . DS . $v . DS . $name;
|
||||
$paths[$oldPath] = $newPath;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
foreach ($paths as $oldPath => $newPath) {
|
||||
if (is_dir($oldPath)) {
|
||||
if ($force) {
|
||||
if (is_dir($newPath)) {
|
||||
$list = scandir($newPath);
|
||||
foreach ($list as $_v) {
|
||||
if (!in_array($_v, ['.', '..'])) {
|
||||
$file = $newPath . DS . $_v;
|
||||
@chmod($file, 0777);
|
||||
@unlink($file);
|
||||
}
|
||||
}
|
||||
@rmdir($newPath);
|
||||
}
|
||||
}
|
||||
copydirs($oldPath, $newPath);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -318,5 +379,5 @@ class Addon extends Command
|
|||
{
|
||||
return __DIR__ . '/Addon/stubs/' . $name . '.stub';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue