import fs   from 'fs-extra';
import path from 'path';


class Config {
    public readonly appName: string;

    public readonly folders: {
        project: string; resultsVolume: string; resultsDojo: string; resultsExercise: string;
    };

    public readonly exercise: {
        id: string; secret: string;
    };

    public readonly dockerhub: {
        repositories: {
            exerciseChecker: string
        }
    };

    constructor() {
        this.appName = process.env.APP_NAME || '';

        this.folders = {
            project        : process.env.PROJECT_FOLDER?.convertWithEnvVars() ?? './',
            resultsVolume  : process.env.EXERCISE_RESULTS_VOLUME?.convertWithEnvVars() ?? '',
            resultsDojo    : path.join(process.env.EXERCISE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', 'Dojo/'),
            resultsExercise: path.join(process.env.EXERCISE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', 'Exercise/')
        };
        this.resetResultsVolume();

        this.exercise = {
            id    : process.env.DOJO_EXERCISE_ID || '',
            secret: process.env.DOJO_SECRET || ''
        };

        this.dockerhub = {
            repositories: {
                exerciseChecker: process.env.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();