controldisplay

package
v0.16.0-rc.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2022 License: AGPL-3.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const MaxColumns = 200

Variables

View Source
var ColorSchemes = map[string]*ControlColorSchemaDefinition{
	"dark": {
		GroupTitle:           "bold-bright-white",
		Severity:             "bold-bright-yellow",
		CountZeroFail:        "gray1",
		CountZeroFailDivider: "gray1",
		CountDivider:         "gray2",
		CountFail:            "bold-bright-red",
		CountTotal:           "bright-white",
		CountTotalAllPassed:  "bold-bright-green",
		CountGraphFail:       "bright-red",
		CountGraphPass:       "bright-green",
		CountGraphAlarm:      "bright-red",
		CountGraphError:      "bright-red",
		CountGraphInfo:       "bright-cyan",
		CountGraphOK:         "bright-green",
		CountGraphSkip:       "gray3",
		CountGraphBracket:    "gray2",
		StatusAlarm:          "bold-bright-red",
		StatusError:          "bold-bright-red",
		StatusSkip:           "gray3",
		StatusInfo:           "bright-cyan",
		StatusOK:             "bright-green",
		StatusColon:          "gray1",
		ReasonAlarm:          "bright-red",
		ReasonError:          "bright-red",
		ReasonSkip:           "gray3",
		ReasonInfo:           "bright-cyan",
		ReasonOK:             "gray4",
		Spacer:               "gray1",
		Indent:               "gray1",
		UseColor:             true,
	},
	"light": {
		GroupTitle:           "bold-bright-black",
		Severity:             "bold-bright-yellow",
		CountZeroFail:        "gray5",
		CountZeroFailDivider: "gray5",
		CountDivider:         "gray4",
		CountFail:            "bold-bright-red",
		CountTotal:           "bright-black",
		CountTotalAllPassed:  "bold-bright-green",
		CountGraphFail:       "bright-red",
		CountGraphPass:       "bright-green",
		CountGraphAlarm:      "bright-red",
		CountGraphError:      "bright-red",
		CountGraphInfo:       "bright-cyan",
		CountGraphOK:         "bright-green",
		CountGraphSkip:       "gray3",
		CountGraphBracket:    "gray4",
		StatusAlarm:          "bold-bright-red",
		StatusError:          "bold-bright-red",
		StatusSkip:           "gray3",
		StatusInfo:           "bright-cyan",
		StatusOK:             "bright-green",
		StatusColon:          "gray5",
		ReasonAlarm:          "bright-red",
		ReasonError:          "bright-red",
		ReasonSkip:           "gray3",
		ReasonInfo:           "bright-cyan",
		ReasonOK:             "gray2",
		Spacer:               "gray5",
		Indent:               "gray5",
		UseColor:             true,
	},
	"plain": {UseColor: false},
}
View Source
var ErrFormatterNotFound = errors.New("Formatter not found")

Functions

func CounterRendererMinWidth

func CounterRendererMinWidth() int

func EnsureTemplates

func EnsureTemplates() error

EnsureTemplates scans the '$STEAMPIPE_INSTALL_DIR/check/templates' directory and copies over the templates defined in the 'templates' package if needed.

The name of the folder in the 'templates' package is used to identify templates in '$STEAMPIPE_INSTALL_DIR/templates' - where it is expected that a directory with the same name will exist.

We re-write the templates, when there is a higher template version available in the 'templates' package.

func MapRange

func MapRange(value int, valueRange RangeConstraint, desiredRange RangeConstraint) int

MapRange Re-maps a number from one range to another.

func TruncateString

func TruncateString(str string, length int) string

Types

type CSVRenderer

type CSVRenderer struct {
	// contains filtered or unexported fields
}

func (CSVRenderer) Render

func (r CSVRenderer) Render(tree *controlexecute.ExecutionTree) [][]string

type CheckExportTarget

type CheckExportTarget struct {
	Formatter Formatter
	File      string
}

func NewCheckExportTarget

func NewCheckExportTarget(formatter Formatter, file string) CheckExportTarget

type ControlColorSchemaDefinition

