78 lines
1.4 KiB
TypeScript
78 lines
1.4 KiB
TypeScript
import fs from "node:fs";
|
|
|
|
/**
|
|
* 应用配置接口
|
|
*/
|
|
export interface IConfig {
|
|
mirror: {
|
|
bmclapi: boolean;
|
|
mcimirror: boolean;
|
|
};
|
|
filter: {
|
|
hashes: boolean;
|
|
dexpub: boolean;
|
|
mixins: boolean;
|
|
};
|
|
oaf: boolean;
|
|
}
|
|
|
|
/**
|
|
* 默认配置
|
|
*/
|
|
const DEFAULT_CONFIG: IConfig = {
|
|
mirror: {
|
|
bmclapi: true,
|
|
mcimirror: true,
|
|
},
|
|
filter: {
|
|
hashes: true,
|
|
dexpub: true,
|
|
mixins: true,
|
|
},
|
|
oaf: true
|
|
};
|
|
|
|
/**
|
|
* 配置文件路径
|
|
*/
|
|
const CONFIG_PATH = "./config.json";
|
|
|
|
/**
|
|
* 配置管理器
|
|
*/
|
|
export class Config {
|
|
/**
|
|
* 获取配置
|
|
* @returns 配置对象
|
|
*/
|
|
public static getConfig(): IConfig {
|
|
if (!fs.existsSync(CONFIG_PATH)) {
|
|
fs.writeFileSync(CONFIG_PATH, JSON.stringify(DEFAULT_CONFIG, null, 2));
|
|
return DEFAULT_CONFIG;
|
|
}
|
|
|
|
try {
|
|
const content = fs.readFileSync(CONFIG_PATH, "utf-8");
|
|
return JSON.parse(content);
|
|
} catch (err) {
|
|
console.error("Failed to read config file, using defaults", err);
|
|
return DEFAULT_CONFIG;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 写入配置
|
|
* @param config 配置对象
|
|
*/
|
|
public static writeConfig(config: IConfig): void {
|
|
try {
|
|
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
|
|
} catch (err) {
|
|
console.error("Failed to write config file", err);
|
|
}
|
|
}
|
|
}
|
|
|
|
// 默认导出配置实例
|
|
export default Config.getConfig();
|