modconfig

package
v0.12.3-rc.0 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2022 License: AGPL-3.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BlockTypeMod       = "mod"
	BlockTypeQuery     = "query"
	BlockTypeControl   = "control"
	BlockTypeBenchmark = "benchmark"
	BlockTypeReport    = "report"
	BlockTypePanel     = "panel"
	BlockTypeLocals    = "locals"
	BlockTypeVariable  = "variable"
	BlockTypeParam     = "param"
)
View Source
const (
	ConnectionTypeAggregator = "aggregator"
)

Variables

View Source
var ResourceTypeMap = map[string]factoryFunc{
	constants.SqlExtension: func(modPath, filePath string) (MappableResource, []byte, error) {
		return QueryFromFile(modPath, filePath)
	},
}

Functions

func BuildModResourceName added in v0.5.0

func BuildModResourceName(blockType string, name string) string

func GetCtyTypes added in v0.5.0

func GetCtyTypes(item interface{}) map[string]cty.Type

GetCtyTypes builds a map of cty types for all tagged properties. It is used to convert the struct to a cty value

func GetMonotonicVersionString added in v0.11.0

func GetMonotonicVersionString(v *semver.Version) string

func GetPreparedStatementExecuteSQL added in v0.8.0

func GetPreparedStatementExecuteSQL(source QueryProvider, args *QueryArgs) (string, error)

GetPreparedStatementExecuteSQL return the SQLs to run the query as a prepared statement

func ModVersionFullName added in v0.11.0

func ModVersionFullName(name string, version *semver.Version) string

func ParseModFullName added in v0.11.0

func ParseModFullName(fullName string) (modName string, modVersion *semver.Version, err error)

func PropertyPathToResourceName added in v0.5.0

func PropertyPathToResourceName(propertyPath string) (string, error)

func PseudoResourceNameFromPath

func PseudoResourceNameFromPath(modPath, filePath string) (string, error)

PseudoResourceNameFromPath converts a filepath into a resource name

It operates as follows:

  1. get filename
  2. remove extension
  3. sluggify, with '_' as the divider

func RegisteredFileExtensions

func RegisteredFileExtensions() []string

func UnqualifiedResourceName added in v0.11.0

func UnqualifiedResourceName(fullName string) string

UnqualifiedResourceName removes the mod prefix from the given name

Types

type Benchmark added in v0.5.0

type Benchmark struct {
	ShortName string
	FullName  string `cty:"name"`

	ChildNames    []NamedItem       `cty:"children" hcl:"children,optional"`
	Description   *string           `cty:"description" hcl:"description" column:"description,text"`
	Documentation *string           `cty:"documentation" hcl:"documentation" column:"documentation,text"`
	Tags          map[string]string `cty:"tags" hcl:"tags,optional" column:"tags,jsonb"`
	Title         *string           `cty:"title" hcl:"title" column:"title,text"`

	// list of all block referenced by the resource
	References []*ResourceReference

	Mod              *Mod     `cty:"mod"`
	ChildNameStrings []string `column:"children,jsonb"`
	DeclRange        hcl.Range

	UnqualifiedName string
	// contains filtered or unexported fields
}

Benchmark is a struct representing the Benchmark resource

func NewBenchmark added in v0.5.0

func NewBenchmark(block *hcl.Block) *Benchmark

func (*Benchmark) AddChild added in v0.5.0

func (b *Benchmark) AddChild(child ModTreeItem) error

AddChild implements ModTreeItem

func (*Benchmark) AddParent added in v0.5.0

func (b *Benchmark) AddParent(parent ModTreeItem) error

AddParent implements ModTreeItem

func (*Benchmark) AddReference added in v0.5.0

func (b *Benchmark) AddReference(ref *ResourceReference)

AddReference implements HclResource

func (*Benchmark) CtyValue added in v0.5.0

func (b *Benchmark) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Benchmark) Equals added in v0.9.0

func (b *Benchmark) Equals(other *Benchmark) bool

func (*Benchmark) GetChildControls added in v0.5.0

func (b *Benchmark) GetChildControls() []*Control

GetChildControls return a flat list of controls underneath the benchmark in the tree

func (*Benchmark) GetChildren added in v0.5.0

func (b *Benchmark) GetChildren() []ModTreeItem

GetChildren implements ModTreeItem

func (*Benchmark) GetDeclRange added in v0.9.0

func (b *Benchmark) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Benchmark) GetDescription added in v0.5.0

func (b *Benchmark) GetDescription() string

GetDescription implements ModTreeItem

func (*Benchmark) GetMetadata added in v0.5.0

func (b *Benchmark) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Benchmark) GetMod added in v0.9.0

func (b *Benchmark) GetMod() *Mod

GetMod implements HclResource

func (*Benchmark) GetParents added in v0.5.0

func (b *Benchmark) GetParents() []ModTreeItem

GetParents implements ModTreeItem

func (*Benchmark) GetPaths added in v0.7.1

func (b *Benchmark) GetPaths() []NodePath

GetPaths implements ModTreeItem

func (*Benchmark) GetTags added in v0.5.0

func (b *Benchmark) GetTags() map[string]string

GetTags implements ModTreeItem

func (*Benchmark) GetTitle added in v0.5.0

func (b *Benchmark) GetTitle() string

GetTitle implements ModTreeItem

func (*Benchmark) Name added in v0.5.0

func (b *Benchmark) Name() string

Name implements ModTreeItem, HclResource, ResourceWithMetadata return name in format: '<modname>.control.<shortName>'

func (*Benchmark) OnDecoded added in v0.5.0

func (b *Benchmark) OnDecoded(block *hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Benchmark) SetMetadata added in v0.5.0

func (b *Benchmark) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Benchmark) SetMod added in v0.8.0

func (b *Benchmark) SetMod(mod *Mod)

SetMod implements HclResource

func (*Benchmark) String added in v0.5.0