type ControlColorSchemaDefinition struct {
	// group
	GroupTitle           string
	Severity             string
	CountZeroFail        string
	CountZeroFailDivider string
	CountDivider         string
	CountFail            string
	CountTotal           string
	CountTotalAllPassed  string
	CountGraphFail       string
	CountGraphPass       string
	CountGraphAlarm      string
	CountGraphError      string
	CountGraphInfo       string
	CountGraphOK         string
	CountGraphSkip       string
	CountGraphBracket    string

	// results
	StatusAlarm string
	StatusError string
	StatusSkip  string
	StatusInfo  string
	StatusOK    string
	StatusColon string
	ReasonAlarm string
	ReasonError string
	ReasonSkip  string
	ReasonInfo  string
	ReasonOK    string

	Spacer   string
	Indent   string
	UseColor bool
}

type ControlColorScheme

type ControlColorScheme struct {
	GroupTitle           colorFunc
	Severity             colorFunc
	CountZeroFail        colorFunc
	CountZeroFailDivider colorFunc
	CountDivider         colorFunc
	CountFail            colorFunc
	CountTotal           colorFunc
	CountTotalAllPassed  colorFunc
	CountGraphFail       colorFunc
	CountGraphPass       colorFunc
	CountGraphAlarm      colorFunc
	CountGraphError      colorFunc
	CountGraphInfo       colorFunc
	CountGraphOK         colorFunc
	CountGraphSkip       colorFunc
	CountGraphBracket    colorFunc
	StatusAlarm          colorFunc
	StatusError          colorFunc
	StatusSkip           colorFunc
	StatusInfo           colorFunc
	StatusOK             colorFunc
	StatusColon          colorFunc
	ReasonAlarm          colorFunc
	ReasonError          colorFunc
	ReasonSkip           colorFunc
	ReasonInfo           colorFunc
	ReasonOK             colorFunc
	Spacer               colorFunc
	Indent               colorFunc

	ReasonColors map[string]colorFunc
	StatusColors map[string]colorFunc
	GraphColors  map[string]colorFunc
	UseColor     bool
}
var ControlColors *ControlColorScheme

ControlColors is a global variable containing the current control color scheme

func (*ControlColorScheme) Initialise

type ControlRenderer

type ControlRenderer struct {
	// contains filtered or unexported fields
}

func NewControlRenderer

func NewControlRenderer(run *controlexecute.ControlRun, parent *GroupRenderer) *ControlRenderer

func (ControlRenderer) Render

func (r ControlRenderer) Render() string

type CounterGraphRenderer

type CounterGraphRenderer struct {
	// contains filtered or unexported fields
}

func NewCounterGraphRenderer

func NewCounterGraphRenderer(failedControls, totalControls, maxTotalControls int, options CounterGraphRendererOptions) *CounterGraphRenderer

func (CounterGraphRenderer) Render

func (r CounterGraphRenderer) Render() string

type CounterGraphRendererOptions

type CounterGraphRendererOptions struct {
	FailedColorFunc colorFunc
}

type CounterRenderer

type CounterRenderer struct {
	// contains filtered or unexported fields
}

func NewCounterRenderer

func NewCounterRenderer(failedControls, totalControls, maxFailedControls, maxTotalControls int, options CounterRendererOptions) *CounterRenderer

func (CounterRenderer) Render

func (r CounterRenderer) Render() string

type CounterRendererOptions

type CounterRendererOptions struct {
	AddLeadingSpace bool
}

type CsvColumnPair

type CsvColumnPair struct {
	// contains filtered or unexported fields
}

type DimensionsRenderer

type DimensionsRenderer struct {
	// contains filtered or unexported fields
}

func NewDimensionsRenderer

func NewDimensionsRenderer(dimensions []controlexecute.Dimension, colorGenerator *controlexecute.DimensionColorGenerator, width int) *DimensionsRenderer

func (DimensionsRenderer) Render

func (r DimensionsRenderer) Render() string

Render returns the dimensions, truncated to the max length if necessary

type ErrorRenderer

type ErrorRenderer struct {
	// contains filtered or unexported fields
}

func NewErrorRenderer

func NewErrorRenderer(err error, width int, indent string) *ErrorRenderer

func (ErrorRenderer) Render

func (r ErrorRenderer) Render() string

type ExportTemplate

type ExportTemplate struct {
	TemplatePath                string
	FormatName                  string
	OutputExtension             string
	FormatFullName              string
	DefaultTemplateForExtension bool
}

func NewExportTemplate

func NewExportTemplate(directory string) *ExportTemplate

func ResolveExportTemplate

