Code coverage report for lib/args-to-options.js

Statements: 100% (46 / 46)      Branches: 100% (49 / 49)      Functions: 100% (4 / 4)      Lines: 100% (46 / 46)      Ignored: none     

All files » lib/ » args-to-options.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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 1182   2     2       1 43     43 57 1 56 1     57 3   3       43           43 43 43 43     43 43 43 43 43 43   43 37 35       43   1 43 43   43 6   6     37                 1 43 1     42   42     1 42               42       42                 42           42            
module.exports = parse
 
var minimist = require('minimist')
  , path = require('path')
 
var normalizeEntryPoints = require('./normalize-entry-points.js')
  , setupBundler = require('./setup-bundlers.js')
  , extractPort = require('./extract-port.js')
 
function parse(argv, cwd, ready) {
  var idx = argv.length
    , nestLevel = 0
 
  for(var i = 0, len = argv.length; i < len; ++i) {
    if(argv[i] === '[') {
      ++nestLevel
    } else if(argv[i] === ']') {
      --nestLevel
    }
 
    if(argv[i] === '--' && !nestLevel) {
      idx = i
 
      break
    }
  }
 
  var parsed = minimist(argv.slice(0, idx))
    , bundlerFlags = argv.slice(idx + 1)
    , legacyBundlerMode = false
    , entryPoints
 
  // open options
  parsed.open = parsed.o || parsed.open
  parsed.url = parsed.u || parsed.url || parsed.open
  parsed.help = parsed.h || parsed.help
  parsed.port = parsed.p || parsed.port
 
  // handler options
  parsed.cwd = parsed.cwd || cwd
  parsed.live = parsed.l || parsed.live
  parsed.debug = parsed.d || parsed.debug
  parsed.bundler = parsed.browserify || parsed.bundler
  parsed.watchify = parsed.watchify === undefined ? true : parsed.watchify
  parsed.index = parsed.i || parsed.index
 
  if(!parsed.bundler && (parsed.debug === undefined || parsed.debug)) {
    if(bundlerFlags.indexOf('-d') === -1) {
      bundlerFlags.unshift('-d')
    }
  }
 
  extractPort(parsed, ongotport)
 
  function ongotport(err, port, remain) {
    entryPoints = normalizeEntryPoints(remain)
    parsed.port = port
 
    if(parsed.bundler) {
      legacyBundlerMode = true
 
      return onbundler(null, parsed.bundler)
    }
 
    setupBundler(
        cwd
      , entryPoints
      , bundlerFlags
      , !parsed.watchify
      , onbundler
    )
  }
 
  function onbundler(err, bundler) {
    if(err) {
      return ready(err)
    }
 
    parsed.bundler = bundler
 
    return buildOutput()
  }
 
  function buildOutput() {
    var openOptions = {
        openURL: (typeof parsed.url === 'string' && parsed.url) ||
                 ('http://127.0.0.1:' + parsed.port)
      , openBrowser: !!(parsed.open || parsed.url)
      , showHelp: !!parsed.help
      , port: parsed.port
    }
 
    var hasColor = {
        color: parsed.color === undefined || parsed.color
    }
 
    var handlerOptions = {
        live: parsed.live ? {rate: 2000} : false
      , generatedIndex: parsed.index
      , entries: entryPoints
      , log: hasColor
      , cwd: parsed.cwd
      , realCwd: cwd
    }
 
    handlerOptions.bundler = {
        command: parsed.bundler
      , flags: bundlerFlags
      , legacy: legacyBundlerMode
    }
 
    ready(null, {
        handler: handlerOptions
      , open: openOptions
    })
  }
}