diff --git a/cmd/crowdsec-cli/main.go b/cmd/crowdsec-cli/main.go index 53b151192..ba1b56489 100644 --- a/cmd/crowdsec-cli/main.go +++ b/cmd/crowdsec-cli/main.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "os" "path" "path/filepath" "strings" @@ -151,7 +152,11 @@ It is meant to allow you to manage bans, parsers/scenarios/etc, api and generall if err := rootCmd.PersistentFlags().MarkHidden("branch"); err != nil { log.Fatalf("failed to make branch hidden : %s", err) } - cobra.OnInitialize(initConfig) + + if os.Args[1] != "completion" { + cobra.OnInitialize(initConfig) + } + /*don't sort flags so we can enforce order*/ rootCmd.Flags().SortFlags = false rootCmd.PersistentFlags().SortFlags = false diff --git a/tests/bats/01_base.bats b/tests/bats/01_base.bats index a1b067a80..41c4dd580 100644 --- a/tests/bats/01_base.bats +++ b/tests/bats/01_base.bats @@ -127,3 +127,15 @@ declare stderr run -0 echo "$stderr" assert_output --partial "Local Api Metrics:" } + +@test "$FILE 'cscli completion' with or without configuration file" { + run -0 cscli completion bash + assert_output --partial "# bash completion for cscli" + run -0 cscli completion zsh + assert_output --partial "# zsh completion for cscli" + rm "${CONFIG_DIR}/config.yaml" + run -0 cscli completion bash + assert_output --partial "# bash completion for cscli" + run -0 cscli completion zsh + assert_output --partial "# zsh completion for cscli" +}