func ResolveExportTemplate(export string, allowFilenameEvaluation bool) (format *ExportTemplate, targetFilename string, err error)

ResolveExportTemplate accepts the export argument and resolves the template to use. If an exact match to the available templates is not found, and if 'allowFilenameEvaluation' is true then the 'export' value is parsed as a filename and the suffix is used to match to available templates returns - the export template to use - the path of the file to write to - error (if any)

func (ExportTemplate) String

func (ft ExportTemplate) String() string

type Formatter

type Formatter interface {
	Format(ctx context.Context, tree *controlexecute.ExecutionTree) (io.Reader, error)
	FileExtension() string
	GetFormatName() string
}

func GetDefinedOutputFormatter

func GetDefinedOutputFormatter(outputFormat string) (Formatter, bool)

func GetTemplateExportFormatter

func GetTemplateExportFormatter(arg string, allowFilenameEvaluation bool) (Formatter, string, error)

type FormatterMap

type FormatterMap map[string]Formatter

type GroupHeadingRenderer

type GroupHeadingRenderer struct {
	// contains filtered or unexported fields
}

func NewGroupHeadingRenderer

func NewGroupHeadingRenderer(title string, failed, total, maxFailed, maxTotal, width int, indent string) *GroupHeadingRenderer

func (GroupHeadingRenderer) Render

func (r GroupHeadingRenderer) Render() string

type GroupRenderer

type GroupRenderer struct {
	// contains filtered or unexported fields
}

func NewGroupRenderer

func NewGroupRenderer(group *controlexecute.ResultGroup, parent *GroupRenderer, maxFailedControls, maxTotalControls int, resultTree *controlexecute.ExecutionTree, width int) *GroupRenderer

func (GroupRenderer) Render

func (r GroupRenderer) Render() string

type GroupTitleRenderer

type GroupTitleRenderer struct {
	// contains filtered or unexported fields
}

func NewGroupTitleRenderer

func NewGroupTitleRenderer(title string, width int) *GroupTitleRenderer

func (GroupTitleRenderer) Render

func (r GroupTitleRenderer) Render() string

Render returns the title, truncated to the max length if necessary NOTE: adds a trailing space

type NullFormatter

type NullFormatter struct{}

NullFormatter is to be used when no output is expected. It always returns a `io.Reader` which reads an empty string

func (*NullFormatter) FileExtension

func (j *NullFormatter) FileExtension() string

func (*NullFormatter) Format

func (*NullFormatter) GetFormatName

func (j *NullFormatter) GetFormatName() string

type RangeConstraint

type RangeConstraint struct {
	// contains filtered or unexported fields
}

func NewRangeConstraint

func NewRangeConstraint(minimum int, maximum int) RangeConstraint

func (*RangeConstraint) Constrain

func (r *RangeConstraint) Constrain(value int) int

Constrain a number to be within a range.

type ResultColumns

type ResultColumns struct {
	AllColumns       []string
	GroupColumns     []CsvColumnPair
	ResultColumns    []CsvColumnPair
	DimensionColumns []string
	TagColumns       []string
}

type ResultReasonRenderer

type ResultReasonRenderer struct {
	// contains filtered or unexported fields
}

func NewResultReasonRenderer

func NewResultReasonRenderer(status, reason string, width int) *ResultReasonRenderer

func (ResultReasonRenderer) Render

func (r ResultReasonRenderer) Render() string

Render returns the reason, truncated to the max length if necessary NOTE: adds a trailing space

type ResultRenderer

type ResultRenderer struct {
	// contains filtered or unexported fields
}

func NewResultRenderer

func NewResultRenderer(status, reason string, dimensions []controlexecute.Dimension, colorGenerator *controlexecute.DimensionColorGenerator, width int, indent string) *ResultRenderer

func (ResultRenderer) Render

func (r ResultRenderer) Render() string

type ResultStatusRenderer

type ResultStatusRenderer struct {
	// contains filtered or unexported fields
}

func NewResultStatusRenderer

func NewResultStatusRenderer(status string) *ResultStatusRenderer

func (ResultStatusRenderer) Render

func (r ResultStatusRenderer) Render() string

Render returns the status

type SeverityRenderer

type SeverityRenderer struct {
	// contains filtered or unexported fields
}

func NewSeverityRenderer

