tanzu-cli
tanzu-cli copied to clipboard
Add global --verbose flag
What this PR does / why we need it
- Introduce a global flag
--verbose
of type int with values 0-9 to set the log verbosity level for a tanzu command. - For Plugin commands :- If plugin root command support
--verbose
flag the CLI would send the flag args to plugin.
If a plugin implement --verbose
flag of any type int, bool, string that flag args are passed to plugin by the Tanzu CLI
- Tanzu CLI only supports --verbose flag of int type For Example :- When user runs
tanzu --verbose 5 telemetry version
# The CLI will set the log verbosity to 5 and also passes the --verbose flag to telemetry plugin if it supports.
Which issue(s) this PR fixes
Fixes #
Describe testing done for PR
For Tanzu CLI Commands with different test log levels
> tz --verbose 10 version
[x] : Invalid value for verbose flag. It should be between 0 and 9
> tz --verbose true version
[x] : invalid argument "true" for "--verbose" flag: strconv.ParseInt: parsing "true": invalid syntax
> tz --verbose=true version
[x] : invalid argument "true" for "--verbose" flag: strconv.ParseInt: parsing "true": invalid syntax
> tz --verbose -10 version
[x] : Invalid value for verbose flag. It should be between 0 and 9
> tz version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
> tz --verbose 0 version
[i] I am level default
[i] I am level 0
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
> tz --verbose 2 version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
> tz --verbose 5 version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
> TANZU_CLI_LOG_LEVEL=0 tz version
[i] I am level default
[i] I am level 0
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
> TANZU_CLI_LOG_LEVEL=3 tz version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
> TANZU_CLI_LOG_LEVEL=6 tz version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
[i] I am level 6
version: v1.3.0-dev
buildDate: 2024-03-13
sha: 61a35e05
arch: arm64
Created test plugins logb with boolean verbose flag, logi with int verbose flag
> tz --verbose 2 logi
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] [Plugin] I am level default # Test logs from the plugin
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
> tz --verbose -2 logi
[x] : Missing value for verbose flag
> tz --verbose 6 logi
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
[i] I am level 6
[i] [Plugin] I am level default
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
[i] [Plugin] I am level 3
[i] [Plugin] I am level 4
[i] [Plugin] I am level 5
[i] [Plugin] I am level 6
> tz --verbose logi
[x] : invalid argument "logi" for "--verbose" flag: strconv.ParseInt: parsing "logi": invalid syntax
# For boolean verbose flag plugin
> tz --verbose=true logb
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] [Plugin] I am level default
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
[i] [Plugin] I am level 3
> tz --verbose=false logb
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] [Plugin] I am level default
[i] [Plugin] I am level 0
[i] [Plugin] I am level 1
[i] [Plugin] I am level 2
[i] [Plugin] I am level 3
With existing plugin that doesn't support verbose flag
# The verbosity is only set in the Tanzu CLI and since builder plugin doesn't support verbose flag CLI doesn't pass the flag
> tz --verbose 5 builder version
[i] I am level default
[i] I am level 0
[i] I am level 1
[i] I am level 2
[i] I am level 3
[i] I am level 4
[i] I am level 5
v1.2.0
> tz --verbose 0 builder version
[i] I am level default
[i] I am level 0
v1.2.0
Invalid verbose flag values
> tz version --verbose
[x] : flag needs an argument: --verbose
> tz --verbose version
[x] : invalid argument "version" for "--verbose" flag: strconv.ParseInt: parsing "version": invalid syntax
> tz version --verbose hi
[x] : invalid argument "hi" for "--verbose" flag: strconv.ParseInt: parsing "hi": invalid syntax
> tz version --verbose -h
[x] : invalid argument "-h" for "--verbose" flag: strconv.ParseInt: parsing "-h": invalid syntax
Release note
Implement a global log level verbose flag --verbose