In questo articolo vedremo come creare una semplice applicazione da riga di comando in Node.js.
Installiamo il modulo yargs per il parsing e la gestione avanzata degli argomenti da riga di comando.
npm install yargs --save
La nostra applicazione genererà una password casuale di lunghezza length
specificata dall'utente tramite il comando create
.
node app.js create --length=12
Per ottenere questo risultato, creiamo prima una funzione di utility che, data una lunghezza definita da un numero intero, genera la password casuale corrispondente.
'use strict';
const generate = passwordLength => {
const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@#!$%&?*%()[]{}<>|'.split('');
let output = '';
for(let i = 0; i < passwordLength; i++) {
let char = chars[Math.floor(Math.random() * (chars.length - 1))];
output += char;
}
return output;
};
module.exports = generate;
A questo punto dobbiamo definire il comando create
con l'opzione obbligatoria length
che deve essere un numero intero.
'use strict';
const yargs = require('yargs');
const createPassword = require('./lib/generate');
yargs.command({
command: 'create',
describe: 'Generate a password',
builder: {
length: {
describe: 'Password length',
demandOption: true,
type: 'number'
}
},
handler(argv) {
console.log(createPassword(argv.length));
}
});
yargs.parse();
Il metodo command()
definisce un comando. Al suo interno l'oggetto builder
definisce le opzioni del comando. Nel nostro caso l'opzione length
è obbligatoria (demandOption
) e deve essere un numero (type
).
Il metodo handler()
definisce un callback per gestire il comando. Il suo unico argomento, argv
, è un oggetto letterale avente come proprietà tutte le opzioni definite in precedenza i cui valori saranno quelli inseriti dall'utente.