实例:
import { join } from "path";
import { SETTING } from "../constant/type/type";
import { FileEnhance } from "./fileEnhance";
import { parse as parseJSON5, stringify as stringifyJSON5 } from 'json5';
export class Setting {
constructor() {
}
static defaultSettingName = 'setting'
public static getPath(settingName: string): string {
const fileName = `../config/${settingName}` + '.json5';
return join(__dirname, fileName);
}
static async savaSetting(setting: SETTING, settingName = this.defaultSettingName) {
await FileEnhance.replaceRange({ path: this.getPath(settingName) }, stringifyJSON5(setting));
}
static async loadSetting(settingName = this.defaultSettingName): Promise<SETTING> {
const defaultSetting: SETTING = {
branch: 'master',
dir: [],
commitMassage: "Auto committed",
timestamp: true,
timeSplit: "-"
};
let txt: string
try {
txt = await FileEnhance.getRange({ path: this.getPath(settingName), flags: 'r+' })
// console.log('txt:', txt);
} catch (error: any) {
if (error.errno == -4058) {
await FileEnhance.replaceRange({ path: this.getPath(settingName) }, this.getSettingTemplate());
txt = await FileEnhance.getRange({ path: this.getPath(settingName), flags: 'r+' })
}
else throw error;
}
return Object.assign(defaultSetting, parseJSON5(txt));
}
static getSettingTemplate() {
const json: string =
`{
"dir": []
// ,"branch":"master"
// ,"commitMassage":"提交信息"
// ,"timestamp": true
// ,"timeSplit": "-"
// ,"yearNum": "1到4" /*提交信息中年份保留位数*/
}`
return json;
}
}