@adamlui/geolocate
Version:
Fetch IP geolocation data from the CLI.
37 lines (28 loc) • 1.18 kB
JavaScript
(async () => {
'use strict'
// Init ENV
const init = require('./lib/init')
init.env()
// Import LIBS
globalThis.log = require('./lib/log')
const clipboardy = require('node-clipboardy'),
geo = require(`../geolocate${ env.modes.dev ? '' : '.min' }.js`)
await init.cli()
// Exec CMD arg if passed
if (cli.config.init) return init.configFile()
else if (cli.config.help) return log.help()
else if (cli.config.version) return log.version()
else if (cli.config.stats) return log.stats()
// Process IP args
const validIPs = []
for (const arg of env.args) if (!arg.startsWith('-')) // load IP from leading-dash-less arg
validIPs.push(arg.replace(/[[\]]/g, '')) // strip outer '[]' in case copied from docs
// Log/copy GEO result(s)
log.break()
const geoResults = await geo.locate(validIPs, { verbose: !cli.config.quietMode })
if (!geoResults) process.exit(1)
if (!cli.config.quietMode && geoResults.length == 1) log.geoData(geoResults[0])
log.ifNotQuiet(`${cli.msgs.info_copyingToClip}...`)
clipboardy.writeSync(JSON.stringify(geoResults, null, 2))
})()