UNPKG

qrfi

Version:

A CLI Wi-Fi QR Code Generator.

82 lines (70 loc) 1.9 kB
#!/usr/bin/env node import * as program from 'commander' import * as fs from 'fs' import { isatty } from 'tty' import * as outdent from '@kamataryo/outdent' import Qrfi from '.' const { version, description } = JSON.parse( fs.readFileSync(__dirname + '/../package.json').toString('utf-8') ) program .version(version) .description(description) .usage('[ssid] [options]') .option( '-t, --authentication-type <value>', 'Optional. One of WEP, WPA, nopass. Default value is WPA.' ) .option('-p, --password <value>', 'Optional.') .option( '-H, --hidden', 'Optional. The SSID is hidden or not. Default value is `false`.' ) .option('-f, --format <value>', 'Optional. ascii as default, png or svg.') program.on('--help', () => { process.stdout.write( ` Examples: $ qrfi YOUR-SSID -p YOUR-PASSWORD $ qrfi YOUR-SSID -p YOUR-PASSWORD -f png > qr.png $ echo YOUR-SSID | qrfi -p YOUR-PASSWORD `[outdent as string] ) }) program.parse(process.argv) const args = [...program.args] // options const authenticationType = program.authenticationType || 'WPA' const password = program.password || '' const hidden = !!program.hidden const format = program.format || 'ascii' // stdin process.stdin.resume() process.stdin.setEncoding('utf8') let stdinData = '' const onEnd = () => { const networkSSID = args[0] || stdinData let qrfi: Qrfi try { qrfi = new Qrfi({ authenticationType, networkSSID, password, hidden }) } catch (e) { process.stdout.write(e.message) process.exit(1) } qrfi .toQR({ format }) .then(qrcode => { process.stdout.write(qrcode) process.exit(0) }) .catch(e => { process.stderr.write(e.message) process.exit(2) }) } if (isatty(0)) { onEnd() } else { process.stdin.on('data', chunk => (stdinData += chunk)) process.stdin.on('end', onEnd) }