import * as fs from 'fs';
import * as path from 'path';
// @ts-ignore
import * as yaml from 'js-yaml';

export class FileUtility {
    public static readFileSyncFromRelativePath(relativePath: string): string {
        const filePath: string = path.join(process.cwd(), relativePath);
        const file = fs.readFileSync(filePath, 'utf8');

        return file;
    }

    public static readFileSyncFromAbsolutePath(filePath: string): string {
        const file = fs.readFileSync(filePath, 'utf8');
        return file;
    }

    /* --- yaml --- */
    public static readYamlSyncFromRelativePath<T>(relativePath: string): T[] {
        const file: string = FileUtility.readFileSyncFromRelativePath(relativePath);
        const yamlObject: T[] = yaml.safeLoad(file);

        return yamlObject;
    }

    public static readYamlSyncFromAbsolutePath<T>(filePath: string): T[] {
        const file: string = FileUtility.readFileSyncFromRelativePath(filePath);
        const yamlObject: T[] = yaml.safeLoad(file);

        return yamlObject;
    }

    public static checkIfFileExists(filePath: string) {
        return fs.existsSync(filePath);
    }

}