func (b *Benchmark) String() string

type Connection added in v0.5.0

type Connection struct {
	// connection name
	Name string
	// The name of plugin as mentioned in config
	PluginShortName string
	// The fully qualified name of the plugin. derived from the short name
	Plugin string
	// Type - supported values: "aggregator"
	Type string `json:"Type,omitempty"`
	// this is a list of names or wildcards which are resolved to connections
	// (only valid for "aggregator" type)
	ConnectionNames []string `json:"Connections,omitempty"`
	// a list of the resolved child connections
	// (only valid for "aggregator" type)
	Connections map[string]*Connection `json:"-"`
	// unparsed HCL of plugin specific connection config
	Config string `json:"Config,omitempty"`

	// options
	Options   *options.Connection `json:"Options,omitempty"`
	DeclRange hcl.Range
}

Connection is a struct representing the partially parsed connection

(Partial as the connection config, which is plugin specific, is stored as raw HCL. This will be parsed by the plugin) json tags needed as this is stored in the connection state file

func NewConnection added in v0.9.0

func NewConnection(block *hcl.Block) *Connection

func (*Connection) Equals added in v0.9.0

func (c *Connection) Equals(other *Connection) bool

func (*Connection) PopulateChildren added in v0.7.0

func (c *Connection) PopulateChildren(connectionMap map[string]*Connection)

func (*Connection) SetOptions added in v0.5.0

func (c *Connection) SetOptions(opts options.Options, block *hcl.Block) hcl.Diagnostics

SetOptions sets the options on the connection verify the options object is a valid options type (only options.Connection currently supported)

func (*Connection) String added in v0.5.0

func (c *Connection) String() string

func (*Connection) Validate added in v0.7.0

func (c *Connection) Validate(connectionMap map[string]*Connection) []string

Validate verifies the Type property is valid, if this is an aggregator connection, there must be at least one child, and no duplicates if this is NOT an aggregator, there must be no children

func (*Connection) ValidateAggregatorConnection added in v0.7.0

func (c *Connection) ValidateAggregatorConnection(connectionMap map[string]*Connection) []string

type Control added in v0.5.0

type Control struct {
	ShortName        string
	FullName         string            `cty:"name"`
	Description      *string           `cty:"description" column:"description,text"`
	Documentation    *string           `cty:"documentation"  column:"documentation,text"`
	SearchPath       *string           `cty:"search_path"  column:"search_path,text"`
	SearchPathPrefix *string           `cty:"search_path_prefix"  column:"search_path_prefix,text"`
	Severity         *string           `cty:"severity"  column:"severity,text"`
	SQL              *string           `cty:"sql"  column:"sql,text"`
	Tags             map[string]string `cty:"tags"  column:"tags,jsonb"`
	Title            *string           `cty:"title"  column:"title,text"`
	Query            *Query
	// args
	// arguments may be specified by either a map of named args or as a list of positional args
	// we apply special decode logic to convert the params block into a QueryArgs object
	// with either an args map or list assigned
	Args   *QueryArgs  `cty:"args" column:"args,jsonb"`
	Params []*ParamDef `cty:"params" column:"params,jsonb"`

	// list of all blocks referenced by the resource
	References []*ResourceReference
	Mod        *Mod `cty:"mod"`
	DeclRange  hcl.Range

	PreparedStatementName string `column:"prepared_statement_name,text"`
	UnqualifiedName       string
	// contains filtered or unexported fields
}

Control is a struct representing the Control resource

func NewControl added in v0.5.0

func NewControl(block *hcl.Block) *Control

func (*Control) AddChild added in v0.5.0

func (c *Control) AddChild(child ModTreeItem) error

AddChild implements ModTreeItem - controls cannot have children so just return error

func (*Control) AddParent added in v0.5.0

func (c *Control) AddParent(parent ModTreeItem) error

AddParent implements ModTreeItem

func (*Control) AddReference added in v0.5.0

func (c *Control) AddReference(ref *ResourceReference)

AddReference implements HclResource

func (*Control) CtyValue added in v0.5.0

func (c *Control) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Control) Equals added in v0.8.0

func (c *Control) Equals(other *Control) bool

func (*Control) GetChildren added in v0.5.0

func (c *Control) GetChildren() []ModTreeItem

GetChildren implements ModTreeItem

func (*Control) GetDeclRange added in v0.9.0

func (c *Control) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Control) GetDescription added in v0.5.0

func (c *Control) GetDescription() string

GetDescription implements ModTreeItem

func (*Control) GetMetadata added in v0.5.0

func (c *Control) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Control) GetMod added in v0.9.0

func (c *Control) GetMod() *Mod

GetMod implements HclResource

func (*Control) GetParams added in v0.8.0

func (c *Control) GetParams() []*ParamDef

GetParams implements QueryProvider

func (*Control) GetParentNames added in v0.5.0

func (c *Control) GetParentNames() []string

func (*Control) GetParents added in v0.5.0

func (c *Control) GetParents() []ModTreeItem

GetParents implements ModTreeItem

func (*Control) GetPaths added in v0.7.1

func (c *Control) GetPaths() []NodePath

GetPaths implements ModTreeItem

func (*Control) GetPreparedStatementName added in v0.9.0

func (c *Control) GetPreparedStatementName() string

GetPreparedStatementName implements QueryProvider

func (*Control) GetTags added in v0.5.0

func (c *Control) GetTags() map[string]string

GetTags implements ModTreeItem

func (*Control) GetTitle added in v0.5.0

func (c *Control) GetTitle() string

GetTitle implements ModTreeItem

func (*Control) ModName added in v0.8.0

func (c *Control) ModName() string

ModName implements QueryProvider

func (*Control) Name added in v0.5.0

func (c *Control) Name() string

Name implements ModTreeItem, HclResource return name in format: 'control.<shortName>'

func (*Control) OnDecoded added in v0.5.0

