Слияние кода завершено, страница обновится автоматически
/**
* @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 )