node-gamedig/bin/gamedig.js

71 lines
1.7 KiB
JavaScript
Raw Normal View History

2014-10-29 08:02:03 +01:00
#!/usr/bin/env node
2019-01-14 06:54:36 +01:00
const Minimist = require('minimist'),
Gamedig = require('..');
2014-10-29 08:02:03 +01:00
2019-01-14 06:54:36 +01:00
const argv = Minimist(process.argv.slice(2), {
boolean: ['pretty','debug','givenPortOnly','requestRules'],
string: ['guildId','listenUdpPort','ipFamily']
2019-01-14 06:54:36 +01:00
});
const debug = argv.debug;
2014-10-29 08:02:03 +01:00
delete argv.debug;
2019-01-12 11:43:36 +01:00
const pretty = !!argv.pretty || debug;
delete argv.pretty;
const givenPortOnly = argv.givenPortOnly;
delete argv.givenPortOnly;
2014-10-29 08:02:03 +01:00
const options = {};
for(const key of Object.keys(argv)) {
const value = argv[key];
2017-08-09 12:32:09 +02:00
if(
key === '_'
|| key.charAt(0) === '$'
)
continue;
options[key] = value;
2014-10-29 08:02:03 +01:00
}
2019-01-12 11:43:36 +01:00
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;
}
2017-03-14 09:40:02 +01:00
const gamedig = new Gamedig(options);
gamedig.query(options)
2017-08-09 12:32:09 +02:00
.then((state) => {
2019-01-07 07:52:29 +01:00
if(pretty) {
2017-08-09 12:32:09 +02:00
console.log(JSON.stringify(state,null,' '));
} else {
console.log(JSON.stringify(state));
}
})
.catch((error) => {
if (debug) {
if (error instanceof Error) {
console.log(error.stack);
} else {
console.log(error);
}
} else {
if (error instanceof Error) {
error = error.message;
}
2019-01-07 07:52:29 +01:00
if (pretty) {
console.log(JSON.stringify({error: error}, null, ' '));
} else {
console.log(JSON.stringify({error: error}));
}
}
2017-08-09 12:32:09 +02:00
});