Giter VIP home page Giter VIP logo

Comments (7)

ntwcklng avatar ntwcklng commented on August 25, 2024 2

@jcurtis args.sub returns an array of all subcommands from process.argv. e.g.

const args = require('args');

args.command('import', 'Import Command')

console.log(args.sub)

args.parse(process.argv)

if (!args.sub[0]) args.showHelp() // calling the script without a subcommand will show help
$ node script.js
[]
$ node script.js import
['import']

Does that help?

from args.

leo avatar leo commented on August 25, 2024 1

The default command should be the code contained within the main binary. If you need an alias for that, simply define a new command and make it load the main binary.

You can define it in the init function here.

from args.

jcurtis avatar jcurtis commented on August 25, 2024

Was just thinking about this for my little CLI tool.

Right now if you just initiate the program with no command, nothing happens...

$ cli

$

You have to explicitly type cli help to show the usage. I'll try adding this with my own spin on it and see what happens.

from args.

leo avatar leo commented on August 25, 2024

@jcurtis You should try this... 😊

from args.

jcurtis avatar jcurtis commented on August 25, 2024

@leo Yep using .showHelp(). The problem is that the execution doesn't stop after a command has been run and there's no readily apparent way to know if a command was successfully found without having to check the process.argv input manually.

I was thinking since we're already holding the list of valid commands within the args instance maybe it would make sense to check for a valid command there.

Maybe a better approach would be to expose something like args.validSubCommand() so users can more easily check it themselves?

.isDefined is kinda relevant but you'd still need internals to call it.

Here's a third idea: instead of only returning flags on args.parse(process.argv) we could return an object with a bit more information in it. This would obviously be a breaking changes though.

const {command, flags} = args.parse(process.argv);

from args.

jcurtis avatar jcurtis commented on August 25, 2024

It does for showing the help screen. Thanks 👍

What about the default command scenario? Same logic except you'd want to call import for example?

from args.

leo avatar leo commented on August 25, 2024

After .parse(), the execution WILL stop. So if you're defining the sub commands on top of your main binary (that's where they should be defined), args will run the command if found and if it doesn't find one with the name entered, it will go on with running the main binary. In turn, you only need to call .showHelp there after you've defined the commands and the help will show up if the user tried to run a sub command that doesn't exist.

from args.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.