Skip to content

Commit

Permalink
Feat: Added --disableANSI Flag to CLI to enable/disable ANSI Color Co…
Browse files Browse the repository at this point in the history
…des (#1526)

* Feat: Added --enableColor Flag to CLI to enable/disable ASNI Color Codes

Signed-off-by: Akash <akashsingh2210670@gmail.com>

* Replaced flag to --disableANSI

Signed-off-by: Akash Singh <akashsingh2210670@gmail.com>

---------

Signed-off-by: Akash <akashsingh2210670@gmail.com>
Signed-off-by: Akash Singh <akashsingh2210670@gmail.com>
Co-authored-by: Pranshu Srivastava <37413698+PranshuSrivastava@users.noreply.github.com>
Co-authored-by: Sarthak Shyngle <50234097+Sarthak160@users.noreply.github.com>
  • Loading branch information
3 people committed Apr 19, 2024
1 parent 3e30471 commit 5645ab5
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 6 deletions.
12 changes: 12 additions & 0 deletions cli/provider/cmd.go
Expand Up @@ -220,6 +220,7 @@ func (c *CmdConfigurator) AddFlags(cmd *cobra.Command) error {
case "keploy":
cmd.PersistentFlags().Bool("debug", c.cfg.Debug, "Run in debug mode")
cmd.PersistentFlags().Bool("disableTele", c.cfg.DisableTele, "Run in telemetry mode")
cmd.PersistentFlags().Bool("disableANSI", c.cfg.DisableANSI, "Disable ANSI color in logs")
err = cmd.PersistentFlags().MarkHidden("disableTele")
if err != nil {
errMsg := "failed to mark telemetry as hidden flag"
Expand Down Expand Up @@ -305,6 +306,17 @@ func (c *CmdConfigurator) ValidateFlags(ctx context.Context, cmd *cobra.Command)
c.cfg.DisableTele = true
}

if c.cfg.DisableANSI {
logger, err := log.ChangeColorEncoding()
*c.logger = *logger
if err != nil {
errMsg := "failed to change color encoding"
utils.LogError(c.logger, err, errMsg)
return errors.New(errMsg)
}
c.logger.Info("Color encoding is disabled")
}

c.logger.Debug("config has been initialised", zap.Any("for cmd", cmd.Name()), zap.Any("config", c.cfg))

switch cmd.Name() {
Expand Down
1 change: 1 addition & 0 deletions config/config.go
Expand Up @@ -13,6 +13,7 @@ type Config struct {
ProxyPort uint32 `json:"proxyPort" yaml:"proxyPort" mapstructure:"proxyPort"`
Debug bool `json:"debug" yaml:"debug" mapstructure:"debug"`
DisableTele bool `json:"disableTele" yaml:"disableTele" mapstructure:"disableTele"`
DisableANSI bool `json:"disableANSI" yaml:"disableANSI" mapstructure:"disableANSI"`
InDocker bool `json:"inDocker" yaml:"inDocker" mapstructure:"inDocker"`
ContainerName string `json:"containerName" yaml:"containerName" mapstructure:"containerName"`
NetworkName string `json:"networkName" yaml:"networkName" mapstructure:"networkName"`
Expand Down
1 change: 1 addition & 0 deletions config/default.go
Expand Up @@ -15,6 +15,7 @@ port: 0
proxyPort: 16789
dnsPort: 26789
debug: false
DisableANSI: false
disableTele: false
inDocker: false
generateGithubActions: true
Expand Down
14 changes: 9 additions & 5 deletions utils/log/colors.go
Expand Up @@ -4,6 +4,7 @@ package log
import (
"bytes"

"go.uber.org/zap"
"go.uber.org/zap/buffer"
"go.uber.org/zap/zapcore"
)
Expand All @@ -13,12 +14,15 @@ type color struct {
zapcore.Encoder
}

func NewColor(cfg zapcore.EncoderConfig) (enc zapcore.Encoder) {
return color{
EncoderConfig: &cfg,
// Using the default ConsoleEncoder can avoid rewriting interfaces such as ObjectEncoder
Encoder: zapcore.NewConsoleEncoder(cfg),
func NewColor(cfg zapcore.EncoderConfig, enableColor bool) (enc zapcore.Encoder) {
if enableColor {
return color{
EncoderConfig: &cfg,
Encoder: zapcore.NewConsoleEncoder(cfg),
}
}
// fmt.Println("Color is disabled")
return zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig())
}

// EncodeEntry overrides ConsoleEncoder's EncodeEntry
Expand Down
14 changes: 13 additions & 1 deletion utils/log/logger.go
Expand Up @@ -17,7 +17,10 @@ var logCfg zap.Config

func New() (*zap.Logger, error) {
_ = zap.RegisterEncoder("colorConsole", func(config zapcore.EncoderConfig) (zapcore.Encoder, error) {
return NewColor(config), nil
return NewColor(config, true), nil
})
_ = zap.RegisterEncoder("nonColorConsole", func(config zapcore.EncoderConfig) (zapcore.Encoder, error) {
return NewColor(config, false), nil
})

logCfg = zap.NewDevelopmentConfig()
Expand Down Expand Up @@ -98,3 +101,12 @@ func AddMode(mode string) (*zap.Logger, error) {
}
return newLogger, nil
}

func ChangeColorEncoding() (*zap.Logger, error) {
logCfg.Encoding = "nonColorConsole"
logger, err := logCfg.Build()
if err != nil {
return nil, fmt.Errorf("failed to build config for logger: %v", err)
}
return logger, nil
}

0 comments on commit 5645ab5

Please sign in to comment.