Files
Yumi/src/providers/Configuration.ts
T

49 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-01-27 18:00:47 +07:00
import fs from "fs";
import path from "path";
2022-02-27 17:31:38 +07:00
const ConfigurationData: any = [];
2022-01-27 18:00:47 +07:00
class Configuration {
public init(): void {
const dir = path.join(process.cwd(), 'configs/');
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
2022-02-02 21:18:05 +07:00
this.copyExampleIfNotExists("Ping.json");
this.copyExampleIfNotExists("ServiceAnnouncement.json");
2022-02-27 17:31:38 +07:00
this.loadConfig("Ping.json");
this.loadConfig("ServiceAnnouncement.json");
}
public loadConfig(configFileName: string): void {
const dir = path.join(process.cwd(), 'configs/');
if (!fs.existsSync(path.join(dir, configFileName)))
throw new Error(`Config file ${configFileName} does not exist`);
const config = JSON.parse(fs.readFileSync(path.join(dir, configFileName)).toString());
ConfigurationData[configFileName.replace(/\.[^/.]+$/, "")] = config;
}
public getConfig(key?: string) {
if(!key)
return ConfigurationData;
else {
if(ConfigurationData[key])
return ConfigurationData[key];
else
throw new Error(`No configuration found for ${key}`);
}
2022-02-02 21:18:05 +07:00
}
private copyExampleIfNotExists(file: string): void {
const dir = path.join(process.cwd(), 'configs/');
if (!fs.existsSync(path.join(dir, file))) {
fs.copyFileSync(path.join(process.cwd(), 'configs/', `${file.replace('.json', '.example.json')}`), path.join(dir, file));
}
2022-01-27 18:00:47 +07:00
}
}
export default new Configuration();