import fs from 'fs-extra'; import path from 'path'; import GitlabManager from '../managers/GitlabManager'; import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; class Config { public gitlabManager!: GitlabManager; public appName!: string; public folders!: { project: string; resultsVolume: string; resultsDojo: string; resultsExercise: string; }; public dockerhub!: { repositories: { assignmentChecker: string } }; constructor() { } async init() { const apiUrl = process.env.API_URL ?? ''; 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.appName = getEnvVar('APP_NAME', ''); this.folders = { project : getEnvVar('PROJECT_FOLDER', './').convertWithEnvVars(), resultsVolume : getEnvVar('EXERCISE_RESULTS_VOLUME', '').convertWithEnvVars(), resultsDojo : path.join(getEnvVar('EXERCISE_RESULTS_VOLUME', '').convertWithEnvVars(), 'Dojo/'), resultsExercise: path.join(getEnvVar('EXERCISE_RESULTS_VOLUME', '').convertWithEnvVars(), 'Exercise/') }; this.resetResultsVolume(); this.dockerhub = { repositories: { assignmentChecker: getEnvVar('DOCKERHUB_ASSIGNMENT_CHECKER_REPOSITORY', '') } }; } private resetResultsVolume(): void { fs.emptyDirSync(this.folders.resultsVolume); fs.emptyDirSync(this.folders.resultsDojo); fs.emptyDirSync(this.folders.resultsExercise); } } export default new Config();