leo / args

Toolkit for building command line interfaces
https://npmjs.com/args
MIT License
461 stars 30 forks source link

How to use options value with cmd in cmd? #167

Open grey4owl opened 2 years ago

grey4owl commented 2 years ago

Hi, Is it possible to create something like this:

//-- mycli.js

const args = require("args");

args.option("port", "The port on which the app will be running.", 4040);
args.command("run", "Run dev version on localhost.", () => {
  console.log("Running on port: " + flags.port); 
  //-- this doesn't work because you cannot access 'flags' before initialization
}, ["r"]);

const flags = args.parse(process.argv);

So you can use it like: mycli run --port 3333 and then output: Running on port: 3333. In case you are not using a --port flag, the output should be: Running on port: 4040.

I did not find anything similar in the documentation..

mike-feldmeier commented 2 years ago

You may have already figured out the solution, but it passes a copy of flags to the function. It is defined in the "init" function documentation, but I agree it doesn't tie it together into a coherent example.

const args = require("args");

args.option("port", "The port on which the app will be running.", 4040);
args.command("run", "Run dev version on localhost.", (name, sub, options) => {
  console.log("Running on port: " + options.port); 
}, ["r"]);

args.parse(process.argv);