Select Git revision
LocalConfig.ts

michael.minelli authored
LocalConfig.ts 1.58 KiB
import * as fs from 'fs';
import logger from '../shared/logging/WinstonLogger';
import SessionManager from '../managers/SessionManager';
import Config from './Config';
import LocalConfigKeys from '../types/LocalConfigKeys';
import GitlabManager from '../managers/GitlabManager';
class LocalConfig {
private static _instance: LocalConfig;
private get configPath(): string {
return `${ Config.localConfig.folder }/${ Config.localConfig.file }`;
}
private _config: { [key in LocalConfigKeys]?: any } = {};
private constructor() { }
public static get instance(): LocalConfig {
if ( !LocalConfig._instance ) {
LocalConfig._instance = new LocalConfig();
}
return LocalConfig._instance;
}
loadConfig() {
if ( !fs.existsSync(this.configPath) ) {
fs.mkdirSync(Config.localConfig.folder, { recursive: true });
fs.writeFileSync(this.configPath, JSON.stringify({}));
}
this._config = JSON.parse(fs.readFileSync(this.configPath).toString());
SessionManager.token = this._config.apiToken;
GitlabManager.token = this._config.gitlabPersonalToken;
}
updateConfig(key: LocalConfigKeys, value: any) {
if ( (this._config as any)[key] === value ) {
return;
}
(this._config as any)[key] = value;
fs.writeFile(this.configPath, JSON.stringify(this._config, null, 4), (err) => {
if ( err ) {
logger.error(err);
}
});
}
}
export default LocalConfig.instance;