Skip to content
Snippets Groups Projects
Select Git revision
  • 6edf6afae1863faf7cbe8ad953859c1d31fdfba2
  • main default protected
  • jw_sonar
  • v6.0.0 protected
  • interactive-mode-preference
  • bedran_exercise-list
  • add_route_user
  • Jw_sonar_backup
  • exercise_list_filter
  • assignment_filter
  • add_route_assignments
  • move-to-esm-only
  • 6.0.0-dev
  • Pre-alpha
  • 5.0.0
  • Latest
  • 4.2.0
  • 4.1.1
  • 4.1.0
  • 4.0.1
  • 4.0.0
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.3.0
  • 3.2.3
  • 3.2.2
  • 3.2.0
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.1
32 results

LocalConfig.ts

Blame
  • 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;