func (c *Control) OnDecoded(*hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Control) QualifiedNameWithVersion added in v0.11.0

func (q *Control) QualifiedNameWithVersion() string

QualifiedNameWithVersion returns the name in format: '<modName>@version.control.<shortName>'

func (*Control) SetMetadata added in v0.5.0

func (c *Control) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Control) SetMod added in v0.8.0

func (c *Control) SetMod(mod *Mod)

SetMod implements HclResource

func (*Control) String added in v0.5.0

func (c *Control) String() string

type HclResource added in v0.5.0

type HclResource interface {
	Name() string
	CtyValue() (cty.Value, error)
	OnDecoded(*hcl.Block) hcl.Diagnostics
	AddReference(ref *ResourceReference)
	SetMod(*Mod)
	GetMod() *Mod
	GetDeclRange() *hcl.Range
}

HclResource must be implemented by resources defined in HCL

type Local added in v0.5.0

type Local struct {
	ShortName string
	FullName  string `cty:"name"`

	Value     cty.Value
	DeclRange hcl.Range
	Mod       *Mod `cty:"mod"`
	// contains filtered or unexported fields
}

Local is a struct representing a Local resource

func NewLocal added in v0.5.0

func NewLocal(name string, val cty.Value, declRange hcl.Range) *Local

func (*Local) AddReference added in v0.5.0

func (l *Local) AddReference(*ResourceReference)

AddReference implements HclResource

func (*Local) CtyValue added in v0.5.0

func (l *Local) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Local) GetDeclRange added in v0.9.0

func (l *Local) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Local) GetMetadata added in v0.5.0

func (l *Local) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Local) GetMod added in v0.9.0

func (l *Local) GetMod() *Mod

GetMod implements HclResource

func (*Local) Name added in v0.5.0

func (l *Local) Name() string

Name implements HclResource, ResourceWithMetadata

func (*Local) OnDecoded added in v0.5.0

func (l *Local) OnDecoded(*hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Local) SetMetadata added in v0.5.0

func (l *Local) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Local) SetMod added in v0.8.0

func (l *Local) SetMod(mod *Mod)

SetMod implements HclResource

type MappableResource

type MappableResource interface {
	// InitialiseFromFile creates a mappable resource from a file path
	// It returns the resource, and the raw file data
	InitialiseFromFile(modPath, filePath string) (MappableResource, []byte, error)
	Name() string
	SetMod(*Mod)
	GetMetadata() *ResourceMetadata
	SetMetadata(*ResourceMetadata)
}

MappableResource must be implemented by resources which can be created directly from a content file (e.g. sql, markdown)

func PanelFromFile added in v0.7.1

func PanelFromFile(modPath, filePath string) (MappableResource, []byte, error)

PanelFromFile :: factory function

func QueryFromFile

func QueryFromFile(modPath, filePath string) (MappableResource, []byte, error)

QueryFromFile :: factory function

type MissingVariableError added in v0.8.0

type MissingVariableError struct {
	MissingVariables []*Variable
}

func (MissingVariableError) Error added in v0.8.0

func (m MissingVariableError) Error() string

type Mod

type Mod struct {
	// ShortName is the mod name, e.g. azure_thrifty
	ShortName string `cty:"short_name" hcl:"name,label"`
	// FullName is the mod name prefixed with 'mod', e.g. mod.azure_thrifty
	FullName string `cty:"name"`
	// ModDependencyPath is the fully qualified mod name, which can be used to 'require'  the mod,
	// e.g. github.com/turbot/steampipe-mod-azure-thrifty
	// This is only set if the mod is installed as a dependency
	ModDependencyPath string `cty:"mod_dependency_path"`

	// attributes
	Categories    []string          `cty:"categories" hcl:"categories,optional" column:"categories,jsonb"`
	Color         *string           `cty:"color" hcl:"color" column:"color,text"`
	Description   *string           `cty:"description" hcl:"description" column:"description,text"`
	Documentation *string           `cty:"documentation" hcl:"documentation" column:"documentation,text"`
	Icon          *string           `cty:"icon" hcl:"icon" column:"icon,text"`
	Tags          map[string]string `cty:"tags" hcl:"tags,optional" column:"tags,jsonb"`
	Title         *string           `cty:"title" hcl:"title" column:"title,text"`

	// list of all blocks referenced by the resource
	References []*ResourceReference

	// blocks
	Require       *Require   `hcl:"require,block"`
	LegacyRequire *Require   `hcl:"requires,block"`
	OpenGraph     *OpenGraph `hcl:"opengraph,block" column:"open_graph,jsonb"`

	VersionString string `cty:"version"`
	Version       *semver.Version

	Queries    map[string]*Query
	Controls   map[string]*Control
	Benchmarks map[string]*Benchmark
	Reports    map[string]*Report
	Panels     map[string]*Panel
	Variables  map[string]*Variable
	Locals     map[string]*Local

	// ModPath is the installation location of the mod
	ModPath   string
	DeclRange hcl.Range
	// contains filtered or unexported fields
}

Mod is a struct representing a Mod resource

func CreateDefaultMod added in v0.5.0

func CreateDefaultMod(modPath string) *Mod

CreateDefaultMod creates a default mod created for a workspace with no mod definition

func NewMod added in v0.5.0

func NewMod(shortName, modPath string, defRange hcl.Range) *Mod

func (*Mod) AddChild added in v0.5.0

func (m *Mod) AddChild(child ModTreeItem) error

AddChild implements ModTreeItem

func (*Mod) AddModDependencies added in v0.11.0

func (m *Mod) AddModDependencies(modVersions map[string]*ModVersionConstraint)

func (*Mod) AddParent added in v0.5.0

func (m *Mod) AddParent(ModTreeItem) error

AddParent implements ModTreeItem

func (*Mod) AddPseudoResource added in v0.5.0

func (m *Mod) AddPseudoResource(resource MappableResource)

