diff --git a/NodeApp/src/config/LocalConfig.ts b/NodeApp/src/config/LocalConfig.ts index 0e5f4e7eb0ad75a7c3e49797bd50a11da6554693..656c0c6bc47dc684556b816178548989086c9313 100644 --- a/NodeApp/src/config/LocalConfig.ts +++ b/NodeApp/src/config/LocalConfig.ts @@ -1,10 +1,10 @@ -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'; +import * as fs from 'fs'; +import SessionManager from '../managers/SessionManager'; +import Config from './Config'; +import LocalConfigKeys from '../types/LocalConfigKeys'; +import GitlabManager from '../managers/GitlabManager'; +import JSON5 from 'json5'; +import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; class LocalConfig { @@ -24,23 +24,43 @@ class LocalConfig { try { this._config = JSON5.parse(fs.readFileSync(this.configPath).toString()); - SessionManager.token = this._config.apiToken; - GitlabManager.token = this._config.gitlabPersonalToken; - } catch ( error ) { } + if ( LocalConfigKeys.API_TOKEN_ENV in this._config && ClientsSharedConfig.apiURL in this._config[LocalConfigKeys.API_TOKEN_ENV] ) { + SessionManager.token = this._config[LocalConfigKeys.API_TOKEN_ENV][ClientsSharedConfig.apiURL]; + } else { + SessionManager.token = this._config[LocalConfigKeys.API_TOKEN]; + } + + GitlabManager.token = this._config[LocalConfigKeys.GITLAB_PERSONAL_TOKEN]; + } catch ( error ) { + console.log(error); + } } updateConfig(key: LocalConfigKeys, value: any) { - if ( (this._config as any)[key] === value ) { + let previousValue = (this._config as any)[key]; + if ( key === LocalConfigKeys.API_TOKEN && (!(LocalConfigKeys.API_TOKEN_ENV in this._config) || !(ClientsSharedConfig.apiURL in this._config[LocalConfigKeys.API_TOKEN_ENV])) ) { + previousValue = null; + } + + if ( previousValue === value ) { return; } - (this._config as any)[key] = value; + if ( key === LocalConfigKeys.API_TOKEN ) { + delete (this._config as any)[LocalConfigKeys.API_TOKEN]; + + if ( !(LocalConfigKeys.API_TOKEN_ENV in this._config) ) { + (this._config as any)[LocalConfigKeys.API_TOKEN_ENV] = {}; + } + + (this._config as any)[LocalConfigKeys.API_TOKEN_ENV][ClientsSharedConfig.apiURL] = value; + } else { + (this._config as any)[key] = value; + } try { fs.writeFileSync(this.configPath, JSON5.stringify(this._config, null, 4)); - } catch ( error ) { - logger.error(error); - } + } catch ( error ) { } } } diff --git a/NodeApp/src/types/LocalConfigKeys.ts b/NodeApp/src/types/LocalConfigKeys.ts index 7f1e6ab7f5b842f4cb58827e1ef02a5c0da0a3f6..f64751d4b278c48815dbab243a567257cc21ed04 100644 --- a/NodeApp/src/types/LocalConfigKeys.ts +++ b/NodeApp/src/types/LocalConfigKeys.ts @@ -1,5 +1,6 @@ enum LocalConfigKeys { API_TOKEN = 'apiToken', + API_TOKEN_ENV = 'apiTokenEnv', GITLAB_PERSONAL_TOKEN = 'gitlabPersonalToken', }