/**
 * @author Toru Nagashima
 * @copyright 2016 Toru Nagashima. All rights reserved.
 * See LICENSE file in root directory for full license.
 */
'use strict'

// ------------------------------------------------------------------------------
// Public Interface
// ------------------------------------------------------------------------------

module.exports = function bootstrap (name) {
  const argv = process.argv.slice(2)

  switch (argv[0]) {
    case undefined:
    case '-h':
    case '--help':
      return require(`../${name}/help`)(process.stdout)

    case '-v':
    case '--version':
      return require('./version')(process.stdout)

    default:
      // https://github.com/mysticatea/npm-run-all/issues/105
      // Avoid MaxListenersExceededWarnings.
      process.stdout.setMaxListeners(0)
      process.stderr.setMaxListeners(0)
      process.stdin.setMaxListeners(0)

      // Main
      return require(`../${name}/main`)(
        argv,
        process.stdout,
        process.stderr
      ).then(
        () => {
          // I'm not sure why, but maybe the process never exits
          // on Git Bash (MINGW64)
          process.exit(0)
        },
        () => {
          process.exit(1)
        }
      )
  }
}
