# All files / src config.js

41.03% Statements 16/39
0% Branches 0/3
27.27% Functions 3/11
50% Lines 9/18

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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    953x
    3x

    3x
    3x
    3x
    3x

    8x

    3x

    3x
     import { writeObjectSync } from './systemTools/fileutils';
    import { npmInstall } from './systemTools/exec';

    class Config {
        constructor() {
            this.config = {};
        }

        // async initializeConfig(cmd, subCmd, program) {
        //     this.config = await initializeBuilder(cmd, subCmd, process, program);
        // }

        initializeConfig(c) {
            this.config = c;
            return c;
        }

        getConfig() {
            return this.config;
        }

        get command() {
            return this.config.command;
        }

        get subCommand() {
            return this.config.subCommand;
        }

        get rnvArguments() {
            // commander is stupid https://github.com/tj/commander.js/issues/53
            const { args, rawArgs } = this.config.program;
            const cleanedArgs = args.filter(arg => typeof arg === 'string');
            const missingArg = rawArgs[rawArgs.indexOf(cleanedArgs[1]) + 1];
            cleanedArgs.splice(2, 0, missingArg);
            return cleanedArgs;
        }

        async injectProjectDependency(dependency, version) {
            const currentPackage = this.config.files.project.package;
            const existingPath = this.config.paths.project.package;
            currentPackage.dependencies[dependency] = version;
            writeObjectSync(existingPath, currentPackage);
            await npmInstall();
        }

        getProjectConfig() {
            return this.config.files.project;
        }

        //     getBuildConfig() {
        //         return this.config.buildConfig;
        //     }

        //     updateLocalConfig() {
        //         writeFileSync(file, newConfig);
        //         this.initializeConfig();
        //     }

        //     updateGlobalonfig() {
        //         writeFileSync(file, newConfig);
        //         this.initializeConfig();
        //     }

        //     updateCLIPath() {
        //         writeFileSync(file, newConfig);
        //         this.initializeConfig();
        //     }

        //     getPath(path) { // getPath(RNV_PLUGINTEMPLATES_DIR) / PROJECT_BUILDS_DIR...
        //         return this.config.paths[path];
        //     }

        //     get getInfo() {
        //         return this.c.program.info;
        //     }

        //     get platform() {
        //         return this.config.program.platform;
        //     }

        //     get mono() {
        //         return this.config.program.mono;
        //     }

        //     get target() {}

    //     set target(newTarget) {
    //         this.config.target = newTarget;
    //         this.initializeConfig();
    //     }
    }

    export default new Config();