AddPseudoResource adds the pseudo resource to the mod, as long as there is no existing resource of same name

A pseudo resource ids a resource created by loading a content file (e.g. a SQL file), rather than parsing a HCL definition

func (*Mod) AddReference added in v0.5.0

func (m *Mod) AddReference(ref *ResourceReference)

AddReference implements HclResource

func (*Mod) AddResource added in v0.5.0

func (m *Mod) AddResource(item HclResource) hcl.Diagnostics

func (*Mod) BuildResourceTree added in v0.7.1

func (m *Mod) BuildResourceTree(loadedDependencyMods ModMap) error

BuildResourceTree builds the control tree structure by setting the parent property for each control and benchmar NOTE: this also builds the sorted benchmark list

func (*Mod) CtyValue added in v0.5.0

func (m *Mod) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Mod) Equals added in v0.8.0

func (m *Mod) Equals(other *Mod) bool

func (*Mod) GetChildControls added in v0.5.0

func (m *Mod) GetChildControls() []*Control

GetChildControls return a flat list of controls underneath the mod

func (*Mod) GetChildren added in v0.5.0

func (m *Mod) GetChildren() []ModTreeItem

GetChildren implements ModTreeItem

func (*Mod) GetDeclRange added in v0.9.0

func (m *Mod) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Mod) GetDescription added in v0.5.0

func (m *Mod) GetDescription() string

GetDescription implements ModTreeItem

func (*Mod) GetMetadata added in v0.5.0

func (m *Mod) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Mod) GetMod added in v0.9.0

func (m *Mod) GetMod() *Mod

GetMod implements HclResource

func (*Mod) GetModDependency added in v0.11.0

func (m *Mod) GetModDependency(modName string) *ModVersionConstraint

func (*Mod) GetModDependencyPath added in v0.11.0

func (m *Mod) GetModDependencyPath() string

GetModDependencyPath ModDependencyPath if it is set. If not it returns NameWithVersion()

func (*Mod) GetParents added in v0.5.0

func (m *Mod) GetParents() []ModTreeItem

GetParents implements ModTreeItem

func (*Mod) GetPaths added in v0.7.1

func (m *Mod) GetPaths() []NodePath

GetPaths implements ModTreeItem

func (*Mod) GetTags added in v0.5.0

func (m *Mod) GetTags() map[string]string

GetTags implements ModTreeItem

func (*Mod) GetTitle added in v0.5.0

func (m *Mod) GetTitle() string

GetTitle implements ModTreeItem

func (*Mod) HasDependentMods added in v0.11.0

func (m *Mod) HasDependentMods() bool

func (*Mod) IsDefaultMod added in v0.5.0

func (m *Mod) IsDefaultMod() bool

IsDefaultMod returns whether this mod is a default mod created for a workspace with no mod definition

func (*Mod) Name

func (m *Mod) Name() string

Name implements ModTreeItem, HclResource

func (*Mod) NameWithVersion added in v0.11.0

func (m *Mod) NameWithVersion() string

func (*Mod) OnDecoded added in v0.5.0

func (m *Mod) OnDecoded(block *hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Mod) RemoveAllModDependencies added in v0.11.0

func (m *Mod) RemoveAllModDependencies()

func (*Mod) RemoveModDependencies added in v0.11.0

func (m *Mod) RemoveModDependencies(modVersions map[string]*ModVersionConstraint)

func (*Mod) Save added in v0.11.0

func (m *Mod) Save() error

func (*Mod) SetMetadata added in v0.5.0

func (m *Mod) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Mod) SetMod added in v0.8.0

func (m *Mod) SetMod(*Mod)

SetMod implements HclResource

func (*Mod) String

func (m *Mod) String() string

type ModMap

type ModMap map[string]*Mod

ModMap is a map of mod name to mod

func (ModMap) String

func (m ModMap) String() string

type ModTreeItem added in v0.7.1

type ModTreeItem interface {
	AddParent(ModTreeItem) error
	AddChild(child ModTreeItem) error
	GetChildren() []ModTreeItem
	Name() string
	GetTitle() string
	GetDescription() string
	GetTags() map[string]string
	// GetPaths returns an array resource paths
	GetPaths() []NodePath
	GetMod() *Mod
}

ModTreeItem must be implemented by elements of the mod resource hierarchy i.e. Control, Benchmark, Report, Panel

type ModVersionConstraint added in v0.11.0

type ModVersionConstraint struct {
	// the fully qualified mod name, e.g. github.com/turbot/mod1
	Name          string `cty:"name" hcl:"name,label"`
	VersionString string `cty:"version" hcl:"version"`
	// only one of Constraint, Branch and FilePath will be set
	Constraint *versionhelpers.Constraints
	// // NOTE: aliases will be supported in the future
	//Alias string `cty:"alias" hcl:"alias"`
	// the branch to use
	Branch string
	// the local file location to use
	FilePath  string
	DeclRange hcl.Range
}

func NewModVersionConstraint added in v0.11.0

func NewModVersionConstraint(modFullName string) (*ModVersionConstraint, error)

func (*ModVersionConstraint) Equals added in v0.11.0

func (*ModVersionConstraint) FullName added in v0.11.0

func (m *ModVersionConstraint) FullName() string

func (*ModVersionConstraint) HasVersion added in v0.11.0

func (m *ModVersionConstraint) HasVersion() bool

HasVersion returns whether the mod has a version specified, or is the latest if no version is specified, or the version is "latest", this is the latest version

func (*ModVersionConstraint) Initialise added in v0.11.0

func (m *ModVersionConstraint) Initialise() hcl.Diagnostics

Initialise parses the version and name properties

func (*ModVersionConstraint) String added in v0.11.0

func (m *ModVersionConstraint) String() string

type ModVersionConstraintCollection added in v0.11.0

type ModVersionConstraintCollection []*ModVersionConstraint

