# 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;
        }
    }