npmtest-auto-install (v0.0.1)

Code coverage report for node-npmtest-auto-install/auto-install/src/index.js

Statements: 84.62% (33 / 39)      Branches: 50% (6 / 12)      Functions: 100% (0 / 0)      Lines: 91.18% (31 / 34)      Ignored: none     

All files » node-npmtest-auto-install/auto-install/src/ » index.js
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    1 1 1 1   1 1       1 1   1 1           1 1     1     1 1                     1 1           1 1   1 1       1 1 2         1 1 84 84     1 1       1      
//#!/usr/bin/env node
 
const helpers = require('./helpers');
const chokidar = require('chokidar');
const colors = require('colors');
const argv = require('yargs').argv;
 
let watchersInitialized = false;
let main;
 
/* Secure mode */
 
let secureMode = false;
Iif (argv.secure) secureMode = true;
 
let uninstallMode = true;
Iif (argv['dont-uninstall']) uninstallMode = false;
 
/* Watch files and repeat drill
 * Add a watcher, call main wrapper to repeat cycle
 */
 
let initializeWatchers = () => {
    let watcher = chokidar.watch('**/*.js', {
        ignored: 'node_modules'
    });
    watcher.on('change', main)
    .on('unlink', main);
 
    watchersInitialized = true;
    console.log('Watchers initialized');
};
 
/* Main wrapper
 * Get installed modules from package.json
 * Get used modules from all files
 * Install used modules that are not installed
 * Remove installed modules that are not used
 * After setup, initialize watchers
 */
 
main = () => {
    Iif (!helpers.packageJSONExists()) {
        console.log(colors.red('package.json does not exist'));
        console.log(colors.red('You can create one by using `npm init`'));
        return;
    }
 
    let installedModules = [];
    installedModules = helpers.getInstalledModules();
 
    let usedModules = helpers.getUsedModules();
    usedModules = helpers.filterRegistryModules(usedModules);
 
    // removeUnusedModules
 
    Eif (uninstallMode) {
        let unusedModules = helpers.diff(installedModules, usedModules);
        for (let module of unusedModules) helpers.uninstallModule(module);
    }
 
    // installModules
 
    let modulesNotInstalled = helpers.diff(usedModules, installedModules);
    for (let module of modulesNotInstalled) {
        Iif (secureMode) helpers.installModuleIfTrusted(module);
        else helpers.installModule(module);
    }
 
    helpers.cleanup();
    Eif (!watchersInitialized) initializeWatchers();
};
 
/* Turn the key */
main();