ModVersionConstraintCollection is a collection of ModVersionConstraint instances and implements the sort interface. See the sort package for more details. https://golang.org/pkg/sort/

func (ModVersionConstraintCollection) Len added in v0.11.0

Len returns the length of a collection. The number of Version instances on the slice.

func (ModVersionConstraintCollection) Less added in v0.11.0

Less is needed for the sort interface to compare two Version objects on the slice. If checks if one is less than the other.

func (ModVersionConstraintCollection) Swap added in v0.11.0

func (c ModVersionConstraintCollection) Swap(i, j int)

Swap is needed for the sort interface to replace the Version objects at two different positions in the slice.

type NamedItem added in v0.5.0

type NamedItem struct {
	Name string `cty:"name"`
}

func (NamedItem) String added in v0.5.0

func (c NamedItem) String() string

type NodePath added in v0.7.1

type NodePath []string

NodePath is a string array representing the parentage of a ModTreeItem

type OpenGraph added in v0.5.0

type OpenGraph struct {
	// The opengraph description (og:description) of the mod, for use in social media applications
	Description *string `cty:"description" hcl:"description" json:"description"`
	// The opengraph display title (og:title) of the mod, for use in social media applications.
	Title     *string   `cty:"title" hcl:"title" json:"title"`
	Image     *string   `cty:"image" hcl:"image" json:"image"`
	DeclRange hcl.Range `json:"-"`
}

OpenGraph is a struct representing the OpenGraph group mod resource

type Panel added in v0.7.1

type Panel struct {
	FullName  string `cty:"name"`
	ShortName string

	Title   *string `hcl:"title"`
	Type    *string `hcl:"type"`
	Width   *int    `hcl:"width"`
	Height  *int    `hcl:"height"`
	Source  *string `hcl:"source"`
	SQL     *string `hcl:"source"`
	Text    *string `hcl:"text"`
	Reports []*Report
	Panels  []*Panel

	DeclRange hcl.Range
	Mod       *Mod `cty:"mod"`

	UnqualifiedName string
	// contains filtered or unexported fields
}

Panel is a struct representing the Report resource

func NewPanel added in v0.7.1

func NewPanel(block *hcl.Block) *Panel

func (*Panel) AddChild added in v0.7.1

func (p *Panel) AddChild(child ModTreeItem) error

AddChild implements ModTreeItem

func (*Panel) AddParent added in v0.7.1

func (p *Panel) AddParent(parent ModTreeItem) error

AddParent implements ModTreeItem

func (*Panel) AddReference added in v0.7.1

func (p *Panel) AddReference(*ResourceReference)

AddReference implements HclResource

func (*Panel) CtyValue added in v0.7.1

func (p *Panel) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Panel) Diff added in v0.7.1

func (p *Panel) Diff(new *Panel) *ReportTreeItemDiffs

func (*Panel) GetChildren added in v0.7.1

func (p *Panel) GetChildren() []ModTreeItem

GetChildren implements ModTreeItem

func (*Panel) GetDeclRange added in v0.9.0

func (p *Panel) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Panel) GetDescription added in v0.7.1

func (p *Panel) GetDescription() string

GetDescription implements ModTreeItem

func (*Panel) GetMetadata added in v0.7.1

func (p *Panel) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Panel) GetMod added in v0.9.0

func (p *Panel) GetMod() *Mod

GetMod implements HclResource

func (*Panel) GetParents added in v0.7.1

func (p *Panel) GetParents() []ModTreeItem

GetParents implements ModTreeItem

func (*Panel) GetPaths added in v0.7.1

func (p *Panel) GetPaths() []NodePath

GetPaths implements ModTreeItem

func (*Panel) GetTags added in v0.7.1

func (p *Panel) GetTags() map[string]string

GetTags implements ModTreeItem

func (*Panel) GetTitle added in v0.7.1

func (p *Panel) GetTitle() string

GetTitle implements ModTreeItem

func (*Panel) InitialiseFromFile added in v0.7.1

func (p *Panel) InitialiseFromFile(modPath, filePath string) (MappableResource, []byte, error)

InitialiseFromFile implements MappableResource

func (*Panel) Name added in v0.7.1

func (p *Panel) Name() string

Name implements HclResource return name in format: 'panel.<shortName>'

func (*Panel) OnDecoded added in v0.7.1

func (p *Panel) OnDecoded(*hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Panel) SetMetadata added in v0.7.1

func (p *Panel) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Panel) SetMod added in v0.8.0

func (p *Panel) SetMod(mod *Mod)

SetMod implements HclResource

type ParamDef added in v0.8.0

type ParamDef struct {
	Name        string      `cty:"name" json:"name"`
	FullName    string      `cty:"full_name" json:"-"`
	Description *string     `cty:"description" json:"description"`
	RawDefault  interface{} `json:"-"`
	Default     *string     `cty:"default" json:"default"`

	// list of all blocks referenced by the resource
	References []*ResourceReference
	DeclRange  hcl.Range
	// contains filtered or unexported fields
}

func NewParamDef added in v0.8.0

func NewParamDef(block *hcl.Block, parent string) *ParamDef

func (ParamDef) Equals added in v0.8.0

func (p ParamDef) Equals(other *ParamDef) bool

func (ParamDef) String added in v0.8.0

func (p ParamDef) String() string

type ParsedPropertyPath added in v0.5.0

type ParsedPropertyPath struct {
	Mod          string
	ItemType     string
	Name         string
	PropertyPath []string
}

func ParseResourcePropertyPath added in v0.5.0

func ParseResourcePropertyPath(propertyPath string) (res *ParsedPropertyPath, err error)

type ParsedResourceName added in v0.5.0

type ParsedResourceName struct {
	Mod      string
	ItemType string
	Name     string
}

func ParseResourceName added in v0.5.0

func ParseResourceName(fullName string) (res *ParsedResourceName, err error)

type PluginVersion added in v0.5.0

