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>
Because the 'settings' variable is a pointer, it cannot be used to store
the original envSettings and then restore them.
Instead, this commit creates an entirely new envSettings, after having
set the environment variables, which may affect it.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
The completion of charts was using 'helm search repo' which can be
quite slow as it must parse the entire yaml of every repo cache file.
Using completion for a chart name can end up triggering multiple calls
to 'helm search'; this makes the user experience poor, as there is
a delay of over a second at every <TAB> press.
This commit creates a cache file for each repo which contains the list
of charts for that repo. The completion logic then uses this new
cache file directly and obtains the chart names very quickly.
With only the stable repo configured, this optimization makes the
completion of charts about 85 times faster, going from 1.2 seconds to
0.014 seconds; such a difference gives a much better user experience
when completing chart names.
On the other hand, adding the creation of the chart list cache file to
'helm repo update' or 'helm repo add' is pretty much negligible compared
to the downloading of the index file.
It is also worth noting that when more repos are configured,
'helm search repo' only becomes slower, while the completion logic that
uses the new chart list cache file will not be affected as it only looks
for the single relevant repo file.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
* fix(cmd): Fixes logging on action conf init error
Errors relating to initializing the action config cause helm to exit silently,
except when in debug mode. This now emits the useful error.
Closes#6863
Signed-off-by: Jorge Gasca <jorge.ignacio.gasca@gmail.com>
* Remove unnecessary formatting of err struct
Signed-off-by: Jorge Gasca <jorge.ignacio.gasca@gmail.com>
* Include requirements.* as Files in APIVersionV1
Fixes#6974.
This ensures that when reading a Chart marked with APIVersion v1, we
maintain the behaviour of Helm v2 and include the requirements.yaml and
requirements.lock in the Files collection, and hence produce charts that
work correctly with Helm v2.
Signed-off-by: Paul "Hampy" Hampson <p_hampson@wargaming.net>
* Write out requirements.lock for APIVersion1 Charts
This keeps the on-disk format consistent after `helm dependency update`
of an APIVersion1 Chart.
Signed-off-by: Paul "Hampy" Hampson <p_hampson@wargaming.net>
* Exclude 'dependencies' from APVersion1 Chart.yaml
This fixes `helm lint` against an APIVersion1 chart packaged with Helm
v3.
Signed-off-by: Paul "Hampy" Hampson <p_hampson@wargaming.net>
* Generate APIVersion v2 charts for dependency tests
As the generated chart contains no requirements.yaml in its files list,
but has dependencies in its metadata, it is not a valid APIVersion v1
chart.
Signed-off-by: Paul "Hampy" Hampson <p_hampson@wargaming.net>
* Generate APIVersion v2 charts for manager tests
Specifically for the charts that have dependencies, the generated chart
contains no requirements.yaml in its files but has dependencies in its
metadata. Hence it is not a valid APIVersion v1 chart.
Signed-off-by: Paul "Hampy" Hampson <p_hampson@wargaming.net>
When the unreleased tag was removed, some tests that were added after
the PR was created started failing. This fixes them.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
* fix(helm): add --description flag to 'helm install', 'helm upgrade', and 'helm uninstall'
When added, this flag allow us to add a custom description to the release. E.g. '--description "my custom description"'
Closes#7033
Signed-off-by: Juan Matias Kungfu de la Camara Beovide <juanmatias@gmail.com>
* fix(helm): fixed style issues on top of previous commit (3a43a9a487)
Closes#7033
Signed-off-by: Juan Matias Kungfu de la Camara Beovide <juanmatias@gmail.com>
* fix(helm): fixed wrong test issue on top of previous commit (3a43a9a)
Closes#7033
Signed-off-by: Juan Matias Kungfu de la Camara Beovide <juanmatias@gmail.com>
* docs(install): clarify the --replace flag
The description of the `--replace` flag was unclear, as it can’t be
used to replace active releases.
Signed-off-by: Remco Haszing <remcohaszing@gmail.com>
* docs(install): reword replace flag description
Signed-off-by: Remco Haszing <remcohaszing@gmail.com>
When calling a plugin, if a global flag requiring a parameter was
missing the parameter, helm would crash.
For example:
helm 2to3 --namespace<ENTER>
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
Before this change, running 'helm env' multiple times would generate
a different order for the output each time. This is because Go
purposely loops over hash maps in a random order.
This commit sorts the environment variables by alphabetical order before
generating the output.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
After discussing similar changes in #6866, we decided to make sure all
JSON and YAML output uses lower snake case names as is generally standard
Signed-off-by: Taylor Thomas <taylor.thomas@microsoft.com>