import fs from 'fs-extra';
import path from 'path';
import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
import GitlabManager from '../managers/GitlabManager';
class Config {
public gitlabManager!: GitlabManager;
public appName!: string;
public folders!: {
project: string; resultsVolume: string; resultsDojo: string; resultsExercise: string;
};
public exercise!: {
id: string; secret: string;
};
public dockerhub!: {
repositories: {
exerciseChecker: string
}
};
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.exercise = {
id : getEnvVar('DOJO_EXERCISE_ID', ''),
secret: getEnvVar('DOJO_SECRET', '')
};
this.dockerhub = {
repositories: {
exerciseChecker: getEnvVar('DOCKERHUB_EXERCISE_CHECKER_REPOSITORY', '')
}
};
}
private resetResultsVolume(): void {
fs.emptyDirSync(this.folders.resultsVolume);
fs.emptyDirSync(this.folders.resultsDojo);
fs.emptyDirSync(this.folders.resultsExercise);
}
}
export default new Config();