type PluginVersion struct {
	// the plugin name, as specified in the mod requires block. , e.g. turbot/mod1, aws
	RawName string `cty:"name" hcl:"name,label"`
	// the version STREAM, can be either a major or minor version stream i.e. 1 or 1.1
	VersionString string `cty:"version" hcl:"version,optional"`
	Version       *semver.Version
	// the org and name which are parsed from the raw name
	Org       string
	Name      string
	DeclRange hcl.Range `json:"-"`
}

func (*PluginVersion) FullName added in v0.5.0

func (p *PluginVersion) FullName() string

func (*PluginVersion) Initialise added in v0.9.0

func (p *PluginVersion) Initialise() hcl.Diagnostics

Initialise parses the version and name properties

func (*PluginVersion) ShortName added in v0.6.0

func (p *PluginVersion) ShortName() string

func (*PluginVersion) String added in v0.5.0

func (p *PluginVersion) String() string

type Query

type Query struct {
	ShortName string `cty:"short_name"`
	FullName  string `cty:"name"`

	Description      *string            `cty:"description" column:"description,text"`
	Documentation    *string            `cty:"documentation"  column:"documentation,text"`
	SearchPath       *string            `cty:"search_path"column:"search_path,text"`
	SearchPathPrefix *string            `cty:"search_path_prefix" column:"search_path_prefix,text"`
	SQL              *string            `cty:"sql" hcl:"sql" column:"sql,text"`
	Tags             *map[string]string `cty:"tags" hcl:"tags" column:"tags,jsonb"`
	Title            *string            `cty:"title" hcl:"title" column:"title,text"`

	Params []*ParamDef `cty:"params" column:"params,jsonb"`
	// list of all blocks referenced by the resource
	References []*ResourceReference

	Mod                   *Mod `cty:"mod"`
	DeclRange             hcl.Range
	PreparedStatementName string `column:"prepared_statement_name,text"`

	UnqualifiedName string
	// contains filtered or unexported fields
}

Query is a struct representing the Query resource

func NewQuery added in v0.5.0

func NewQuery(block *hcl.Block) *Query

func (*Query) AddReference added in v0.5.0

func (q *Query) AddReference(ref *ResourceReference)

AddReference implements HclResource

func (*Query) CtyValue added in v0.5.0

func (q *Query) CtyValue() (cty.Value, error)

func (*Query) Equals

func (q *Query) Equals(other *Query) bool

func (*Query) GetDeclRange added in v0.9.0

func (q *Query) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Query) GetMetadata added in v0.5.0

func (q *Query) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Query) GetMod added in v0.9.0

func (q *Query) GetMod() *Mod

GetMod implements HclResource

func (*Query) GetParams added in v0.8.0

func (q *Query) GetParams() []*ParamDef

GetParams implements QueryProvider

func (*Query) GetPreparedStatementName added in v0.9.0

func (q *Query) GetPreparedStatementName() string

GetPreparedStatementName implements QueryProvider

func (*Query) InitialiseFromFile

func (q *Query) InitialiseFromFile(modPath, filePath string) (MappableResource, []byte, error)

InitialiseFromFile implements MappableResource

func (*Query) ModName added in v0.8.0

func (q *Query) ModName() string

ModName implements QueryProvider

func (*Query) Name

func (q *Query) Name() string

Name implements MappableResource, HclResource

func (*Query) OnDecoded added in v0.5.0

func (q *Query) OnDecoded(*hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Query) SetMetadata added in v0.5.0

func (q *Query) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Query) SetMod added in v0.8.0

func (q *Query) SetMod(mod *Mod)

SetMod implements HclResource

func (*Query) String

func (q *Query) String() string

type QueryArgs added in v0.8.0

type QueryArgs struct {
	Args       map[string]string    `cty:"args" json:"args"`
	ArgsList   []string             `cty:"args_list" json:"args_list"`
	References []*ResourceReference `cty:"refs" json:"refs"`
}

QueryArgs is a struct which contains the arguments used to invoke a prepared statement these may either be passed by name, in a map, or as a list of positional args NOTE: if both are present the named parameters are used

func NewQueryArgs added in v0.8.0

func NewQueryArgs() *QueryArgs

func (*QueryArgs) Empty added in v0.8.0

func (q *QueryArgs) Empty() bool

func (*QueryArgs) Equals added in v0.8.0

func (q *QueryArgs) Equals(other *QueryArgs) bool

func (*QueryArgs) ResolveAsString added in v0.8.0

func (q *QueryArgs) ResolveAsString(source QueryProvider) (string, error)

ResolveAsString resolves the argument values, falling back on defaults from param definitions in the source (if present) it returns the arg values as a csv string which can be used in a prepared statement invocation (the arg values and param defaults will already have been converted to postgres format)

func (*QueryArgs) String added in v0.8.0

func (q *QueryArgs) String() string

type QueryProvider added in v0.11.0

type QueryProvider interface {
	Name() string
	ModName() string
	GetParams() []*ParamDef
	GetPreparedStatementName() string
}

QueryProvider must be implemented by resources which supports prepared statements, i.e. Control and Query

type Report added in v0.7.1

type Report struct {
	FullName  string `cty:"name"`
	ShortName string
	Title     *string

	Reports []*Report //`hcl:"report,block"`
	Panels  []*Panel  //`hcl:"panel,block"`

	Mod *Mod `cty:"mod"`

	DeclRange hcl.Range

	UnqualifiedName string
	// contains filtered or unexported fields
}

Report is a struct representing the Report resource

func NewReport added in v0.7.1

func NewReport(block *hcl.Block) *Report

func (*Report) AddChild added in v0.7.1

func (r *Report) AddChild(child ModTreeItem) error

AddChild implements ModTreeItem

func (*Report) AddParent added in v0.7.1

func (r *Report) AddParent(parent ModTreeItem) error

AddParent implements ModTreeItem