func NewSeverityRenderer(severity string) *SeverityRenderer

func (SeverityRenderer) Render

func (r SeverityRenderer) Render() string

Render returns ther severity oin upper case, got 'critical' and 'high' severities for all other values an empty string is returned NOTE: adds a trailing space

type SpacerRenderer

type SpacerRenderer struct {
	// contains filtered or unexported fields
}

func NewSpacerRenderer

func NewSpacerRenderer(width int) *SpacerRenderer

func (SpacerRenderer) Render

func (r SpacerRenderer) Render() string

Render returns a divider string of format: "....... " NOTE: adds a trailing space

type SummaryRenderer

type SummaryRenderer struct {
	// contains filtered or unexported fields
}

func NewSummaryRenderer

func NewSummaryRenderer(resultTree *controlexecute.ExecutionTree, width int) *SummaryRenderer

func (SummaryRenderer) Render

func (r SummaryRenderer) Render() string

type SummarySeverityRenderer

type SummarySeverityRenderer struct {
	// contains filtered or unexported fields
}

func NewSummarySeverityRenderer

func NewSummarySeverityRenderer(resultTree *controlexecute.ExecutionTree, width int) *SummarySeverityRenderer

func (*SummarySeverityRenderer) Render

func (r *SummarySeverityRenderer) Render() []string

type SummarySeverityRowRenderer

type SummarySeverityRowRenderer struct {
	// contains filtered or unexported fields
}

func NewSummarySeverityRowRenderer

func NewSummarySeverityRowRenderer(resultTree *controlexecute.ExecutionTree, width int, severity string) *SummarySeverityRowRenderer

func (*SummarySeverityRowRenderer) Render

func (r *SummarySeverityRowRenderer) Render() string

type SummaryStatusRowRenderer

type SummaryStatusRowRenderer struct {
	// contains filtered or unexported fields
}

func NewSummaryStatusRowRenderer

func NewSummaryStatusRowRenderer(resultTree *controlexecute.ExecutionTree, width int, status string) *SummaryStatusRowRenderer

func (*SummaryStatusRowRenderer) Render

func (r *SummaryStatusRowRenderer) Render() string

type SummaryTotalRowRenderer

type SummaryTotalRowRenderer struct {
	// contains filtered or unexported fields
}

func NewSummaryTotalRowRenderer

func NewSummaryTotalRowRenderer(resultTree *controlexecute.ExecutionTree, width int) *SummaryTotalRowRenderer

func (*SummaryTotalRowRenderer) Render

func (r *SummaryTotalRowRenderer) Render() string

type TableRenderer

type TableRenderer struct {
	// contains filtered or unexported fields
}

func NewTableRenderer

func NewTableRenderer(resultTree *controlexecute.ExecutionTree) *TableRenderer

func (TableRenderer) MinimumWidth

func (r TableRenderer) MinimumWidth() int

MinimumWidth is the width we require It is determined by the left indent, title, severity, counter and counter graph

func (TableRenderer) Render

func (r TableRenderer) Render(width int) string

type TemplateFormatter

type TemplateFormatter struct {
	// contains filtered or unexported fields
}

TemplateFormatter implements the 'Formatter' interface and exposes a generic template based output mechanism for 'check' execution trees

func NewTemplateFormatter

func NewTemplateFormatter(input ExportTemplate) (*TemplateFormatter, error)

func (TemplateFormatter) FileExtension

func (tf TemplateFormatter) FileExtension() string

func (TemplateFormatter) Format

func (TemplateFormatter) GetFormatName

func (tf TemplateFormatter) GetFormatName() string

type TemplateRenderConfig

type TemplateRenderConfig struct {
	RenderHeader bool
}

type TemplateRenderConstants

type TemplateRenderConstants struct {
	SteampipeVersion string
	WorkingDir       string
}

type TemplateRenderContext

type TemplateRenderContext struct {
	Constants TemplateRenderConstants
	Config    TemplateRenderConfig
	Data      *controlexecute.ExecutionTree
}

type TemplateVersionFile

type TemplateVersionFile struct {
	Version string `json:"version"`
}

type TextFormatter

type TextFormatter struct{}

func (*TextFormatter) FileExtension

func (j *TextFormatter) FileExtension() string

func (*TextFormatter) Format

func (TextFormatter) GetFormatName

func (tf TextFormatter) GetFormatName() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL