Skip to content

Commit

Permalink
Added Unit Tests and finished logging enhancement #2776
Browse files Browse the repository at this point in the history
Signed-off-by: João Reigota <[email protected]>
  • Loading branch information
cx-joao-reigota committed Apr 13, 2021
1 parent b4cd067 commit 6d3a134
Show file tree
Hide file tree
Showing 4 changed files with 373 additions and 12 deletions.
6 changes: 4 additions & 2 deletions internal/console/kics.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ var (
silent bool
ci bool

warning []string

rootCmd = &cobra.Command{
Use: "kics",
Short: constants.Fullname,
Expand All @@ -51,7 +53,7 @@ func initialize() error {
rootCmd.PersistentFlags().StringVarP(&logPath,
printer.LogPathFlag,
"",
"",
"skip-KICS-log-path",
fmt.Sprintf("path to log files, (defaults to ${PWD}/%s)", constants.DefaultLogFile))
rootCmd.PersistentFlags().StringVarP(&logLevel,
printer.LogLevelFlag,
Expand Down Expand Up @@ -95,7 +97,7 @@ func initialize() error {

initScanCmd()
if insertScanCmd() {
log.Warn().Msg("WARNING: for future versions use 'kics scan'")
warning = append(warning, "WARNING: for future versions use 'kics scan'")
os.Args = append([]string{os.Args[0], "scan"}, os.Args[1:]...)
}

Expand Down
57 changes: 47 additions & 10 deletions internal/console/printer/printer.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,17 @@ const (

var (
optionsMap = map[string]func(opt interface{}) error{
CIFlag: CI,
CIFlag: func(opt interface{}) error {
return nil
},
LogFileFlag: LogFile,
LogLevelFlag: LogLevel,
LogPathFlag: LogPath,
NoColorFlag: NoColor,
SilentFlag: Silent,
VerboseFlag: Verbose,
SilentFlag: func(opt interface{}) error {
return nil
},
VerboseFlag: Verbose,
LogFormatFlag: func(opt interface{}) error {
return nil
},
Expand All @@ -50,7 +54,10 @@ var (
consoleLogger = zerolog.ConsoleWriter{Out: io.Discard}
fileLogger = zerolog.ConsoleWriter{Out: io.Discard}

loggerFile *os.File
outFileLogger interface{}
outConsoleLogger interface{}

loggerFile interface{}
)

// SetupPrinter - configures stdout and log options with given FlagSet
Expand Down Expand Up @@ -85,6 +92,16 @@ func SetupPrinter(flags *pflag.FlagSet) error {
return err
}

err = Silent(getFlagValue(SilentFlag, flags))
if err != nil {
return err
}

err = CI(getFlagValue(CIFlag, flags))
if err != nil {
return err
}

return nil
}

Expand Down Expand Up @@ -133,6 +150,7 @@ func Silent(opt interface{}) error {
if silent {
color.SetOutput(io.Discard)
os.Stdout = nil
log.Logger = log.Output(zerolog.MultiLevelWriter(io.Discard, outFileLogger.(io.Writer)))
}
return nil
}
Expand All @@ -142,7 +160,7 @@ func CI(opt interface{}) error {
ci := opt.(bool)
if ci {
color.SetOutput(io.Discard)
consoleLogger = zerolog.ConsoleWriter{Out: os.Stdout, NoColor: true}
log.Logger = log.Output(zerolog.MultiLevelWriter(outConsoleLogger.(io.Writer), outFileLogger.(io.Writer)))
os.Stdout = nil
}
return nil
Expand All @@ -152,9 +170,14 @@ func CI(opt interface{}) error {
func LogFormat(opt interface{}) error {
logFormat := opt.(string)
if logFormat == LogFormatJSON {
os.Stdout = nil
log.Logger = log.Output(zerolog.MultiLevelWriter(os.Stdout, loggerFile.(io.Writer)))
outFileLogger = loggerFile
outConsoleLogger = os.Stdout
} else if logFormat == LogFormatPretty {
fileLogger = consoleHelpers.CustomConsoleWriter(&zerolog.ConsoleWriter{Out: loggerFile.(io.Writer), NoColor: true})
log.Logger = log.Output(zerolog.MultiLevelWriter(consoleLogger, fileLogger))
outFileLogger = fileLogger
outConsoleLogger = zerolog.ConsoleWriter{Out: os.Stdout, NoColor: true}
} else {
return errors.New("invalid log format")
}
Expand All @@ -165,7 +188,14 @@ func LogFormat(opt interface{}) error {
func LogPath(opt interface{}) error {
logPath := opt.(string)
var err error
if logPath == "" {
switch logPath {
case "skip-KICS-log-path":
if loggerFile == nil {
loggerFile = io.Discard
return nil
}
return nil
case "":
logPath, err = getDefaultLogPath()
if err != nil {
return err
Expand All @@ -175,15 +205,22 @@ func LogPath(opt interface{}) error {
if err != nil {
return err
}

return nil
}

// LogFile - enables write to log file
func LogFile(opt interface{}) error {
logFile := opt.(bool)
if logFile {
fileLogger = consoleHelpers.CustomConsoleWriter(&zerolog.ConsoleWriter{Out: loggerFile, NoColor: true})
logPath, err := getDefaultLogPath()
if err != nil {
return err
}
loggerFile, err = os.OpenFile(filepath.Clean(logPath), os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm)
if err != nil {
return err
}
fileLogger = consoleHelpers.CustomConsoleWriter(&zerolog.ConsoleWriter{Out: loggerFile.(io.Writer), NoColor: true})
}
return nil
}
Expand All @@ -205,7 +242,7 @@ func LogLevel(opt interface{}) error {
case "FATAL":
zerolog.SetGlobalLevel(zerolog.FatalLevel)
default:
zerolog.SetGlobalLevel(zerolog.InfoLevel)
return errors.New("invalid log level")
}
return nil
}
Expand Down
Loading

0 comments on commit 6d3a134

Please sign in to comment.