Allow running persistent run hooks of all parents (#2044)
Currently, only one of the persistent pre-runs and post-runs is executed. It is always the first one found in the parents chain, starting at this command. Expected behavior is to execute all parents' persistent pre-runs and post-runs. Dependent projects implemented various workarounds for this: - manually building persistent hook chains (in every hook). - applying some kind of monkey-patching on top of Cobra. This change eliminates the necessity for such workarounds by allowing to set a global variable EnableTraverseRunHooks. Tickets: - https://github.com/spf13/cobra/issues/216 - https://github.com/spf13/cobra/issues/252 Signed-off-by: Volodymyr Khoroz <volodymyr.khoroz@foundries.io>
This commit is contained in:
		@ -687,6 +687,10 @@ Inside subCmd PostRun with args: [arg1 arg2]
 | 
			
		||||
Inside subCmd PersistentPostRun with args: [arg1 arg2]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
By default, only the first persistent hook found in the command chain is executed.
 | 
			
		||||
That is why in the above output, the `rootCmd PersistentPostRun` was not called for a child command.
 | 
			
		||||
Set `EnableTraverseRunHooks` global variable to `true` if you want to execute all parents' persistent hooks.
 | 
			
		||||
 | 
			
		||||
## Suggestions when "unknown command" happens
 | 
			
		||||
 | 
			
		||||
Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example:
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user