# All files / core/use-cases handle-tsconfig-file.ts

93.1% Statements 27/29
62.5% Branches 5/8
100% Functions 6/6
92.59% Lines 25/27

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    721x

    1x

    1x
    1x
    1x

    1x

    1x
    1x
    1x

    1x

    1x

    6x
    6x

    6x
    6x
    1x

    5x
    5x

    5x

    5x

    5x

    6x

    6x

    1x

    1x
     import * as path from 'path';

    import ConfigurationRepository from '../repositories/config.repository';

    import FileEngine from '../../infrastructure/files/file.engine';
    import Logger from '../../infrastructure/logging/logger';
    import { readTsconfigFile } from '../../infrastructure/files/tsconfig.file.util';

    export class HandleTsconfigFile {
        private static instance: HandleTsconfigFile;

        constructor() {}

        public static getInstance() {
            Eif (!HandleTsconfigFile.instance) {
                HandleTsconfigFile.instance = new HandleTsconfigFile();
            }
            return HandleTsconfigFile.instance;
        }

        public async handle() {
            /**
             * 1. is tsconfig file provided with -p flag
             * 1b. if file doesn't exist, error and exit
             * 3. log that we handle the file
             * 4. read it
             * 5. find attributes : files, exclude, include
             */
            return new Promise(async (resolve, reject) => {
                let tsconfigFileName = ConfigurationRepository.internalConfiguration.tsconfig;
                let cwdLocal;

                Eif (tsconfigFileName) {
                    if (!FileEngine.existsSync(tsconfigFileName)) {
                        reject(`${tsconfigFileName} file was not found in the current directory`);
                    } else {
                        let tsconfigFilePath = tsconfigFileName.indexOf(process.cwd());
                        Iif (tsconfigFilePath !== -1) {
                            ConfigurationRepository.internalConfiguration.tsconfigFilePath = tsconfigFileName.replace(
                                process.cwd() + path.sep,
                                ''
                            );
                        }
                        ConfigurationRepository.internalConfiguration.tsconfigFilePath = path.join(
                            path.join(process.cwd(), path.dirname(tsconfigFileName)),
                            path.basename(tsconfigFileName)
                        );

                        cwdLocal = ConfigurationRepository.internalConfiguration.tsconfigFilePath
                            .split(path.sep)
                            .slice(0, -1)
                            .join(path.sep);

                        Logger.info(`Using tsconfig file : ${tsconfigFileName}`);
                    }
                } else {
                    Logger.warn(
                        'No tsconfig file provided with flags, trying to find it at root level'
                    );
                }

                let tsConfigFile = readTsconfigFile(
                    ConfigurationRepository.internalConfiguration.tsconfigFilePath
                );

                resolve(tsConfigFile);
            });
        }
    }

    export default HandleTsconfigFile.getInstance();