neft
Version:
JavaScript. Everywhere.
107 lines (85 loc) • 2.48 kB
text/coffeescript
'use strict'
semver = require 'semver'
fs = require 'fs'
pathUtils = require 'path'
global.Neft = require './bundle/neft-node-develop'
{log} = Neft
# warning for legacy node version
do ->
currentVersion = process.version
expectedVersion = require('../package.json').engines.node
unless semver.satisfies(currentVersion, expectedVersion)
log.error "Node version '#{currentVersion}' " +
"is lower than expected '#{expectedVersion}'"
# parse arguments
ARGS_WITH_COMMANDS =
create: true
build: true
run: true
PLATFORMS =
node: true
browser: true
android: true
qt: true
ios: true
DEFAULT_OPTIONS_VALUES =
out: 'build'
args =
help: false
version: false
create: ''
build: ''
run: ''
options =
release: false
out: ''
watch: false
notify: false
'with-tests': false
argOutput = ''
for arg, i in process.argv when i > 1
if arg.slice(0, 2) is '--'
if arg.indexOf('=') >= 0
[name, value] = arg.split('=')
name = name.slice(2)
else
name = arg.slice(2)
value = DEFAULT_OPTIONS_VALUES[name] or true
if options[name] is undefined
log.error "Unexpected option '#{arg}'"
args.help = true
options[name] = value
else
if argOutput
args[argOutput] = arg
argOutput = ''
else
if args[arg] is undefined
log.error "Unexpected command '#{arg}'"
args.help = true
args[arg] = true
if ARGS_WITH_COMMANDS[arg]
argOutput = arg
options.withTests = options['with-tests']
if process.argv.length <= 2
args.help = true
# verify
if args.build is true or args.run is true
log.error 'No platform specified'
args.help = true
else if (args.build and not PLATFORMS[args.build]) or args.run and not PLATFORMS[args.run]
log.error 'Unsupported platform'
args.help = true
# commands
if args.help
log '\n'+fs.readFileSync(pathUtils.resolve(__dirname, './README'), 'utf-8')
else if args.version
log require('../package.json').version
else if args.create
require('./tasks/create') args.create, options
else if (platform = args.build or args.run)
require('./tasks/build') platform, options, (err) ->
if err
return log.error err?.stack or err
if args.run
require('./tasks/run') platform, options