2016-02-01 12 views
5

Hei guys!Array che usano il comandante

Ho bisogno di aiuto con la libreria commander node.js. Ho bisogno di creare questa CLI che accetta 3 bandiere, --input, --output e --pattern, come:

commander 
    .version('3.0.0') 
    .usage('[options] <file ...>') 
    .option('-i, --input', 'Array of files to be extracted') 
    .option('-o, --output', 'Output file name') 
    .option('-p, --pattern', 'Pattern name to be used in the extraction') 
    .parse(process.argv); 

Il mio problema è con la bandiera di ingresso. Ho bisogno di inviare diversi file, per questo ho bisogno di un tipo di dati array.

Il problema è: non riesco proprio a capire come rendere questo:

node ./bin/extract -i ../files/*.PDF 

diventare un array con tutti i miei file che sono dentro la mia directory dei file. Ho già provato a eseguire ogni esempio nella documentazione e non ho trovato la soluzione per il mio problema. Inoltre, ho cercato nei problemi e non ho trovato neanche ... cosa è strano, forse sto facendo qualcosa di sbagliato e voi ragazzi potreste aiutare ??

Grazie!

risposta

2

È possibile utilizzare Coercion per realizzarla:

function scanDir(val) { 
    files = fs.readdirSync(val); 
    return files; 
} 

program 
    .version('0.0.1') 
    .option('-s, --scan [value]', '', scanDir) 
    .parse(process.argv); 

console.log(' scan: %j', program.scan); 

e chiamarlo come:

node app.js -s /foo 
+0

grazie Lazarev! –

+0

Felice di aiutarti! :) –

+0

Puoi spiegarmi cosa significa coercizione in questo contesto? –