func (*Report) AddReference added in v0.7.1

func (r *Report) AddReference(*ResourceReference)

AddReference implements HclResource

func (*Report) CtyValue added in v0.7.1

func (r *Report) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Report) Diff added in v0.7.1

func (r *Report) Diff(new *Report) *ReportTreeItemDiffs

func (*Report) GetChildren added in v0.7.1

func (r *Report) GetChildren() []ModTreeItem

GetChildren implements ModTreeItem

func (*Report) GetDeclRange added in v0.9.0

func (r *Report) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Report) GetDescription added in v0.7.1

func (r *Report) GetDescription() string

GetDescription implements ModTreeItem

func (*Report) GetMetadata added in v0.7.1

func (r *Report) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Report) GetMod added in v0.9.0

func (r *Report) GetMod() *Mod

GetMod implements HclResource

func (*Report) GetParents added in v0.7.1

func (r *Report) GetParents() []ModTreeItem

GetParents implements ModTreeItem

func (*Report) GetPaths added in v0.7.1

func (r *Report) GetPaths() []NodePath

GetPaths implements ModTreeItem

func (*Report) GetTags added in v0.7.1

func (r *Report) GetTags() map[string]string

GetTags implements ModTreeItem

func (*Report) GetTitle added in v0.7.1

func (r *Report) GetTitle() string

GetTitle implements ModTreeItem

func (*Report) Name added in v0.7.1

func (r *Report) Name() string

Name implements HclResource, ModTreeItem return name in format: 'report.<shortName>'

func (*Report) OnDecoded added in v0.7.1

func (r *Report) OnDecoded(*hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Report) SetMetadata added in v0.7.1

func (r *Report) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Report) SetMod added in v0.8.0

func (r *Report) SetMod(mod *Mod)

SetMod implements HclResource

type ReportTreeItemDiffs added in v0.7.1

type ReportTreeItemDiffs struct {
	Name              string
	Item              ModTreeItem
	ChangedProperties []string
	AddedItems        []string
	RemovedItems      []string
}

ReportTreeItemDiffs is a struct representing the differences between 2 ReportTreeItems (of same type)

func (*ReportTreeItemDiffs) AddAddedItem added in v0.7.1

func (d *ReportTreeItemDiffs) AddAddedItem(name string)

func (*ReportTreeItemDiffs) AddPropertyDiff added in v0.7.1

func (d *ReportTreeItemDiffs) AddPropertyDiff(propertyName string)

func (*ReportTreeItemDiffs) AddRemovedItem added in v0.7.1

func (d *ReportTreeItemDiffs) AddRemovedItem(name string)

func (*ReportTreeItemDiffs) HasChanges added in v0.7.1

func (d *ReportTreeItemDiffs) HasChanges() bool

type Require added in v0.11.0

type Require struct {
	SteampipeVersionString string `hcl:"steampipe,optional"`
	SteampipeVersion       *semver.Version
	Plugins                []*PluginVersion        `hcl:"plugin,block"`
	Mods                   []*ModVersionConstraint `hcl:"mod,block"`
	DeclRange              hcl.Range               `json:"-"`
	// contains filtered or unexported fields
}

Require is a struct representing mod dependencies

func (*Require) AddModDependencies added in v0.11.0

func (r *Require) AddModDependencies(newModVersions map[string]*ModVersionConstraint)

AddModDependencies adds all the mod in newModVersions to our list of mods, using the following logic - if a mod with same name, [alias] and constraint exists, it is not added - if a mod with same name [and alias] and different constraint exist, it is replaced

func (*Require) ContainsMod added in v0.11.0

func (r *Require) ContainsMod(requiredModVersion *ModVersionConstraint) bool

func (*Require) Empty added in v0.11.0

func (r *Require) Empty() bool

func (*Require) GetModDependency added in v0.11.0

func (r *Require) GetModDependency(name string) *ModVersionConstraint

func (*Require) RemoveAllModDependencies added in v0.11.0

func (r *Require) RemoveAllModDependencies()

func (*Require) RemoveModDependencies added in v0.11.0

func (r *Require) RemoveModDependencies(versions map[string]*ModVersionConstraint)

func (*Require) ValidateSteampipeVersion added in v0.11.0

func (r *Require) ValidateSteampipeVersion(modName string) error

type ResourceMetadata added in v0.5.0

type ResourceMetadata struct {
	ResourceName string `column:"resource_name,text"`
	// mod short name
	ModName          string `column:"mod_name,text"`
	FileName         string `column:"file_name,text"`
	StartLineNumber  int    `column:"start_line_number,integer"`
	EndLineNumber    int    `column:"end_line_number,integer"`
	IsAutoGenerated  bool   `column:"auto_generated,bool"`
	SourceDefinition string `column:"source_definition,text"`
	ModFullName      string
}

ResourceMetadata ius a struct containing additional data about each resource, used to populate the introspection tables

func (*ResourceMetadata) SetMod added in v0.5.0

func (m *ResourceMetadata) SetMod(mod *Mod)

SetMod sets the mod name and mod short name

type ResourceReference added in v0.9.0

type ResourceReference struct {
	To        string `cty:"reference_to" column:"reference_to,text"`
	From      string `cty:"reference_from" column:"reference_from,text"`
	BlockType string `cty:"from_block_type" column:"from_block_type,text"`
	BlockName string `cty:"from_block_name" column:"from_block_name,text"`
	Attribute string `cty:"from_attribute" column:"from_attribute,text"`
	// contains filtered or unexported fields
}

func (*ResourceReference) Equals added in v0.9.0

func (r *ResourceReference) Equals(other *ResourceReference) bool

func (*ResourceReference) GetMetadata added in v0.9.0

func (r *ResourceReference) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*ResourceReference) Name added in v0.9.0

func (r *ResourceReference) Name() string

Name implements ResourceWithMetadata the name must start with the 'resource type' as we parse it and use just the 'name' segment

