Documentation
¶
Index ¶
- Constants
- Variables
- func FindAllStackConfigsInPaths(atmosConfig *schema.AtmosConfiguration, includeStackPaths []string, ...) ([]string, []string, error)
- func FindAllStackConfigsInPathsForStack(atmosConfig schema.AtmosConfiguration, stack string, ...) ([]string, []string, bool, error)
- func GetCacheFilePath() (string, error)
- func GetContextFromVars(vars map[string]any) schema.Context
- func GetContextPrefix(stack string, context schema.Context, stackNamePattern string, ...) (string, error)
- func GetStackNameFromContextAndStackNamePattern(namespace string, tenant string, environment string, stage string, ...) (string, error)
- func InitCliConfig(configAndStacksInfo schema.ConfigAndStacksInfo, processStacks bool) (schema.AtmosConfiguration, error)
- func LoadConfig(configAndStacksInfo *schema.ConfigAndStacksInfo) (schema.AtmosConfiguration, error)
- func ReplaceContextTokens(context schema.Context, pattern string) string
- func SaveCache(cfg CacheConfig) error
- func SearchAtmosConfig(path string) ([]string, error)
- func SearchConfigFile(configPath string, atmosConfig schema.AtmosConfiguration) (string, error)
- func ShouldCheckForUpdates(lastChecked int64, frequency string) bool
- func UpdateCache(update func(*CacheConfig)) error
- type CacheConfig
- type ResolvedPaths
Constants ¶
const ( AtmosCommand = "atmos" CliConfigFileName = "atmos" DotCliConfigFileName = ".atmos" SystemDirConfigFilePath = "/usr/local/etc/atmos" WindowsAppDataEnvVar = "LOCALAPPDATA" // GlobalOptionsFlag is a custom flag to specify helmfile `GLOBAL OPTIONS` // https://github.com/roboll/helmfile#cli-reference GlobalOptionsFlag = "--global-options" TerraformCommandFlag = "--terraform-command" TerraformDirFlag = "--terraform-dir" HelmfileCommandFlag = "--helmfile-command" HelmfileDirFlag = "--helmfile-dir" PackerCommandFlag = "--packer-command" PackerDirFlag = "--packer-dir" CliConfigDirFlag = "--config-dir" StackDirFlag = "--stacks-dir" BasePathFlag = "--base-path" VendorBasePathFlag = "--vendor-base-path" WorkflowDirFlag = "--workflows-dir" KubeConfigConfigFlag = "--kubeconfig-path" JsonSchemaDirFlag = "--schemas-jsonschema-dir" OpaDirFlag = "--schemas-opa-dir" CueDirFlag = "--schemas-cue-dir" AtmosManifestJsonSchemaFlag = "--schemas-atmos-manifest" DeployRunInitFlag = "--deploy-run-init" AutoGenerateBackendFileFlag = "--auto-generate-backend-file" AppendUserAgentFlag = "--append-user-agent" InitRunReconfigure = "--init-run-reconfigure" InitPassVars = "--init-pass-vars" PlanSkipPlanfile = "--skip-planfile" FromPlanFlag = "--from-plan" PlanFileFlag = "--planfile" DryRunFlag = "--dry-run" SkipInitFlag = "--skip-init" RedirectStdErrFlag = "--redirect-stderr" HelpFlag1 = "-h" HelpFlag2 = "--help" TerraformComponentType = "terraform" HelmfileComponentType = "helmfile" PackerComponentType = "packer" ComponentVendorConfigFileName = "component.yaml" AtmosVendorConfigFileName = "vendor" ImportSectionName = "import" OverridesSectionName = "overrides" ProvidersSectionName = "providers" HooksSectionName = "hooks" VarsSectionName = "vars" SettingsSectionName = "settings" EnvSectionName = "env" BackendSectionName = "backend" BackendTypeSectionName = "backend_type" RemoteStateBackendSectionName = "remote_state_backend" RemoteStateBackendTypeSectionName = "remote_state_backend_type" MetadataSectionName = "metadata" ComponentSectionName = "component" ComponentsSectionName = "components" CommandSectionName = "command" TerraformSectionName = "terraform" HelmfileSectionName = "helmfile" PackerSectionName = "packer" PackerTemplateSectionName = "template" WorkspaceSectionName = "workspace" InheritanceSectionName = "inheritance" IntegrationsSectionName = "integrations" GithubSectionName = "github" TerraformCliVarsSectionName = "tf_cli_vars" CliArgsSectionName = "cli_args" ComponentTypeSectionName = "component_type" OutputsSectionName = "outputs" StaticSectionName = "static" BackendTypeLocal = "local" BackendTypeS3 = "s3" BackendTypeAzurerm = "azurerm" BackendTypeGCS = "gcs" BackendTypeCloud = "cloud" ComponentPathSectionName = "component_path" LogsLevelFlag = "--logs-level" LogsFileFlag = "--logs-file" QueryFlag = "--query" AffectedFlag = "--affected" AllFlag = "--all" ProcessTemplatesFlag = "--process-templates" ProcessFunctionsFlag = "--process-functions" SkipFlag = "--skip" SettingsListMergeStrategyFlag = "--settings-list-merge-strategy" // Atmos Pro. AtmosProBaseUrlEnvVarName = "ATMOS_PRO_BASE_URL" AtmosProEndpointEnvVarName = "ATMOS_PRO_ENDPOINT" AtmosProTokenEnvVarName = "ATMOS_PRO_TOKEN" AtmosProWorkspaceIDEnvVarName = "ATMOS_PRO_WORKSPACE_ID" AtmosProRunIDEnvVarName = "ATMOS_PRO_RUN_ID" AtmosProDefaultBaseUrl = "https://atmos-pro.com" AtmosProDefaultEndpoint = "api/v1" UploadStatusFlag = "upload-status" TerraformDefaultWorkspace = "default" ComponentStr = "component" StackStr = "stack" )
const ( LOCAL importTypes = 0 REMOTE importTypes = 1 )
const MaximumImportLvL = 10
Variables ¶
var ( ErrBasePath = errors.New("base path required to process imports") ErrTempDir = errors.New("temporary directory required to process imports") ErrResolveLocal = errors.New("failed to resolve local import path") ErrSourceDestination = errors.New("source and destination cannot be nil") ErrImportPathRequired = errors.New("import path required to process imports") ErrNOFileMatchPattern = errors.New("no files matching patterns found") ErrMaxImportDepth = errors.New("maximum import depth reached") )
var ( ErrExpectedDirOrPattern = errors.New("--config-path expected directory found file") ErrFileNotFound = errors.New("file not found") ErrExpectedFile = errors.New("--config expected file found directory") ErrAtmosArgConfigNotFound = errors.New("atmos configuration not found") ErrAtmosFilesDIrConfigNotFound = errors.New("`atmos.yaml` or `.atmos.yaml` configuration file not found on directory") )
var ErrAtmosDIrConfigNotFound = errors.New("atmos config directory not found")
var ErrExecuteYamlFunctions = errors.New("failed to execute yaml function")
var (
NotFound = errors.New("\n'atmos.yaml' CLI config was not found in any of the searched paths: system dir, home dir, current dir, ENV vars." +
"\nYou can download a sample config and adapt it to your requirements from " +
"https://raw.githubusercontent.com/cloudposse/atmos/main/examples/quick-start-advanced/atmos.yaml")
)
Functions ¶
func FindAllStackConfigsInPaths ¶ added in v1.4.13
func FindAllStackConfigsInPaths( atmosConfig *schema.AtmosConfiguration, includeStackPaths []string, excludeStackPaths []string, ) ([]string, []string, error)
FindAllStackConfigsInPaths finds all stack manifests in the paths specified by globs.
func FindAllStackConfigsInPathsForStack ¶ added in v1.4.13
func FindAllStackConfigsInPathsForStack( atmosConfig schema.AtmosConfiguration, stack string, includeStackPaths []string, excludeStackPaths []string, ) ([]string, []string, bool, error)
FindAllStackConfigsInPathsForStack finds all stack manifests in the paths specified by globs for the provided stack.
func GetCacheFilePath ¶ added in v1.127.0
func GetContextFromVars ¶ added in v1.3.5
GetContextFromVars creates a context object from the provided variables.
func GetContextPrefix ¶ added in v1.3.5
func GetContextPrefix(stack string, context schema.Context, stackNamePattern string, stackFile string) (string, error)
GetContextPrefix calculates context prefix from the context.
func GetStackNameFromContextAndStackNamePattern ¶ added in v1.4.9
func GetStackNameFromContextAndStackNamePattern( namespace string, tenant string, environment string, stage string, stackNamePattern string, ) (string, error)
GetStackNameFromContextAndStackNamePattern calculates stack name from the provided context using the provided stack name pattern.
func InitCliConfig ¶ added in v1.10.0
func InitCliConfig(configAndStacksInfo schema.ConfigAndStacksInfo, processStacks bool) (schema.AtmosConfiguration, error)
InitCliConfig finds and merges CLI configurations in the following order: system dir, home dir, current dir, ENV vars, command-line arguments https://dev.to/techschoolguru/load-config-from-file-environment-variables-in-golang-with-viper-2j2d https://medium.com/@bnprashanth256/reading-configuration-files-and-environment-variables-in-go-golang-c2607f912b63
TODO: Change configAndStacksInfo to pointer. Temporarily suppressing gocritic warnings; refactoring InitCliConfig would require extensive changes.
func LoadConfig ¶ added in v1.167.0
func LoadConfig(configAndStacksInfo *schema.ConfigAndStacksInfo) (schema.AtmosConfiguration, error)
* Embedded atmos.yaml (`atmos/pkg/config/atmos.yaml`) * System dir (`/usr/local/etc/atmos` on Linux, `%LOCALAPPDATA%/atmos` on Windows). * Home directory (~/.atmos). * Current working directory. * ENV vars. * Command-line arguments.
func ReplaceContextTokens ¶ added in v1.3.5
ReplaceContextTokens replaces context tokens in the provided pattern and returns a string with all the tokens replaced.
func SaveCache ¶ added in v1.127.0
func SaveCache(cfg CacheConfig) error
SaveCache writes the provided cache configuration to the cache file atomically. The function acquires an exclusive lock to prevent concurrent writes and ensures data consistency across multiple processes.
Parameters:
- cfg: The CacheConfig to save to disk.
Returns an error if the cache file cannot be created or written. Callers can check for specific failure types using errors.Is() with the following sentinel errors:
- ErrCacheMarshal: Failed to marshal cache content to YAML
- ErrCacheWrite: Failed to write the cache file
func SearchAtmosConfig ¶ added in v1.167.0
SearchAtmosConfig searches for a config file in path. The path is directory, file or a pattern.
func SearchConfigFile ¶ added in v1.117.0
func SearchConfigFile(configPath string, atmosConfig schema.AtmosConfiguration) (string, error)
func ShouldCheckForUpdates ¶ added in v1.127.0
ShouldCheckForUpdates determines whether an update check is due based on the configured frequency and the time of the last check.
func UpdateCache ¶ added in v1.192.0
func UpdateCache(update func(*CacheConfig)) error
UpdateCache atomically updates the cache file by acquiring a lock, loading the current configuration, applying the update function, and saving the result. This prevents race conditions when multiple processes try to update different fields simultaneously.
Parameters:
- update: A function that modifies the provided CacheConfig in place.
Returns an error if the cache file cannot be accessed, read, or written. Callers can check for specific failure types using errors.Is() with the following sentinel errors:
- ErrCacheRead: Failed to read the cache file
- ErrCacheUnmarshal: Failed to unmarshal cache content
- ErrCacheWrite: Failed to write the cache file
- ErrCacheMarshal: Failed to marshal cache content
Types ¶
type CacheConfig ¶ added in v1.127.0
type CacheConfig struct {
LastChecked int64 `mapstructure:"last_checked" yaml:"last_checked"`
InstallationId string `mapstructure:"installation_id" yaml:"installation_id"`
TelemetryDisclosureShown bool `mapstructure:"telemetry_disclosure_shown" yaml:"telemetry_disclosure_shown"`
}
func LoadCache ¶ added in v1.127.0
func LoadCache() (CacheConfig, error)
type ResolvedPaths ¶ added in v1.167.0
type ResolvedPaths struct {
// contains filtered or unexported fields
}
import Resolved Paths.