364 lines
8.7 KiB
PHP
364 lines
8.7 KiB
PHP
<?php
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | CatchAdmin [Just Like ~ ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2017 ~ now https://catchadmin.com All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Licensed ( https://github.com/JaguarJack/catchadmin/blob/master/LICENSE.md )
|
||
// +----------------------------------------------------------------------
|
||
// | Author: JaguarJack [ njphper@gmail.com ]
|
||
// +----------------------------------------------------------------------
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace Catch;
|
||
|
||
use Illuminate\Support\Facades\File;
|
||
use Illuminate\Support\Str;
|
||
|
||
class CatchAdmin
|
||
{
|
||
public const VERSION = '0.1.0';
|
||
|
||
/**
|
||
* version
|
||
*
|
||
*/
|
||
public static function version(): string
|
||
{
|
||
return static::VERSION;
|
||
}
|
||
|
||
/**
|
||
* module root path
|
||
*
|
||
* @return string
|
||
*/
|
||
public static function moduleRootPath(): string
|
||
{
|
||
return self::makeDir(base_path(config('catch.module.root')).DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* make dir
|
||
*
|
||
* @param string $dir
|
||
* @return string
|
||
*/
|
||
public static function makeDir(string $dir): string
|
||
{
|
||
if (! File::isDirectory($dir) && ! File::makeDirectory($dir, 0777, true)) {
|
||
throw new \RuntimeException(sprintf('Directory %s created Failed', $dir));
|
||
}
|
||
|
||
return $dir;
|
||
}
|
||
|
||
/**
|
||
* module dir
|
||
*
|
||
* @param string $module
|
||
* @param bool $make
|
||
* @return string
|
||
*/
|
||
public static function getModulePath(string $module, bool $make = true): string
|
||
{
|
||
if ($make) {
|
||
return self::makeDir(self::moduleRootPath().ucfirst($module).DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
return self::moduleRootPath().ucfirst($module).DIRECTORY_SEPARATOR;
|
||
}
|
||
|
||
/**
|
||
* delete module path
|
||
*
|
||
* @param string $module
|
||
* @return bool
|
||
*/
|
||
public static function deleteModulePath(string $module): bool
|
||
{
|
||
if (self::isModulePathExist($module)) {
|
||
File::deleteDirectory(self::getModulePath($module));
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* module path exists
|
||
*
|
||
* @param string $module
|
||
* @return bool
|
||
*/
|
||
public static function isModulePathExist(string $module): bool
|
||
{
|
||
return File::isDirectory(self::moduleRootPath().ucfirst($module).DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module migration dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleMigrationPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'database'.DIRECTORY_SEPARATOR.'migrations'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module seeder dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleSeederPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'database'.DIRECTORY_SEPARATOR.'seeder'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* get modules dir
|
||
*
|
||
* @return array
|
||
*/
|
||
public static function getModulesPath(): array
|
||
{
|
||
return File::directories(self::moduleRootPath());
|
||
}
|
||
|
||
/**
|
||
* get module root namespace
|
||
*
|
||
* @return string
|
||
*/
|
||
public static function getModuleRootNamespace(): string
|
||
{
|
||
return config('catch.module.namespace').'\\';
|
||
}
|
||
|
||
/**
|
||
* get module root namespace
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleNamespace($moduleName): string
|
||
{
|
||
return self::getModuleRootNamespace().ucfirst($moduleName).'\\';
|
||
}
|
||
|
||
/**
|
||
* model namespace
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleModelNamespace($moduleName): string
|
||
{
|
||
return self::getModuleNamespace($moduleName).'Models\\';
|
||
}
|
||
|
||
/**
|
||
* getServiceProviders
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleServiceProviderNamespace($moduleName): string
|
||
{
|
||
return self::getModuleNamespace($moduleName).'Providers\\';
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleServiceProvider($moduleName): string
|
||
{
|
||
return self::getModuleServiceProviderNamespace($moduleName).ucfirst($moduleName).'ServiceProvider';
|
||
}
|
||
|
||
/**
|
||
* controller namespace
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleControllerNamespace($moduleName): string
|
||
{
|
||
return self::getModuleNamespace($moduleName).'Http\\Controllers\\';
|
||
}
|
||
|
||
/**
|
||
* getModuleRequestNamespace
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleRequestNamespace($moduleName): string
|
||
{
|
||
return self::getModuleNamespace($moduleName).'Http\\Requests\\';
|
||
}
|
||
|
||
/**
|
||
* getModuleRequestNamespace
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleEventsNamespace($moduleName): string
|
||
{
|
||
return self::getModuleNamespace($moduleName).'Events\\';
|
||
}
|
||
|
||
/**
|
||
* getModuleRequestNamespace
|
||
*
|
||
* @param $moduleName
|
||
* @return string
|
||
*/
|
||
public static function getModuleListenersNamespace($moduleName): string
|
||
{
|
||
return self::getModuleNamespace($moduleName).'Listeners\\';
|
||
}
|
||
|
||
|
||
/**
|
||
* module provider dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleProviderPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Providers'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module model dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleModelPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Models'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module controller dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleControllerPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Http'.DIRECTORY_SEPARATOR.'Controllers'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module request dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleRequestPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Http'.DIRECTORY_SEPARATOR.'Requests'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module request dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleEventPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Events'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* module request dir
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleListenersPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Listeners'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* commands path
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getCommandsPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'Commands'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* commands namespace
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getCommandsNamespace(string $module): string
|
||
{
|
||
return self::getModuleNamespace($module).'Commands\\';
|
||
}
|
||
|
||
|
||
/**
|
||
* module route
|
||
*
|
||
* @param string $module
|
||
* @param string $routeName
|
||
* @return string
|
||
*/
|
||
public static function getModuleRoutePath(string $module, string $routeName = 'route.php'): string
|
||
{
|
||
return self::getModulePath($module).$routeName;
|
||
}
|
||
|
||
/**
|
||
* module route.php exists
|
||
*
|
||
* @param string $module
|
||
* @return bool
|
||
*/
|
||
public static function isModuleRouteExists(string $module): bool
|
||
{
|
||
return File::exists(self::getModuleRoutePath($module));
|
||
}
|
||
|
||
/**
|
||
* module views path
|
||
*
|
||
* @param string $module
|
||
* @return string
|
||
*/
|
||
public static function getModuleViewsPath(string $module): string
|
||
{
|
||
return self::makeDir(self::getModulePath($module).'views'.DIRECTORY_SEPARATOR);
|
||
}
|
||
|
||
/**
|
||
* relative path
|
||
*
|
||
* @param $path
|
||
* @return string
|
||
*/
|
||
public static function getModuleRelativePath($path): string
|
||
{
|
||
return Str::replaceFirst(base_path(), '.', $path);
|
||
}
|
||
}
|