config

package
v0.9.20 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2022 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrorInvalidConfigFile = errors.New("parsing config file failed check file syntax")
	ErrorNilProjects       = errors.New("no projects specified in config file, please specify at least one project, see https://infracost.io/config-file for file specification")
)

Functions

func ConfigurationFilePath added in v0.9.6

func ConfigurationFilePath() string

func CredentialsFilePath added in v0.7.17

func CredentialsFilePath() string

func DetectProjectMetadata added in v0.9.0

func DetectProjectMetadata(path string) *schema.ProjectMetadata

func FileExists added in v0.9.7

func FileExists(path string) bool

func IsDev

func IsDev() bool

func IsEnvPresent added in v0.9.5

func IsEnvPresent(s string) bool

func IsTest

func IsTest() bool

func RootDir

func RootDir() string

Types

type Config

type Config struct {
	Credentials   Credentials
	Configuration Configuration

	Version         string `yaml:"version,omitempty" ignored:"true"`
	LogLevel        string `yaml:"log_level,omitempty" envconfig:"INFRACOST_LOG_LEVEL"`
	NoColor         bool   `yaml:"no_color,omitempty" envconfig:"INFRACOST_NO_COLOR"`
	SkipUpdateCheck bool   `yaml:"skip_update_check,omitempty" envconfig:"INFRACOST_SKIP_UPDATE_CHECK"`
	Parallelism     *int   `envconfig:"INFRACOST_PARALLELISM"`

	APIKey                    string `envconfig:"INFRACOST_API_KEY"`
	PricingAPIEndpoint        string `yaml:"pricing_api_endpoint,omitempty" envconfig:"INFRACOST_PRICING_API_ENDPOINT"`
	DefaultPricingAPIEndpoint string `yaml:"default_pricing_api_endpoint,omitempty" envconfig:"INFRACOST_DEFAULT_PRICING_API_ENDPOINT"`
	DashboardAPIEndpoint      string `yaml:"dashboard_api_endpoint,omitempty" envconfig:"INFRACOST_DASHBOARD_API_ENDPOINT"`
	EnableDashboard           bool   `yaml:"enable_dashboard,omitempty" envconfig:"INFRACOST_ENABLE_DASHBOARD"`
	DisableHCLParsing         bool   `yaml:"disable_hcl_parsing,omitempty" envconfig:"INFRACOST_DISABLE_HCL_PARSING"`

	TLSInsecureSkipVerify *bool  `envconfig:"INFRACOST_TLS_INSECURE_SKIP_VERIFY"`
	TLSCACertFile         string `envconfig:"INFRACOST_TLS_CA_CERT_FILE"`

	Currency string `envconfig:"INFRACOST_CURRENCY"`

	Projects      []*Project `yaml:"projects" ignored:"true"`
	Format        string     `yaml:"format,omitempty" ignored:"true"`
	ShowSkipped   bool       `yaml:"show_skipped,omitempty" ignored:"true"`
	SyncUsageFile bool       `yaml:"sync_usage_file,omitempty" ignored:"true"`
	Fields        []string   `yaml:"fields,omitempty" ignored:"true"`

	NoCache bool `yaml:"fields,omitempty" ignored:"true"`

	SkipErrLine bool

	// for testing
	EventsDisabled       bool
	LogWriter            io.Writer
	LogDisableTimestamps bool
}

func DefaultConfig added in v0.7.17

func DefaultConfig() *Config

func (*Config) ConfigureLogger added in v0.7.17

func (c *Config) ConfigureLogger() error

func (*Config) IsLogging added in v0.7.17

func (c *Config) IsLogging() bool

func (*Config) IsSelfHosted added in v0.9.3

func (c *Config) IsSelfHosted() bool

func (*Config) LoadFromConfigFile added in v0.8.0

func (c *Config) LoadFromConfigFile(path string) error

func (*Config) LoadFromEnv added in v0.7.17

func (c *Config) LoadFromEnv() error

type Configuration added in v0.9.6

type Configuration struct {
	Version               string `yaml:"version"`
	Currency              string `yaml:"currency,omitempty"`
	EnableDashboard       *bool  `yaml:"enable_dashboard,omitempty"`
	DisableHCLParsing     *bool  `yaml:"disable_hcl_parsing,omitempty"`
	TLSInsecureSkipVerify *bool  `yaml:"tls_insecure_skip_verify,omitempty"`
	TLSCACertFile         string `yaml:"tls_ca_cert_file,omitempty"`
}

func (Configuration) Save added in v0.9.6

func (c Configuration) Save() error

type Credentials added in v0.7.17

type Credentials struct {
	Version            string `yaml:"version"`
	APIKey             string `yaml:"api_key,omitempty"`
	PricingAPIEndpoint string `yaml:"pricing_api_endpoint,omitempty"`
}

func (Credentials) Save added in v0.7.17

func (c Credentials) Save() error

type Project added in v0.8.0

