1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-28 10:28:36 +00:00

[Bug] [CLI] Level parameter of the apply and test commands does not work (#10216)

* added verbosity level

Signed-off-by: Suruchi Kumari <suruchikumarimfp4@gmail.com>

* added else statement to handle the error

Signed-off-by: GitHub <noreply@github.com>

* fix: verbosity in cli

Signed-off-by: anushkamittal20 <anumittal4641@gmail.com>

---------

Signed-off-by: Suruchi Kumari <suruchikumarimfp4@gmail.com>
Signed-off-by: GitHub <noreply@github.com>
Signed-off-by: anushkamittal20 <anumittal4641@gmail.com>
Co-authored-by: Suruchi Kumari <suruchikumarimfp4@gmail.com>
Co-authored-by: shuting <shuting@nirmata.com>
Co-authored-by: anushkamittal20 <anumittal4641@gmail.com>
This commit is contained in:
Anushka Mittal 2024-05-15 19:27:17 +05:30 committed by GitHub
parent 5fcf83084c
commit 63ab92417c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 78 additions and 32 deletions

View file

@ -2,13 +2,18 @@ package log
import (
"os"
"strconv"
"strings"
"github.com/go-logr/logr"
"github.com/kyverno/kyverno/pkg/logging"
"sigs.k8s.io/controller-runtime/pkg/log"
)
const loggerName = "kubectl-kyverno"
var defaultLogLevel = 2
var Log = logging.WithName(loggerName)
func Configure() error {
@ -17,19 +22,43 @@ func Configure() error {
func configure(args ...string) error {
logging.InitFlags(nil)
if isVerbose(args...) {
return logging.Setup(logging.TextFormat, logging.DefaultTime, 0)
isVerboseBool, level, err := isVerbose(args...)
if err != nil {
return err
}
if isVerboseBool {
return logging.Setup(logging.TextFormat, logging.DefaultTime, level)
} else {
log.SetLogger(logr.Discard())
}
return nil
}
func isVerbose(args ...string) bool {
for _, arg := range args {
func isVerbose(args ...string) (bool, int, error) {
for i, arg := range args {
if arg == "-v" || arg == "--v" {
return true
level := defaultLogLevel
if i+1 < len(args) {
levelStr := args[i+1]
levelInt, err := strconv.Atoi(levelStr)
if err != nil {
// Return an error if conversion fails
return false, 0, err
}
level = levelInt
}
return true, level, nil
} else if strings.HasPrefix(arg, "-v=") || strings.HasPrefix(arg, "--v=") {
return true
levelStr := strings.TrimPrefix(arg, "-v=")
levelStr = strings.TrimPrefix(levelStr, "--v=")
level, err := strconv.Atoi(levelStr)
if err != nil {
// Return an error if conversion fails
return false, 0, err
}
return true, level, nil
}
}
return false
return false, 0, nil
}

View file

@ -12,43 +12,60 @@ func TestConfigure(t *testing.T) {
func Test_isVerbose(t *testing.T) {
tests := []struct {
name string
args []string
want bool
name string
args []string
want bool
level int
}{{
name: "nil",
args: nil,
want: false,
name: "nil",
args: nil,
want: false,
level: 0,
}, {
name: "empty",
args: []string{},
want: false,
name: "empty",
args: []string{},
want: false,
level: 0,
}, {
name: "not verbose",
args: []string{"-verbose", "--verbose", "-vv", "--vv"},
want: false,
name: "not verbose",
args: []string{"-verbose", "--verbose", "-vv", "--vv"},
want: false,
level: 0,
}, {
name: "verbose",
args: []string{"-v", "3"},
want: true,
name: "verbose",
args: []string{"-v", "3"},
want: true,
level: 3,
}, {
name: "verbose",
args: []string{"-v=3"},
want: true,
name: "verbose",
args: []string{"-v"},
want: true,
level: defaultLogLevel,
}, {
name: "verbose",
args: []string{"--v", "3"},
want: true,
name: "verbose",
args: []string{"-v=3"},
want: true,
level: 3,
}, {
name: "verbose",
args: []string{"--v=3"},
want: true,
name: "verbose",
args: []string{"--v", "3"},
want: true,
level: 3,
}, {
name: "verbose",
args: []string{"--v=3"},
want: true,
level: 3,
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := isVerbose(tt.args...); got != tt.want {
got, level, _ := isVerbose(tt.args...)
if got != tt.want {
t.Errorf("isVerbose() = %v, want %v", got, tt.want)
}
if level != tt.level {
t.Errorf("isVerbose() level = %v, want %v", level, tt.level)
}
})
}
}