All files / src PackageConfigExtractor.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 1/1
100% Lines 7/7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 461x 1x         1x       1x               1x             1x                                 6x      
import * as fs from 'fs';
import * as path from 'path';
 
import { IPackageConfig } from "./interfaces/IPackageConfig";
import { IPackageConfigExtractor } from "./interfaces/IPackageConfigExtractor";
 
export class PackageConfigExtractor implements IPackageConfigExtractor {
    /**
     * @type {BufferEncoding}
     */
    private static encoding: BufferEncoding = 'utf8';
 
    /**
     * @type {IPackageConfig}
     */
    private config: IPackageConfig;
 
    constructor () {
        this.config = PackageConfigExtractor.getPackageConfig();
    }
 
    /**
     * @returns {IPackageConfig}
     */
    private static getPackageConfig (): IPackageConfig {
        return <IPackageConfig>JSON.parse(
            fs.readFileSync(
                path.join(
                    path.dirname(
                        fs.realpathSync(process.argv[1])
                    ),
                    '../package.json'
                ),
                PackageConfigExtractor.encoding
            )
        );
    }
 
    /**
     * @returns {IPackageConfig}
     */
    public getConfig (): IPackageConfig {
        return this.config;
    }
}