mirror of
https://github.com/kubescape/kubescape.git
synced 2026-04-15 06:58:11 +00:00
118 lines
2.9 KiB
Go
118 lines
2.9 KiB
Go
package cautils
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
spinnerpkg "github.com/briandowns/spinner"
|
|
"github.com/jwalton/gchalk"
|
|
"github.com/kubescape/go-logger"
|
|
"github.com/kubescape/go-logger/helpers"
|
|
"github.com/mattn/go-isatty"
|
|
"github.com/schollz/progressbar/v3"
|
|
)
|
|
|
|
func FailureDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithBrightRed().Bold(format), a...)
|
|
}
|
|
|
|
func WarningDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithBrightYellow().Bold(format), a...)
|
|
}
|
|
|
|
func FailureTextDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithBrightRed().Dim(format), a...)
|
|
}
|
|
|
|
func InfoDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithBrightWhite().Bold(format), a...)
|
|
}
|
|
|
|
func InfoTextDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithBrightYellow().Bold(format), a...)
|
|
}
|
|
|
|
func SimpleDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.White(format), a...)
|
|
}
|
|
|
|
func SuccessDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithBlue().Bold(format), a...)
|
|
}
|
|
|
|
func DescriptionDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithWhite().Dim(format), a...)
|
|
}
|
|
|
|
func BoldDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.Bold(format), a...)
|
|
}
|
|
|
|
func LineDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithAnsi256(238).Bold(format), a...)
|
|
}
|
|
|
|
func SectionHeadingDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, "\n"+
|
|
gchalk.WithBrightWhite().Bold(format)+
|
|
gchalk.WithAnsi256(238).Bold(fmt.Sprintf("\n%s\n\n", strings.Repeat("─", len(format)))), a...)
|
|
}
|
|
|
|
func StarDisplay(w io.Writer, format string, a ...interface{}) {
|
|
fmt.Fprintf(w, gchalk.WithAnsi256(238).Bold("* ")+gchalk.White(format), a...)
|
|
}
|
|
|
|
var spinner *spinnerpkg.Spinner
|
|
|
|
func StartSpinner() {
|
|
if helpers.ToLevel(logger.L().GetLevel()) >= helpers.WarningLevel {
|
|
return
|
|
}
|
|
|
|
if spinner != nil {
|
|
if !spinner.Active() {
|
|
spinner.Start()
|
|
}
|
|
return
|
|
}
|
|
if isatty.IsTerminal(os.Stdout.Fd()) {
|
|
spinner = spinnerpkg.New(spinnerpkg.CharSets[7], 100*time.Millisecond) // Build our new spinner
|
|
spinner.Start()
|
|
}
|
|
}
|
|
|
|
func StopSpinner() {
|
|
if spinner == nil || !spinner.Active() {
|
|
return
|
|
}
|
|
spinner.Stop()
|
|
}
|
|
|
|
type ProgressHandler struct {
|
|
pb *progressbar.ProgressBar
|
|
title string
|
|
}
|
|
|
|
func NewProgressHandler(title string) *ProgressHandler {
|
|
return &ProgressHandler{title: title}
|
|
}
|
|
|
|
func (p *ProgressHandler) Start(allSteps int) {
|
|
if !isatty.IsTerminal(os.Stderr.Fd()) || helpers.ToLevel(logger.L().GetLevel()) >= helpers.WarningLevel {
|
|
p.pb = progressbar.DefaultSilent(int64(allSteps), p.title)
|
|
return
|
|
}
|
|
p.pb = progressbar.Default(int64(allSteps), p.title)
|
|
}
|
|
|
|
func (p *ProgressHandler) ProgressJob(step int, message string) {
|
|
p.pb.Add(step)
|
|
p.pb.Describe(message)
|
|
}
|
|
|
|
func (p *ProgressHandler) Stop() {
|
|
}
|