rc-plugin/model/index.js
2022-11-20 23:26:55 +08:00

88 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: {} }
}
// 获取配置文件
getConfig (name) {
let ignore = []
if (ignore.includes(`${name}`)) {
return this.getYaml(name)
}
return this.getYaml(name)
}
/**
* 获取配置yaml
* @param app 功能
* @param name 名称
* @param type 默认跑配置-defSet用户配置-config
*/
getYaml (name) {
// 获取文件路径
let file = this.getFilePath(name)
// 解析xml
const yaml = YAML.parse(fs.readFileSync(file, 'utf8'))
// 监听文件
this.watch(file, name)
return yaml
}
/**
* 获取文件路径
* @param app
* @param name
* @param type
* @returns {string}
*/
getFilePath (name) {
return `${this.configPath}${name}.yaml`
}
/**
* 听配置文件
* @param file
* @param app
* @param name
* @param type
*/
watch (file, name) {
const watcher = chokidar.watch(file)
watcher.on('change', (path) => {
logger.mark(`[修改配置文件][${name}]`)
})
}
/**
* 保存配置
* @param app
* @param name
* @param type
* @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()