Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DefaultCommand does not work when defined on a sub-Command #1880

Closed
2 of 3 tasks
ananthb opened this issue Mar 29, 2024 · 9 comments
Closed
2 of 3 tasks

DefaultCommand does not work when defined on a sub-Command #1880

ananthb opened this issue Mar 29, 2024 · 9 comments
Labels
area/v3 relates to / is being considered for v3 status/triage maintainers still need to look into this

Comments

@ananthb
Copy link

ananthb commented Mar 29, 2024

Checklist

  • Are you running the latest v3 release? The list of releases is here.
  • Did you check the manual for your release? The v3 manual is here.
  • Did you perform a search about this feature? Here's the GitHub guide about searching.

What problem does this solve?

This maybe a bug. DefaultCommand should work on sub-commands too.

Solution description

If any Command anywhere has sub-commands and a DefaultCommand, then that should run by default.

Describe alternatives you've considered

None

@ananthb ananthb added area/v3 relates to / is being considered for v3 status/triage maintainers still need to look into this labels Mar 29, 2024
@ananthb
Copy link
Author

ananthb commented Mar 29, 2024

I've got a DefaultCommand on this sub-command which does not work: https://github.com/RealImage/bifrost/blob/36e773d2adcd2be64e69b871a80964829e6c2683/cmd/bf/ca.go#L28

@dearchap
Copy link
Contributor

dearchap commented Apr 1, 2024

@ananthb Can you show me how you are invoking the command ?

@ananthb
Copy link
Author

ananthb commented Apr 1, 2024

In that example above, I can invoke the ca subcommand either by not specifying any command and letting the root command's DefaultCommand execute ca or by directly calling bf ca.

Neither option actually invokes the default command on ca, which is serve.

If I run bf ca serve it works. I expected a plain bf to be equivalent to bf ca serve.

@dearchap
Copy link
Contributor

dearchap commented Apr 1, 2024

Ah ok so you want a default command on subcommand to flow through to the root. Thats not how it works. It works only one level. so a bf ca and bf ca serve might be equivalent but we dont have the plumbing to decide that bf is equivalent to bf ca serve. I dont recall any cli tools having this kind of functionality but I might be mistaken.

@ananthb
Copy link
Author

ananthb commented Apr 2, 2024

This might be simplistic but I thought of it as if a command has a default, then it should be executed if there are no arguments. Currently if a command at any level is run without arguments, this lib prints a help message. Setting a default command should replace that right?

@dearchap
Copy link
Contributor

dearchap commented Apr 2, 2024

Not really. If you have required flags then yes it would print a help otherwise at that level the default command is run. If it doesnt then its a bug. Can you share a small code snipped that shows this ?

@ananthb
Copy link
Author

ananthb commented Apr 8, 2024

I expected this example to print Hello, World!.
It prints the help output for the hello command instead.

How can I get it to print Hello, World! when run without arguments?

@dearchap
Copy link
Contributor

dearchap commented Apr 8, 2024

You need to do something like this

@ananthb
Copy link
Author

ananthb commented Apr 9, 2024

Perfect, thanks!

@ananthb ananthb closed this as completed Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/v3 relates to / is being considered for v3 status/triage maintainers still need to look into this
Projects
None yet
Development

No branches or pull requests

2 participants