seagull-js/seagull

View on GitHub
packages/build/bin/build.js

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env node

const helpText = `
  --mode edge|connected         # Sets MODE
  --stage test|prod             # ... not supported right now
  --compatible false            # Sets Babel transform
  --optimize-runtime true|false   # Sets NODE_ENV to production
  --optimize-bundle false       # Minimize, dead code elimination etc.
  --type-check false            # Transpile only?
  --pages-to-exclude            # RegEx to use when filtering pages
  --use-polling true|false      # set polling option for watchify
  -h                            # show this
`

if (process.argv.join().includes('-h')) {
  console.info(helpText)
  process.exit(0)
}

function getArgv(setting, def) {
  const index = process.argv.indexOf(setting) + 1
  const v = index !== 0 ? process.argv[index] : def
  return v === 'true' || v === 'false' ? v === 'true' : v
}

const opts = {
  mode: getArgv('--mode', process.env.MODE),
  stage: getArgv('--stage', process.env.STAGE),
  compatible: getArgv('--compatible', true),
  optimizeRuntime: getArgv('--optimize-runtime', true),
  optimizeBundle: getArgv('--optimize-bundle', true),
  typeCheck: getArgv('--type-check', true),
  pagesToExclude: getArgv('--pages-to-exclude', process.env.PAGES_TO_EXCLUDE),
  usePolling: true,
}

opts.mode ? (process.env.MODE = opts.mode) : null
opts.stage ? (process.env.STAGE = opts.stage) : null
opts.pagesToExclude ? (process.env.PAGES_TO_EXCLUDE = opts.pagesToExclude) : ''
opts.usePolling ? (process.env.USE_POLLING = opts.usePolling) : false
process.env.NODE_ENV = opts.optimizeRuntime ? 'production' : 'development'

const Ops = require('../dist/src/operators')
const op = new Ops.ReleaseOperator(opts)
op.on(Ops.ReleaseOperator.DoneEvent, () => process.exit(0))
op.emit(Ops.StartEvent)