Comments (7)
@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.
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.
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.
@jcurtis You should try this... 😊
from args.
@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.
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.
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)
- Feature: Strict type parsing mode
- Feature: Windows-style swithes
- Feature: Modifiable`showVersion()` method
- Issue: How do I display app's description on the help message?
- Issue: Change default arguments HOT 1
- Options' defaults not used when using command with init function HOT 3
- Handling top level command HOT 5
- Fails to parse decimal number
- The command docs are impossible to figure out.
- Access flags from command
- Force No short option for an argument
- MRI defaults override option given in short-form
- [Bug] Passing the `--help` option with a subcommand prints the primary command help instead HOT 1
- Consider using colorette instead of chalk
- This package fails after used in built electron app. HOT 1
- Status code 1 instead of 0..
- Default `version` command does not work for esmodule packages
- How to use options value with cmd in cmd? HOT 1
- Show invalid version when using `ts-node`
- spawn error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from args.