* fix: add new static linter and fix issues it found
Signed-off-by: Matt Butcher <matt.butcher@microsoft.com>
* fixed two additional linter errors.
Signed-off-by: Matt Butcher <matt.butcher@microsoft.com>
For each plugin, helm registers a ValidArgsFunction which the completion
script will call when it needs dynamic completion. This
ValidArgsFunction will setup the plugin environment and then call the
executable `plugin.complete`, if it is provided by the plugin.
The output of the call to `plugin.complete` will be used as completion
choices. The last line of the output can optionally be used by the
plugin to specify a completion directive.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
To use error codes to indicate completion directive to the completion
script had us use os.Exit() in the __complete command. This prevented
go tests calling the __complete command from succeeding.
Another option was to return an error containing an error code
(like is done for helm plugins) instead of calling os.Exit(). However
such an approach requires a change in how helm handles the returned
error of a Cobra command; although we can do this for Helm, it would
be an annoying requirement for other programs if we ever push this
completion logic into Cobra.
The chosen solution instead is to printout the directive at the end
of the list of completions, and have the completion script extract it.
Note that we print both the completions and directive to stdout.
It would have been interesting to print the completions to stdout and
the directive to stderr; however, it is very complicated for the
completion script to extract both stdout and stderr to different
variables, and even if possible, such code would not be portable to
many shells. Printing both to stdout is much simpler.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>