Select Git revision
vmAttachSync.go
LocalConfig.ts 1.40 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';
import JSON5 from 'json5';
class LocalConfig {
private get configPath(): string {
return `${ Config.localConfig.folder }/${ Config.localConfig.file }`;
}
private _config: { [key in LocalConfigKeys]?: any } = {};
loadConfig() {
if ( !fs.existsSync(this.configPath) ) {
fs.mkdirSync(Config.localConfig.folder, { recursive: true });
fs.writeFileSync(this.configPath, JSON5.stringify({}));
}
try {
this._config = JSON5.parse(fs.readFileSync(this.configPath).toString());
SessionManager.token = this._config.apiToken;
GitlabManager.token = this._config.gitlabPersonalToken;
} catch ( error ) { }
}
updateConfig(key: LocalConfigKeys, value: any) {
if ( (this._config as any)[key] === value ) {
return;
}
(this._config as any)[key] = value;
try {
fs.writeFileSync(this.configPath, JSON5.stringify(this._config, null, 4));
} catch ( error ) {
logger.error(error);
}
}
}
export default new LocalConfig();