import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; import GitlabManager from '../managers/GitlabManager'; class Config { public gitlabManager!: GitlabManager; public versionUpdateInformationPeriodHours!: number; public gitlab!: { cliReleasePage: string cliPreAlphaReleasePage: string }; public login!: { server: { port: number, route: string }, gitlab: { url: { code: string } } }; public folders!: { defaultLocalExercise: string }; public exercise!: { neededFiles: Array<string> }; public interactiveMode!: boolean; constructor() { } async init(apiUrl: string) { await ClientsSharedConfig.init(apiUrl); const getEnvVar = ClientsSharedConfig.envVarGetter(); this.gitlabManager = new GitlabManager(ClientsSharedConfig.gitlab.URL, ClientsSharedConfig.login.gitlab.client.id, ClientsSharedConfig.login.gitlab.url.redirect, ClientsSharedConfig.login.gitlab.url.token); this.versionUpdateInformationPeriodHours = Number(getEnvVar('VERSION_UPDATE_INFORMATION_PERIOD_HOURS', '24')); this.gitlab = { cliReleasePage : getEnvVar('GITLAB_CLI_RELEASE_PAGE', ''), cliPreAlphaReleasePage: getEnvVar('GITLAB_CLI_PREALPHA_RELEASE_PAGE', '') }; this.login = { server: { port : Number(getEnvVar('LOGIN_SERVER_PORT', '30992')), route: getEnvVar('LOGIN_SERVER_ROUTE', '') }, gitlab: { url: { code: getEnvVar('LOGIN_GITLAB_URL_CODE', '') } } }; this.folders = { defaultLocalExercise: getEnvVar('LOCAL_EXERCISE_DEFAULT_FOLDER', './') }; this.exercise = { neededFiles: JSON.parse(getEnvVar('EXERCISE_NEEDED_FILES', '[]')) }; this.interactiveMode = getEnvVar('INTERACTIVE_MODE', 'false') === 'true'; } } export default new Config();