type Project struct {
	// Path to the Terraform directory or JSON/plan file.
	// A path can be repeated with different parameters, e.g. for multiple workspaces.
	Path string `yaml:"path,omitempty" ignored:"true"`
	// TerraformParseHCL will run a project by parsing hcl files the given Path rather than using a plan.json or terraform binary.
	TerraformParseHCL bool `yaml:"hcl_only,omitempty"`
	// TerraformVarFiles is the number of var files that are needed to run an TerraformParseHCL run
	TerraformVarFiles []string `yaml:"terraform_var_files"`
	// TerraformVars is a slice of input vars that is used to run an TerraformParseHCL run
	TerraformVars []string `json:"terraform_vars"`
	// TerraformPlanFlags are flags to pass to terraform plan with Terraform directory paths
	TerraformPlanFlags string `yaml:"terraform_plan_flags,omitempty" ignored:"true"`
	// TerraformBinary is an optional field used to change the path to the terraform or terragrunt binary
	TerraformBinary string `yaml:"terraform_binary,omitempty" envconfig:"INFRACOST_TERRAFORM_BINARY"`
	// TerraformWorkspace is an optional field used to set the Terraform workspace
	TerraformWorkspace string `yaml:"terraform_workspace,omitempty" envconfig:"INFRACOST_TERRAFORM_WORKSPACE"`
	// TerraformCloudHost is used to override the default app.terraform.io backend host. Only applicable for
	// terraform cloud/enterprise users.
	TerraformCloudHost string `yaml:"terraform_cloud_host,omitempty" envconfig:"INFRACOST_TERRAFORM_CLOUD_HOST"`
	// TerraformCloudToken sets the Team API Token or User API Token so infracost can use it to access the plan.
	// Only applicable for terraform cloud/enterprise users.
	TerraformCloudToken string `yaml:"terraform_cloud_token,omitempty" envconfig:"INFRACOST_TERRAFORM_CLOUD_TOKEN"`
	// TerragruntFlags set additional flags that should be passed to terragrunt.
	TerragruntFlags string `envconfig:"INFRACOST_TERRAGRUNT_FLAGS"`
	// UsageFile is the full path to usage file that specifies values for usage-based resources
	UsageFile string `yaml:"usage_file,omitempty" ignored:"true"`
	// TerraformUseState sets if the users wants to use the terraform state for infracost ops.
	TerraformUseState bool              `yaml:"terraform_use_state,omitempty" ignored:"true"`
	Env               map[string]string `yaml:"env,omitempty" ignored:"true"`
}

Project defines a specific terraform project config. This can be used specify per folder/project configurations so that users don't have to provide flags every run. Fields are documented below. More info is outlined here: https://www.infracost.io/config-file

type ProjectContext added in v0.9.3

type ProjectContext struct {
	RunContext    *RunContext
	ProjectConfig *Project

	UsingCache bool
	CacheErr   string
	// contains filtered or unexported fields
}

func EmptyProjectContext added in v0.9.3

func EmptyProjectContext() *ProjectContext

func NewProjectContext added in v0.9.3

func NewProjectContext(runCtx *RunContext, projectCfg *Project) *ProjectContext

func (*ProjectContext) ContextValues added in v0.9.3

func (c *ProjectContext) ContextValues() map[string]interface{}

func (*ProjectContext) SetContextValue added in v0.9.3

func (c *ProjectContext) SetContextValue(key string, value interface{})

func (*ProjectContext) SetFrom added in v0.9.15

func (c *ProjectContext) SetFrom(d ProjectContexter)

type ProjectContexter added in v0.9.11

type ProjectContexter interface {
	ProjectContext() map[string]interface{}
}

type RunContext added in v0.9.3

type RunContext struct {
	Config *Config
	State  *State

	StartTime int64

	OutWriter io.Writer
	ErrWriter io.Writer
	Exit      func(code int)
	// contains filtered or unexported fields
}

func EmptyRunContext added in v0.9.3

func EmptyRunContext() *RunContext

func NewRunContextFromEnv added in v0.9.3

func NewRunContextFromEnv(rootCtx context.Context) (*RunContext, error)

func (*RunContext) Context added in v0.9.17

func (r *RunContext) Context() context.Context

Context returns the underlying context.

func (*RunContext) ContextValues added in v0.9.3

func (r *RunContext) ContextValues() map[string]interface{}

func (*RunContext) EventEnv added in v0.9.3

func (r *RunContext) EventEnv() map[string]interface{}

func (*RunContext) EventEnvWithProjectContexts added in v0.9.3

func (r *RunContext) EventEnvWithProjectContexts(projectContexts []*ProjectContext) map[string]interface{}

func (*RunContext) IsCIRun added in v0.9.12

func (r *RunContext) IsCIRun() bool

func (*RunContext) SetContextValue added in v0.9.3

func (r *RunContext) SetContextValue(key string, value interface{})

func (*RunContext) UUID added in v0.9.16

func (r *RunContext) UUID() uuid.UUID

UUID returns the underlying run uuid. This can be used to globally identify the run context.

type State added in v0.7.17

type State struct {
	InstallID              string `json:"installId"`
	LatestReleaseVersion   string `json:"latestReleaseVersion"`
	LatestReleaseCheckedAt string `json:"latestReleaseCheckedAt"`
}

func LoadState added in v0.9.3

func LoadState() (*State, error)

func (*State) Save added in v0.7.17

func (s *State) Save() error

type YamlError added in v0.9.12

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

YamlError is a custom error type that allows setting multiple error messages under a base message. It is used to decipher between internal errors and the yaml.v2 errors.

func (*YamlError) Error added in v0.9.12

func (y *YamlError) Error() string

Error implements the error interface returning the YamlError as a string. If a raw error is set it simply returns the error message from that. Otherwise, it constructs an indented error message out of the base and errors.

YamlError.Error supports multiple nesting and can construct heavily indented output if needed. e.g.

&YamlError{
	base: "top message",
	errors: []error{
		errors.New("top error 1"),
		&YamlError{
			base: "child message",
			errors: []error{
				errors.New("child error 1"),
			},
		},
	},
}

would output a string like so:

top message:
	top error 1
	child message:
		child error 1

This can be useful for ui error messages where you need to highlight issues with specific fields/entries.

Jump to

Keyboard shortcuts

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