Reputation:
I want to create a script with node and node commander and when i try to grab the values of my args i get the value true instead the value itself.
For example if i write this in terminal:
node myfile.js -s somefile -d test
var program = require('commander');
program
.version('0.0.1')
.option('-s, --src', 'src csv file')
.option('-d, --destination', 'destination csv file')
.parse(process.argv);
console.log(program.src); // return true
console.log(program.destination); // return true
How i get the value of this args?
Upvotes: 28
Views: 5175
Reputation: 12635
You aren't specifying that the options take input. You can do this by including <data>
or [data]
(if optional) in your option definitions:
.option('-s, --src <src>', 'src csv file')
.option('-d, --dest [dest]', 'destination csv file')
Upvotes: 12
Reputation: 4718
You need to specify that the options take an argument and that they are not just a flag
program
.version('0.0.1')
.option('-s, --src <file>', 'src csv file')
.option('-d, --destination <file>', 'destination csv file')
.parse(process.argv);
If the argument is mandatory, it is specified with <>
. If it is optional, with []
.
Upvotes: 8
Reputation: 943517
The documentation isn't very clear and only shows this by example, but the syntax you have used ('-s, --src'
) is for boolean values.
If you want to take a string you need to say so: '-s, --src <item>'
Upvotes: 38