Skip to content
Snippets Groups Projects
Commit adc7bb61 authored by michael.minelli's avatar michael.minelli
Browse files

Add Local config (by json file on os)

parent febf52d7
Branches
Tags
No related merge requests found
import * as fs from 'fs';
import logger from '../../shared/logging/WinstonLogger';
import SessionManager from '../../managers/SessionManager';
import Config from '../Config';
import LocalConfigKeys from './LocalConfigKeys';
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;
}
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), (err) => {
if ( err ) {
logger.error(err);
}
});
}
}
export default LocalConfig.instance;
\ No newline at end of file
enum LocalConfigKeys {
API_TOKEN = 'apiToken'
}
export default LocalConfigKeys;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment