mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 08:09:19 +00:00
🪛 chore: 轻度修改插件架构
This commit is contained in:
parent
c9c330baf3
commit
505d5a18c8
@ -7,7 +7,7 @@ import axios from "axios";
|
|||||||
// 常量
|
// 常量
|
||||||
import { CAT_LIMIT, COMMON_USER_AGENT } from "../constants/constant.js";
|
import { CAT_LIMIT, COMMON_USER_AGENT } from "../constants/constant.js";
|
||||||
// 配置文件
|
// 配置文件
|
||||||
import config from "../model/index.js";
|
import config from "../model/config.js";
|
||||||
|
|
||||||
export class query extends plugin {
|
export class query extends plugin {
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import config from "../model/index.js";
|
import config from "../model/config.js";
|
||||||
import schedule from 'node-schedule';
|
import schedule from 'node-schedule';
|
||||||
import { REDIS_YUNZAI_ISOVERSEA, REDIS_YUNZAI_LAGRANGE } from "../constants/constant.js";
|
import { REDIS_YUNZAI_ISOVERSEA, REDIS_YUNZAI_LAGRANGE } from "../constants/constant.js";
|
||||||
import { deleteFolderRecursive, readCurrentDir } from "../utils/file.js";
|
import { deleteFolderRecursive, readCurrentDir } from "../utils/file.js";
|
||||||
|
@ -1,26 +1,13 @@
|
|||||||
// 主库
|
|
||||||
import fetch from "node-fetch";
|
|
||||||
import fs from "node:fs";
|
|
||||||
import { Buffer } from 'node:buffer';
|
|
||||||
// 其他库
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import _ from "lodash";
|
|
||||||
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
||||||
import { exec, execSync } from "child_process";
|
import { exec, execSync } from "child_process";
|
||||||
import { checkAndRemoveFile, deleteFolderRecursive, mkdirIfNotExists } from "../utils/file.js";
|
import { HttpsProxyAgent } from 'https-proxy-agent';
|
||||||
import {
|
import _ from "lodash";
|
||||||
downloadBFile,
|
import fetch from "node-fetch";
|
||||||
filterBiliDescLink,
|
import { Buffer } from 'node:buffer';
|
||||||
getBiliAudio,
|
import fs from "node:fs";
|
||||||
getBiliVideoWithSession,
|
import PQueue from 'p-queue';
|
||||||
getDownloadUrl,
|
import path from "path";
|
||||||
getDynamic,
|
import querystring from "querystring";
|
||||||
getScanCodeData,
|
|
||||||
getVideoInfo,
|
|
||||||
m4sToMp3,
|
|
||||||
mergeFileToMp4
|
|
||||||
} from "../utils/bilibili.js";
|
|
||||||
import { downloadM3u8Videos, mergeAcFileToMp4, parseM3u8, parseUrl } from "../utils/acfun.js";
|
|
||||||
import {
|
import {
|
||||||
BILI_CDN_SELECT_LIST,
|
BILI_CDN_SELECT_LIST,
|
||||||
BILI_DEFAULT_INTRO_LEN_LIMIT,
|
BILI_DEFAULT_INTRO_LEN_LIMIT,
|
||||||
@ -35,27 +22,6 @@ import {
|
|||||||
TWITTER_BEARER_TOKEN,
|
TWITTER_BEARER_TOKEN,
|
||||||
XHS_NO_WATERMARK_HEADER,
|
XHS_NO_WATERMARK_HEADER,
|
||||||
} from "../constants/constant.js";
|
} from "../constants/constant.js";
|
||||||
import {
|
|
||||||
checkCommandExists,
|
|
||||||
cleanFilename,
|
|
||||||
downloadAudio,
|
|
||||||
downloadImg,
|
|
||||||
estimateReadingTime,
|
|
||||||
formatBiliInfo,
|
|
||||||
retryAxiosReq,
|
|
||||||
saveJsonToFile,
|
|
||||||
secondsToTime,
|
|
||||||
testProxy,
|
|
||||||
truncateString
|
|
||||||
} from "../utils/common.js";
|
|
||||||
import config from "../model/index.js";
|
|
||||||
import Translate from "../utils/trans-strategy.js";
|
|
||||||
import * as aBogus from "../utils/a-bogus.cjs";
|
|
||||||
import { getBodianAudio, getBodianMusicInfo, getBodianMv } from "../utils/bodian.js";
|
|
||||||
import { av2BV } from "../utils/bilibili-bv-av-convert.js";
|
|
||||||
import querystring from "querystring";
|
|
||||||
import PQueue from 'p-queue';
|
|
||||||
import { getWbi } from "../utils/biliWbi.js";
|
|
||||||
import {
|
import {
|
||||||
BILI_STREAM_INFO,
|
BILI_STREAM_INFO,
|
||||||
BILI_SUMMARY,
|
BILI_SUMMARY,
|
||||||
@ -73,14 +39,45 @@ import {
|
|||||||
WEISHI_VIDEO_INFO,
|
WEISHI_VIDEO_INFO,
|
||||||
XHS_REQ_LINK
|
XHS_REQ_LINK
|
||||||
} from "../constants/tools.js";
|
} from "../constants/tools.js";
|
||||||
import { getDS } from "../utils/mihoyo.js";
|
import config from "../model/config.js";
|
||||||
import GeneralLinkAdapter from "../utils/general-link-adapter.js";
|
import * as aBogus from "../utils/a-bogus.cjs";
|
||||||
import { mid2id } from "../utils/weibo.js";
|
import { downloadM3u8Videos, mergeAcFileToMp4, parseM3u8, parseUrl } from "../utils/acfun.js";
|
||||||
import { LagrangeAdapter } from "../utils/lagrange-adapter.js";
|
|
||||||
import path from "path";
|
|
||||||
import { OpenaiBuilder } from "../utils/openai-builder.js";
|
|
||||||
import { contentEstimator } from "../utils/link-share-summary-util.js";
|
|
||||||
import { checkBBDown, startBBDown } from "../utils/bbdown-util.js";
|
import { checkBBDown, startBBDown } from "../utils/bbdown-util.js";
|
||||||
|
import { av2BV } from "../utils/bilibili-bv-av-convert.js";
|
||||||
|
import {
|
||||||
|
downloadBFile,
|
||||||
|
filterBiliDescLink,
|
||||||
|
getBiliAudio,
|
||||||
|
getBiliVideoWithSession,
|
||||||
|
getDownloadUrl,
|
||||||
|
getDynamic,
|
||||||
|
getScanCodeData,
|
||||||
|
getVideoInfo,
|
||||||
|
m4sToMp3,
|
||||||
|
mergeFileToMp4
|
||||||
|
} from "../utils/bilibili.js";
|
||||||
|
import { getWbi } from "../utils/biliWbi.js";
|
||||||
|
import { getBodianAudio, getBodianMusicInfo, getBodianMv } from "../utils/bodian.js";
|
||||||
|
import {
|
||||||
|
checkCommandExists,
|
||||||
|
cleanFilename,
|
||||||
|
downloadAudio,
|
||||||
|
downloadImg,
|
||||||
|
estimateReadingTime,
|
||||||
|
formatBiliInfo,
|
||||||
|
retryAxiosReq,
|
||||||
|
secondsToTime,
|
||||||
|
testProxy,
|
||||||
|
truncateString
|
||||||
|
} from "../utils/common.js";
|
||||||
|
import { checkAndRemoveFile, deleteFolderRecursive, mkdirIfNotExists } from "../utils/file.js";
|
||||||
|
import GeneralLinkAdapter from "../utils/general-link-adapter.js";
|
||||||
|
import { LagrangeAdapter } from "../utils/lagrange-adapter.js";
|
||||||
|
import { contentEstimator } from "../utils/link-share-summary-util.js";
|
||||||
|
import { getDS } from "../utils/mihoyo.js";
|
||||||
|
import { OpenaiBuilder } from "../utils/openai-builder.js";
|
||||||
|
import Translate from "../utils/trans-strategy.js";
|
||||||
|
import { mid2id } from "../utils/weibo.js";
|
||||||
import { textArrayToMakeForward } from "../utils/yunzai-util.js";
|
import { textArrayToMakeForward } from "../utils/yunzai-util.js";
|
||||||
|
|
||||||
export class tools extends plugin {
|
export class tools extends plugin {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// 主库
|
// 主库
|
||||||
import Version from "../model/version.js";
|
import Version from "../model/version.js";
|
||||||
import config from "../model/index.js";
|
import config from "../model/config.js";
|
||||||
import puppeteer from "../../../lib/puppeteer/puppeteer.js";
|
import puppeteer from "../../../lib/puppeteer/puppeteer.js";
|
||||||
import lodash from "lodash";
|
import lodash from "lodash";
|
||||||
import YAML from "yaml";
|
import YAML from "yaml";
|
||||||
@ -12,7 +12,12 @@ import { copyFiles, deleteFolderRecursive, readCurrentDir } from "../utils/file.
|
|||||||
/**
|
/**
|
||||||
* 处理插件更新1
|
* 处理插件更新1
|
||||||
*/
|
*/
|
||||||
export class update extends plugin {
|
export class Update extends plugin {
|
||||||
|
static pluginName = (() => {
|
||||||
|
const packageJsonPath = path.join('./plugins', 'rconsole-plugin', 'package.json');
|
||||||
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||||
|
return packageJson.name;
|
||||||
|
})();
|
||||||
constructor() {
|
constructor() {
|
||||||
super({
|
super({
|
||||||
name: "R插件更新插件",
|
name: "R插件更新插件",
|
||||||
@ -58,16 +63,14 @@ export class update extends plugin {
|
|||||||
|
|
||||||
let isForce = !!e.msg.includes("强制");
|
let isForce = !!e.msg.includes("强制");
|
||||||
|
|
||||||
const pluginName = "rconsole-plugin";
|
|
||||||
|
|
||||||
// 保存配置文件
|
// 保存配置文件
|
||||||
await copyFiles(`./plugins/${pluginName}/config`, "./temp/rconsole-update-tmp");
|
await copyFiles(`./plugins/${Update.pluginName}/config`, "./temp/rconsole-update-tmp");
|
||||||
|
|
||||||
let command = `git -C ./plugins/${pluginName}/ pull --no-rebase`;
|
let command = `git -C ./plugins/${Update.pluginName}/ pull --no-rebase`;
|
||||||
if (isForce) {
|
if (isForce) {
|
||||||
command = `git -C ./plugins/${pluginName}/ checkout . && ${command}`;
|
command = `git -C ./plugins/${Update.pluginName}/ checkout . && ${command}`;
|
||||||
}
|
}
|
||||||
this.oldCommitId = await this.getCommitId(pluginName);
|
this.oldCommitId = await this.getCommitId(Update.pluginName);
|
||||||
await e.reply("正在执行更新操作,请稍等");
|
await e.reply("正在执行更新操作,请稍等");
|
||||||
|
|
||||||
let ret = await this.execSync(command);
|
let ret = await this.execSync(command);
|
||||||
@ -76,13 +79,13 @@ export class update extends plugin {
|
|||||||
await this.gitErr(ret.error, ret.stdout);
|
await this.gitErr(ret.error, ret.stdout);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const time = await this.getTime(pluginName);
|
const time = await this.getTime(Update.pluginName);
|
||||||
if (/Already up|已经是最新/g.test(ret.stdout)) {
|
if (/Already up|已经是最新/g.test(ret.stdout)) {
|
||||||
e.reply(`R插件已经是最新: ${this.versionData[0].version}`);
|
e.reply(`R插件已经是最新: ${this.versionData[0].version}`);
|
||||||
} else {
|
} else {
|
||||||
this.isUp = true;
|
this.isUp = true;
|
||||||
e.reply(`R插件更新成功,最后更新时间:${time}`);
|
e.reply(`R插件更新成功,最后更新时间:${time}`);
|
||||||
e.reply(await this.getLog(pluginName));
|
e.reply(await this.getLog(Update.pluginName));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 读取配置文件比对更新
|
// 读取配置文件比对更新
|
||||||
@ -90,7 +93,7 @@ export class update extends plugin {
|
|||||||
for (let confFile of confFiles) {
|
for (let confFile of confFiles) {
|
||||||
await this.compareAndUpdateYaml(
|
await this.compareAndUpdateYaml(
|
||||||
`./temp/rconsole-update-tmp/${confFile}`,
|
`./temp/rconsole-update-tmp/${confFile}`,
|
||||||
`./plugins/${pluginName}/config/${confFile}`
|
`./plugins/${Update.pluginName}/config/${confFile}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// 删除临时文件
|
// 删除临时文件
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
import path from "path";
|
|
||||||
import model from "./model/index.js";
|
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
|
import path from "path";
|
||||||
import { BILI_CDN_SELECT_LIST, BILI_DOWNLOAD_METHOD } from "./constants/constant.js";
|
import { BILI_CDN_SELECT_LIST, BILI_DOWNLOAD_METHOD } from "./constants/constant.js";
|
||||||
|
import model from "./model/config.js";
|
||||||
|
|
||||||
const _path = process.cwd() + "/plugins/rconsole-plugin";
|
const pluginName = `rconsole-plugin`;
|
||||||
|
|
||||||
|
const _path = process.cwd() + `/plugins/${pluginName}`;
|
||||||
export function supportGuoba() {
|
export function supportGuoba() {
|
||||||
return {
|
return {
|
||||||
pluginInfo: {
|
pluginInfo: {
|
||||||
name: "R插件",
|
name: "R插件",
|
||||||
title: "rconsole-plugin",
|
title: pluginName,
|
||||||
author: "@zhiyu",
|
author: "@zhiyu",
|
||||||
authorLink: "https://gitee.com/kyrzy0416",
|
authorLink: "https://gitee.com/kyrzy0416",
|
||||||
link: "https://gitee.com/kyrzy0416/rconsole-plugin",
|
link: "https://gitee.com/kyrzy0416/rconsole-plugin",
|
||||||
@ -261,9 +263,8 @@ export function supportGuoba() {
|
|||||||
for (let [key, value] of Object.entries(data)) {
|
for (let [key, value] of Object.entries(data)) {
|
||||||
_.set(config, key, value);
|
_.set(config, key, value);
|
||||||
}
|
}
|
||||||
// TODO 目前只有一个文件的配置,暂时这样写
|
|
||||||
config = _.merge({}, model.getConfig("tools"), config.tools);
|
config = _.merge({}, model.getConfig("tools"), config.tools);
|
||||||
model.saveSet("tools", config);
|
model.saveAllConfig("tools", config);
|
||||||
return Result.ok({}, "保存成功~");
|
return Result.ok({}, "保存成功~");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
12
index.js
12
index.js
@ -1,14 +1,18 @@
|
|||||||
import fs from "node:fs";
|
import fs from "node:fs";
|
||||||
import RConfig from "./model/index.js";
|
import path from "path";
|
||||||
|
import config from "./model/config.js";
|
||||||
if (!global.segment) {
|
if (!global.segment) {
|
||||||
global.segment = (await import("oicq")).segment
|
global.segment = (await import("oicq")).segment
|
||||||
}
|
}
|
||||||
|
|
||||||
const versionData = RConfig.getConfig("version");
|
const versionData = config.getConfig("version");
|
||||||
|
const packageJsonPath = path.join('./plugins', 'rconsole-plugin', 'package.json');
|
||||||
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||||
|
const pluginName = packageJson.name;
|
||||||
|
|
||||||
logger.info(`R插件${versionData[0].version}初始化`);
|
logger.info(logger.yellow(`R插件${versionData[0].version}初始化,欢迎加入【R插件和它的朋友们】秋秋群:575663150`));
|
||||||
|
|
||||||
const files = fs.readdirSync("./plugins/rconsole-plugin/apps").filter(file => file.endsWith(".js"));
|
const files = fs.readdirSync(`./plugins/${pluginName}/apps`).filter(file => file.endsWith(".js"));
|
||||||
|
|
||||||
let ret = [];
|
let ret = [];
|
||||||
|
|
||||||
|
@ -1,13 +1,22 @@
|
|||||||
export default class base {
|
import path from 'path';
|
||||||
|
import fs from "fs";
|
||||||
|
|
||||||
|
export default class Base {
|
||||||
|
static pluginName = (() => {
|
||||||
|
const packageJsonPath = path.join('./plugins', 'rconsole-plugin', 'package.json');
|
||||||
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||||
|
return packageJson.name;
|
||||||
|
})();
|
||||||
|
|
||||||
constructor (e = {}) {
|
constructor (e = {}) {
|
||||||
this.e = e
|
this.e = e
|
||||||
this.userId = e?.user_id
|
this.userId = e?.user_id
|
||||||
this.model = 'rconsole-plugin'
|
this.model = Base.pluginName
|
||||||
this._path = process.cwd().replace(/\\/g, '/')
|
this._path = process.cwd().replace(/\\/g, '/')
|
||||||
}
|
}
|
||||||
|
|
||||||
get prefix () {
|
get prefix () {
|
||||||
return `Yz:rconsole-plugin:${this.model}:`
|
return `Yz:${Base.pluginName}:${this.model}:`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,9 +28,9 @@ export default class base {
|
|||||||
get screenData () {
|
get screenData () {
|
||||||
return {
|
return {
|
||||||
saveId: this.userId,
|
saveId: this.userId,
|
||||||
tplFile: `./plugins/rconsole-plugin/resources/html/${this.model}/${this.model}.html`,
|
tplFile: `./plugins/${Base.pluginName}/resources/html/${this.model}/${this.model}.html`,
|
||||||
/** 绝对路径 */
|
/** 绝对路径 */
|
||||||
pluResPath: `${this._path}/plugins/rconsole-plugin/resources/`
|
pluResPath: `${this._path}/plugins/${Base.pluginName}/resources/`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
79
model/config.js
Normal file
79
model/config.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
import _ from 'lodash';
|
||||||
|
import YAML from 'yaml';
|
||||||
|
import chokidar from 'chokidar';
|
||||||
|
import Base from "./base.js";
|
||||||
|
|
||||||
|
class RConfig extends Base{
|
||||||
|
constructor(e) {
|
||||||
|
super(e);
|
||||||
|
this.configPath = `./plugins/${RConfig.pluginName}/config/`;
|
||||||
|
this.change = new Map();
|
||||||
|
this.previousContent = new Map(); // 存储每个文件之前的内容
|
||||||
|
}
|
||||||
|
|
||||||
|
getConfig(name) {
|
||||||
|
return this.getYaml(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
getField(name, field) {
|
||||||
|
const config = this.getConfig(name);
|
||||||
|
return config[field];
|
||||||
|
}
|
||||||
|
|
||||||
|
updateField(name, field, value) {
|
||||||
|
let config = this.getConfig(name);
|
||||||
|
config[field] = value;
|
||||||
|
logger.mark(`[R插件][修改配置项][${name}][${field}]修改为:${value}`);
|
||||||
|
this.saveAllConfig(name, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteField(name, field) {
|
||||||
|
let config = this.getConfig(name);
|
||||||
|
delete config[field];
|
||||||
|
this.saveAllConfig(name, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
getYaml(name, isWatch = true) {
|
||||||
|
let file = this.getFilePath(name);
|
||||||
|
const yaml = YAML.parse(fs.readFileSync(file, 'utf8'));
|
||||||
|
|
||||||
|
if (isWatch) {
|
||||||
|
this.change.set(name);
|
||||||
|
this.previousContent.set(name, yaml); // 保存初始内容
|
||||||
|
this.watch(file, name);
|
||||||
|
}
|
||||||
|
return yaml;
|
||||||
|
}
|
||||||
|
|
||||||
|
getFilePath(name) {
|
||||||
|
return `${this.configPath}${name}.yaml`;
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(file, name) {
|
||||||
|
const watcher = chokidar.watch(file);
|
||||||
|
|
||||||
|
watcher.on('change', path => {
|
||||||
|
const currentContent = YAML.parse(fs.readFileSync(path, 'utf8'));
|
||||||
|
const previousContent = this.previousContent.get(name);
|
||||||
|
|
||||||
|
if (!_.isEqual(previousContent, currentContent)) {
|
||||||
|
logger.mark(`[R插件][配置文件]:${name}已经被重置`);
|
||||||
|
this.previousContent.set(name, currentContent); // 更新之前的内容
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
saveAllConfig(name, data) {
|
||||||
|
let file = this.getFilePath(name);
|
||||||
|
if (_.isEmpty(data)) {
|
||||||
|
fs.existsSync(file) && fs.unlinkSync(file);
|
||||||
|
} else {
|
||||||
|
let yaml = YAML.stringify(data);
|
||||||
|
fs.writeFileSync(file, yaml, 'utf8');
|
||||||
|
}
|
||||||
|
this.watch(file, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new RConfig();
|
@ -1,8 +1,8 @@
|
|||||||
import base from './base.js'
|
import Base from './base.js'
|
||||||
import config from './index.js'
|
import config from './config.js'
|
||||||
import cfg from '../../../lib/config/config.js'
|
import cfg from '../../../lib/config/config.js'
|
||||||
|
|
||||||
export default class Help extends base {
|
export default class Help extends Base {
|
||||||
constructor(e) {
|
constructor(e) {
|
||||||
super(e)
|
super(e)
|
||||||
this.model = 'help'
|
this.model = 'help'
|
||||||
|
104
model/index.js
104
model/index.js
@ -1,104 +0,0 @@
|
|||||||
import fs from 'node:fs'
|
|
||||||
import _ from 'lodash'
|
|
||||||
import YAML from 'yaml'
|
|
||||||
import chokidar from 'chokidar'
|
|
||||||
|
|
||||||
class RConfig {
|
|
||||||
constructor () {
|
|
||||||
// 配置文件
|
|
||||||
this.configPath = './plugins/rconsole-plugin/config/'
|
|
||||||
this.config = {}
|
|
||||||
|
|
||||||
// 监听文件
|
|
||||||
this.watcher = { config: {} }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取配置文件
|
|
||||||
* @param name
|
|
||||||
* @returns {any}
|
|
||||||
*/
|
|
||||||
getConfig (name) {
|
|
||||||
let ignore = []
|
|
||||||
|
|
||||||
if (ignore.includes(`${name}`)) {
|
|
||||||
return this.getYaml(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.getYaml(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取指定配置的某个字段
|
|
||||||
getField(name, field) {
|
|
||||||
const config = this.getConfig(name);
|
|
||||||
return config[field];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新指定配置的某个字段
|
|
||||||
updateField(name, field, value) {
|
|
||||||
let config = this.getConfig(name);
|
|
||||||
config[field] = value; // 更新字段值
|
|
||||||
this.saveSet(name, config); // 保存更改
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除指定配置的某个字段
|
|
||||||
deleteField(name, field) {
|
|
||||||
let config = this.getConfig(name);
|
|
||||||
delete config[field]; // 删除指定字段
|
|
||||||
this.saveSet(name, config); // 保存更改
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取配置yaml
|
|
||||||
* @param name 名称
|
|
||||||
*/
|
|
||||||
getYaml (name) {
|
|
||||||
// 获取文件路径
|
|
||||||
let file = this.getFilePath(name)
|
|
||||||
// 解析xml
|
|
||||||
const yaml = YAML.parse(fs.readFileSync(file, 'utf8'))
|
|
||||||
// 监听文件
|
|
||||||
this.watch(file, name)
|
|
||||||
return yaml
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取文件路径
|
|
||||||
* @param name
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
getFilePath (name) {
|
|
||||||
return `${this.configPath}${name}.yaml`
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 听配置文件
|
|
||||||
* @param file
|
|
||||||
* @param name
|
|
||||||
*/
|
|
||||||
watch (file, name) {
|
|
||||||
const watcher = chokidar.watch(file)
|
|
||||||
|
|
||||||
watcher.on('change', (path) => {
|
|
||||||
delete
|
|
||||||
logger.mark(`[修改配置文件][${name}]`)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存配置
|
|
||||||
* @param name
|
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
saveSet (name, data) {
|
|
||||||
let file = this.getFilePath(name)
|
|
||||||
if (_.isEmpty(data)) {
|
|
||||||
fs.existsSync(file) && fs.unlinkSync(file)
|
|
||||||
} else {
|
|
||||||
let yaml = YAML.stringify(data)
|
|
||||||
fs.writeFileSync(file, yaml, 'utf8')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new RConfig()
|
|
@ -1,6 +1,6 @@
|
|||||||
import base from './base.js'
|
import Base from './base.js'
|
||||||
|
|
||||||
export default class Version extends base {
|
export default class Version extends Base {
|
||||||
constructor (e) {
|
constructor (e) {
|
||||||
super(e)
|
super(e)
|
||||||
this.model = 'version'
|
this.model = 'version'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user