This repository was archived by the owner on Jan 21, 2020. It is now read-only.
Workaround for Cobra.Command handling of PersistentPreRunE #372
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The command pkg used,
Cobra.Command
, only executes the firstPersistentPreRunE
function, searching from the bottom up the command tree (from leaf subcommands up to the root).This creates a problem where for commands like
infrakit manager inspect
, only thePersistentPreRunE
of themanager
subcommand is executed, leaving the top level one (where the log level is set) not run at all. As a result, for deeply nested commands,--log
doesn't have any effects.This PR adds a convenient function
upTree
that is called by the leafPersistetPreRunE
to recurse up the tree and then executing some function in top-to-bottom order. This is probably better than patching/forking the library, and not calling the helper function just follows standard Cobra command behavior.Signed-off-by: David Chung david.chung@docker.com