collider.jam
Version:
Hand-crafted game framework for jamming, creative coding and rapid indie game development
115 lines (94 loc) • 3.53 kB
JavaScript
const env = require('./env')
module.exports = function() {
// process args
let cmd = ''
const args = process.argv;
let lastOption
let parsedOption = false
for (let i = 2; i < args.length; i++) {
// TODO -d/--debug -v/--verbose -s/--silent -h/--help options
let arg = args[i]
if (arg === '-d' || arg === '--debug') {
env.debug = true
env.config.debug = true
env.flow = true
env.config.flow = true
parsedOption = false
} else if (arg === '-y' || arg === '--types') {
env.types = true
parsedOption = false
} else if (arg === '-f' || arg === '--flow') {
// TODO make it into a --force flag?
// should it be hot reload or something?
env.flow = true
env.config.flow = true
parsedOption = false
} else if (arg === '-t' || arg === '--test') {
//parsedOption = false
parsedOption = true
lastOption = 'test'
env.test = true
env.config.test = true
} else if (arg === '-l' || arg === '--lab') {
if (++i === args.length) throw 'a lab .js file is expected after the [' + arg + '] option'
if (env.monoLab) env.monoLab += ',' + args[i]
else env.monoLab = args[i]
parsedOption = false
lastOption = 'lab'
} else if (arg === '-b' || arg === '--hub') {
env.hub = true
env.config.hub = true
parsedOption = false
} else if (arg === '-mc' || arg === '--mission-control') {
env.mc = true
parsedOption = false
} else if (arg === '-p' || arg === '--port') {
if (++i === args.length) throw 'number is expected after the [' + arg + '] option'
let p = parseInt(args[i])
if (isNaN(p)) throw 'number is expected after the [' + arg + '] option'
env.port = p
parsedOption = false
} else if (arg === '-s' || arg === '--static') {
env.dynamic = false
parsedOption = false
} else if (arg === '-n' || arg === '--pregen') {
env.dynamic = false
env.pregen = true
parsedOption = false
} else if (arg === '-g' || arg === '--global') {
env.globalMode = true
parsedOption = false
} else if (arg === '-v' || arg === '--verbose') {
env.verbose = true
parsedOption = false
} else if (arg === '-m' || arg === '--mute') {
// switch off all except warnings and errors
env.mute = true
log.trace = log.off
log.debug = log.off
log.out = log.off
log.raw = log.off
log.dump = log.off
parsedOption = false
} else if (arg === '-h' || arg === '--help') {
cmd = 'help'
} else if (arg === '--version') {
cmd = 'version'
} else if (arg.startsWith('--')) {
parsedOption = true
lastOption = arg.substring(2)
env.config[lastOption] = true
} else {
if (parsedOption) {
env.config[lastOption] = arg
} else if (!cmd) {
cmd = arg
} else {
env.params.push(arg)
}
parsedOption = false
}
}
env.cmd = cmd
return cmd
}