1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mu1866-micro-module

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
main.shell.ts 3.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
陈 宏木 Отправлено 20.09.2024 08:55 c6ffb81
/**
* @author Da Mu
* @version 1.1.0
* @mail 317782199@qq.com
*/
import shell from 'shelljs';
import YAML from 'yamljs';
import { createLogger, format, transports } from "winston";
const config = YAML.load('main.config.yml');
/**
* @class Error echo or logs
*/
class ErrorOrLogs {
private static logs(err: String): void {
const globalLogger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(log => `${log.timestamp} ${log.level}: ${log.message}`)),
transports: [
new transports.File({
level: 'error',
filename: './main.shell.logs/error.log'
})
]
});
globalLogger.error(err);
};
public static show(err: String, switchLogs: Boolean): void {
switchLogs ? shell.echo(`Error: ${err} or main.shell.logs/*`) : shell.echo(`Error: ${err}`);
switchLogs ? ErrorOrLogs.logs(err) : null;
};
};
/**
* @class start project
*/
class Start {
constructor(path: String) {
this.workflow(path);
};
private workflow(path: String): void {
shell.cd(`${path}`);
if (shell.exec('npm run dev').code !== 0) {
ErrorOrLogs.show('sorry, npm run dev fail!', true);
};
};
};
/**
* @class check project node_modules
*/
class CheckProject {
constructor() {
};
protected check(path: String, backPath: String): Promise<Boolean> {
try {
return new Promise<Boolean>((resolve, reject) => {
if (!shell.which('git')) {
ErrorOrLogs.show('sorry, this script requires git!', true);
reject();
};
if (shell.ls(`${path}`).indexOf('node_modules') === -1) {
shell.cd(`${path}`);
if (shell.exec('npm install').code !== 0) {
ErrorOrLogs.show('sorry, run install fail!', true);
reject();
};
shell.cd(`${backPath}`);
resolve(true);
} else {
shell.echo(`path: ${path} node_modules install OK or already installed!`);
resolve(true);
};
});
} catch (error) {
ErrorOrLogs.show(error, true);
throw Error(error);
};
};
};
/**
* @class start main.shell
*/
class ShellMain extends CheckProject {
constructor() {
super();
};
public async init(start_project: String): Promise<void> {
const server = await this.check(config['shell'].start_server_path, config['shell'].start_back_path);
const desktop = await this.check(config['shell'].start_desk_path, config['shell'].start_back_path);
const app3d = await this.check(config['shell'].start_micro_path, config['shell'].start_micro_back_path);
if (server && desktop && app3d) {
new Start(start_project);
};
};
};
const sm = new ShellMain();
sm.init(config['shell'].start_server_path);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mu1866-micro-module.git
git@api.gitlife.ru:oschina-mirror/mu1866-micro-module.git
oschina-mirror
mu1866-micro-module
mu1866-micro-module
master