You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
4.4 KiB
113 lines
4.4 KiB
<?php
|
|
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Str;
|
|
|
|
class Vuex
|
|
{
|
|
private static bool $isCategory = false;
|
|
private static string $module;
|
|
private static string $storeModule;
|
|
private static bool $replace = false;
|
|
private static $instance = null;
|
|
|
|
private function __construct($arguments, $options)
|
|
{
|
|
static::$isCategory = $options['category'];
|
|
static::$replace = $options['replace'];
|
|
static::$module = $arguments['module'];
|
|
static::$storeModule = $arguments['store-module'];
|
|
}
|
|
|
|
public static function initialize ($arguments, $options) {
|
|
|
|
if (!self::$instance) {
|
|
self::$instance = new static($arguments, $options);
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
|
|
public function createAllFiles () {
|
|
|
|
if (static::$storeModule && static::$module) {
|
|
static::createStoreFiles();
|
|
static::createRepositoryFile();
|
|
static::createResourceFile();
|
|
|
|
if (!static::$isCategory) {
|
|
static::createStorageFile();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function createStoreFiles () {
|
|
$moduleFiles = ['actions', 'mutations', 'state', 'getters'];
|
|
$basePath = 'modules/wm-' . static::$module . '/resources/js/store/modules/' . static::$storeModule . '/';
|
|
$baseDefaultPath = static::$isCategory ? 'resources/js/Default/store/category/' : 'resources/js/Default/store/store/';
|
|
|
|
foreach ($moduleFiles as $moduleFile) {
|
|
if (static::hasExists($basePath . $moduleFile)) {
|
|
$data = Storage::disk('local')->get($baseDefaultPath . $moduleFile . '.text');
|
|
$data = static::replacer($data);
|
|
Storage::disk('local')->put($basePath . $moduleFile . '.js', $data);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function createRepositoryFile () {
|
|
$baseRepositoryPath = 'modules/wm-' . static::$module . '/resources/js/abstraction/repositories/' . static::$storeModule . '/' . static::$storeModule . 'Repository.js';
|
|
$baseDefaultPath = static::$isCategory ? 'resources/js/Default/abstraction/repositories/categoryRepository.text' : 'resources/js/Default/abstraction/repositories/repository.text';
|
|
|
|
if (static::hasExists($baseRepositoryPath)) {
|
|
$data = Storage::disk('local')->get($baseDefaultPath);
|
|
$data = static::replacer($data);
|
|
Storage::disk('local')->put($baseRepositoryPath, $data);
|
|
}
|
|
}
|
|
|
|
public static function createResourceFile() {
|
|
$baseResourcePath = 'modules/wm-' . static::$module . '/resources/js/abstraction/resources/' . static::$storeModule . '/' . static::$storeModule . 'Resource.js';
|
|
$baseDefaultPath = static::$isCategory ? 'resources/js/Default/abstraction/resources/categoryResource.text' : 'resources/js/Default/abstraction/resources/resource.text';
|
|
|
|
if (static::hasExists($baseResourcePath)) {
|
|
$data = Storage::disk('local')->get($baseDefaultPath);
|
|
$data = static::replacer($data);
|
|
Storage::disk('local')->put($baseResourcePath, $data);
|
|
}
|
|
}
|
|
public static function createStorageFile() {
|
|
$baseStoragePath = 'modules/wm-' . static::$module . '/resources/js/services/' . static::$storeModule . '.storage.js';
|
|
$baseDefaultPath = 'resources/js/Default/services/storage.text';
|
|
|
|
if (static::hasExists($baseStoragePath)) {
|
|
$data = Storage::disk('local')->get($baseDefaultPath);
|
|
$data = static::replacer($data);
|
|
Storage::disk('local')->put($baseStoragePath, $data);
|
|
}
|
|
}
|
|
|
|
private static function hasExists($path) {
|
|
$continue = true;
|
|
if (Storage::disk('local')->exists($path)) {
|
|
$continue = static::$replace;
|
|
}
|
|
return $continue;
|
|
}
|
|
|
|
private static function replacer($data) {
|
|
$data = str_replace('|-module-|', Str::camel(static::$storeModule), $data);
|
|
$data = str_replace('|-snake_module-|', Str::snake(static::$storeModule), $data);
|
|
$data = str_replace('|-Module-|', Str::title(static::$storeModule), $data);
|
|
$data = str_replace('|-MODULE-|', Str::upper(Str::snake(static::$storeModule)), $data);
|
|
$data = str_replace('|-BaseModule-|', Str::title(static::$module), $data);
|
|
return str_replace('|-baseModule-|', Str::camel(static::$module), $data);
|
|
}
|
|
}
|