node-gamedig/bin/gamedig.js
Tom 01794f6339
Add support for running using deno (#362)
* Add missing CRLF line ending

* Add support for running using deno

Prefix node imports with "node:" and gate a socket API that is not
implemented in [deno](https://deno.land) so that the library can be used
there. This should not break node and doesn't in my brief testing.
2023-10-10 12:25:57 +03:00

69 lines
1.5 KiB
JavaScript
Executable file

#!/usr/bin/env node
import * as process from "node:process";
import Minimist from 'minimist'
import GameDig from './../lib/index.js'
const argv = Minimist(process.argv.slice(2), {
boolean: ['pretty', 'debug', 'givenPortOnly', 'requestRules'],
string: ['guildId', 'listenUdpPort', 'ipFamily']
})
const debug = argv.debug
delete argv.debug
const pretty = !!argv.pretty || debug
delete argv.pretty
const givenPortOnly = argv.givenPortOnly
delete argv.givenPortOnly
const options = {}
for (const key of Object.keys(argv)) {
const value = argv[key]
if (key === '_' || key.charAt(0) === '$') { continue }
options[key] = value
}
if (argv._.length >= 1) {
const target = argv._[0]
const split = target.split(':')
options.host = split[0]
if (split.length >= 2) {
options.port = split[1]
}
}
if (debug) {
options.debug = true
}
if (givenPortOnly) {
options.givenPortOnly = true
}
const printOnPretty = (object) => {
if (pretty) {
console.log(JSON.stringify(object, null, ' '))
} else {
console.log(JSON.stringify(object))
}
}
const gamedig = new GameDig(options)
gamedig.query(options)
.then(printOnPretty)
.catch((error) => {
if (debug) {
if (error instanceof Error) {
console.log(error.stack)
} else {
console.log(error)
}
} else {
if (error instanceof Error) {
error = error.message
}
printOnPretty({ error })
}
})