func (*ResourceReference) SetMetadata added in v0.9.0

func (r *ResourceReference) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*ResourceReference) String added in v0.9.0

func (r *ResourceReference) String() string

type ResourceReferenceMap added in v0.9.0

type ResourceReferenceMap map[string][]*ResourceReference

ResourceReferenceMap is a map of references keyed by 'ref' This is to handle the same reference being made more than once by a resource for example the reference var.v1 might be referenced several times

func (ResourceReferenceMap) Add added in v0.9.0

func (m ResourceReferenceMap) Add(reference *ResourceReference)

type ResourceWithMetadata added in v0.5.0

type ResourceWithMetadata interface {
	Name() string
	GetMetadata() *ResourceMetadata
	SetMetadata(metadata *ResourceMetadata)
}

ResourceWithMetadata must be implenented by resources which supports reflection metadata

type Variable added in v0.8.0

type Variable struct {
	ShortName string
	FullName  string `column:"name,text"`

	Description    string    `column:"description,text"`
	Default        cty.Value `column:"default_value,jsonb"`
	Type           cty.Type  `column:"var_type,text"`
	DescriptionSet bool

	// set after value resolution `column:"value,jsonb"`
	Value                      cty.Value `column:"value,jsonb"`
	ValueSourceType            string    `column:"value_source,text"`
	ValueSourceFileName        string    `column:"value_source_file_name,text"`
	ValueSourceStartLineNumber int       `column:"value_source_start_line_number,integer"`
	ValueSourceEndLineNumber   int       `column:"value_source_end_line_number,integer"`
	DeclRange                  hcl.Range
	ParsingMode                var_config.VariableParsingMode
	Mod                        *Mod

	UnqualifiedName string
	// contains filtered or unexported fields
}

Variable is a struct representing a Variable resource

func NewVariable added in v0.8.0

func NewVariable(v *var_config.Variable) *Variable

func (*Variable) AddReference added in v0.8.0

func (v *Variable) AddReference(*ResourceReference)

AddReference implements HclResource

func (*Variable) CtyValue added in v0.8.0

func (v *Variable) CtyValue() (cty.Value, error)

CtyValue implements HclResource

func (*Variable) Equals added in v0.9.0

func (v *Variable) Equals(other *Variable) bool

func (*Variable) GetDeclRange added in v0.9.0

func (v *Variable) GetDeclRange() *hcl.Range

GetDeclRange implements HclResource

func (*Variable) GetMetadata added in v0.8.0

func (v *Variable) GetMetadata() *ResourceMetadata

GetMetadata implements ResourceWithMetadata

func (*Variable) GetMod added in v0.9.0

func (v *Variable) GetMod() *Mod

GetMod implements HclResource

func (*Variable) Name added in v0.8.0

func (v *Variable) Name() string

Name implements HclResource, ResourceWithMetadata

func (*Variable) OnDecoded added in v0.8.0

func (v *Variable) OnDecoded(*hcl.Block) hcl.Diagnostics

OnDecoded implements HclResource

func (*Variable) Required added in v0.8.0

func (v *Variable) Required() bool

Required returns true if this variable is required to be set by the caller, or false if there is a default value that will be used when it isn't set.

func (*Variable) SetInputValue added in v0.9.0

func (v *Variable) SetInputValue(value cty.Value, sourceType string, sourceRange tfdiags.SourceRange)

func (*Variable) SetMetadata added in v0.8.0

func (v *Variable) SetMetadata(metadata *ResourceMetadata)

SetMetadata implements ResourceWithMetadata

func (*Variable) SetMod added in v0.8.0

func (v *Variable) SetMod(mod *Mod)

SetMod implements HclResource

type VariableValidationFailedError added in v0.8.0

type VariableValidationFailedError struct {
}

func (VariableValidationFailedError) Error added in v0.8.0

type VersionConstrainCollection added in v0.11.0

type VersionConstrainCollection []*ModVersionConstraint

type WorkspaceResourceMaps added in v0.5.0

type WorkspaceResourceMaps struct {
	Mods       map[string]*Mod
	Queries    map[string]*Query
	Controls   map[string]*Control
	Benchmarks map[string]*Benchmark
	Variables  map[string]*Variable
	References map[string]*ResourceReference
}

WorkspaceResourceMaps is a struct containing maps of all mod resource types This is provided to avoid db needing to reference workspace package

func NewWorkspaceResourceMaps added in v0.8.0

func NewWorkspaceResourceMaps() *WorkspaceResourceMaps

func (*WorkspaceResourceMaps) AddQueryProvider added in v0.11.0

func (m *WorkspaceResourceMaps) AddQueryProvider(provider QueryProvider)

func (*WorkspaceResourceMaps) Empty added in v0.10.0

func (m *WorkspaceResourceMaps) Empty() bool

func (*WorkspaceResourceMaps) Equals added in v0.8.0

func (*WorkspaceResourceMaps) PopulateReferences added in v0.9.0

func (m *WorkspaceResourceMaps) PopulateReferences()

type WorkspaceResources added in v0.8.0

type WorkspaceResources struct {
	Query     map[string]bool
	Control   map[string]bool
	Benchmark map[string]bool
}

func NewWorkspaceResources added in v0.8.0

func NewWorkspaceResources() *WorkspaceResources

func (*WorkspaceResources) GetSortedBenchmarksAndControlNames added in v0.8.0

func (w *WorkspaceResources) GetSortedBenchmarksAndControlNames() []string

GetSortedBenchmarksAndControlNames gives back a list of the benchmarks and controls in the current workspace. The list is sorted alphabetically - with the benchmarks first

func (*WorkspaceResources) GetSortedNamedQueryNames added in v0.8.0

func (w *WorkspaceResources) GetSortedNamedQueryNames() []string

func (*WorkspaceResources) Merge added in v0.8.0

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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