From e367197b1f176890b6c680c350eb547b1ae7ffdc Mon Sep 17 00:00:00 2001 From: aknysh Date: Sun, 29 Dec 2024 19:55:22 -0500 Subject: [PATCH 01/32] updates --- examples/quick-start-advanced/Dockerfile | 2 +- pkg/utils/glob_utils.go | 1 + website/docs/integrations/atlantis.mdx | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index c6fb27767..16783b519 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -6,7 +6,7 @@ ARG GEODESIC_OS=debian # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.133.0 +ARG ATMOS_VERSION=1.134.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/pkg/utils/glob_utils.go b/pkg/utils/glob_utils.go index ec637c2c4..84e28835a 100644 --- a/pkg/utils/glob_utils.go +++ b/pkg/utils/glob_utils.go @@ -21,6 +21,7 @@ func GetGlobMatches(pattern string) ([]string, error) { if found && existingMatches != nil { return strings.Split(existingMatches.(string), ","), nil } + pattern = filepath.ToSlash(pattern) base, cleanPattern := doublestar.SplitPattern(pattern) f := os.DirFS(base) diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index 118d3b738..c15db5ac4 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.133.0 + ATMOS_VERSION: 1.134.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From 3e8039f78a95c82b733b0cb12ba1d8c2affb9036 Mon Sep 17 00:00:00 2001 From: aknysh Date: Sun, 29 Dec 2024 21:40:10 -0500 Subject: [PATCH 02/32] updates --- cmd/list_components.go | 5 +++-- cmd/list_stacks.go | 5 +++-- cmd/root.go | 2 ++ pkg/config/const.go | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/list_components.go b/cmd/list_components.go index cce734c28..029308fc4 100644 --- a/cmd/list_components.go +++ b/cmd/list_components.go @@ -3,13 +3,14 @@ package cmd import ( "fmt" + "github.com/fatih/color" + "github.com/spf13/cobra" + e "github.com/cloudposse/atmos/internal/exec" "github.com/cloudposse/atmos/pkg/config" l "github.com/cloudposse/atmos/pkg/list" "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" - "github.com/fatih/color" - "github.com/spf13/cobra" ) // listComponentsCmd lists atmos components diff --git a/cmd/list_stacks.go b/cmd/list_stacks.go index 1ce6c3f61..6b117e813 100644 --- a/cmd/list_stacks.go +++ b/cmd/list_stacks.go @@ -3,13 +3,14 @@ package cmd import ( "fmt" + "github.com/fatih/color" + "github.com/spf13/cobra" + e "github.com/cloudposse/atmos/internal/exec" "github.com/cloudposse/atmos/pkg/config" l "github.com/cloudposse/atmos/pkg/list" "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" - "github.com/fatih/color" - "github.com/spf13/cobra" ) // listStacksCmd lists atmos stacks diff --git a/cmd/root.go b/cmd/root.go index 93eb820e0..f7249cadd 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -130,6 +130,8 @@ func init() { RootCmd.PersistentFlags().String("logs-level", "Info", "Logs level. Supported log levels are Trace, Debug, Info, Warning, Off. If the log level is set to Off, Atmos will not log any messages") RootCmd.PersistentFlags().String("logs-file", "/dev/stdout", "The file to write Atmos logs to. Logs can be written to any file or any standard file descriptor, including '/dev/stdout', '/dev/stderr' and '/dev/null'") + RootCmd.PersistentFlags().String("overrides", "", "Override attributes in Atmos sections including 'vars', 'settings', 'backend': atmos terraform plan -s --overrides \"vars: {a: 1}\"") + // Set custom usage template templates.SetCustomUsageFunc(RootCmd) cobra.OnInitialize(initConfig) diff --git a/pkg/config/const.go b/pkg/config/const.go index 8078a1c00..21041d375 100644 --- a/pkg/config/const.go +++ b/pkg/config/const.go @@ -65,6 +65,8 @@ const ( LogsLevelFlag = "--logs-level" LogsFileFlag = "--logs-file" + OverridesFlag = "--overrides" + SettingsListMergeStrategyFlag = "--settings-list-merge-strategy" // Atmos Pro From 5ee65585589806c351e2c9227e9692f74e5c0100 Mon Sep 17 00:00:00 2001 From: aknysh Date: Mon, 30 Dec 2024 00:08:20 -0500 Subject: [PATCH 03/32] updates --- cmd/terraform.go | 2 ++ internal/exec/utils.go | 15 +++++++++++++++ pkg/schema/schema.go | 2 ++ 3 files changed, 19 insertions(+) diff --git a/cmd/terraform.go b/cmd/terraform.go index dfd5ea610..5984fa707 100644 --- a/cmd/terraform.go +++ b/cmd/terraform.go @@ -28,6 +28,7 @@ var terraformCmd = &cobra.Command{ finalArgs = lo.Slice(args, 0, doubleDashIndex) argsAfterDoubleDash = lo.Slice(args, doubleDashIndex+1, len(args)) } + info, err := e.ProcessCommandLineArgs("terraform", cmd, finalArgs, argsAfterDoubleDash) if err != nil { u.LogErrorAndExit(schema.AtmosConfiguration{}, err) @@ -39,6 +40,7 @@ var terraformCmd = &cobra.Command{ CheckForAtmosUpdateAndPrintMessage(atmosConfig) return } + // Check Atmos configuration checkAtmosConfig() diff --git a/internal/exec/utils.go b/internal/exec/utils.go index cbc435906..12437de25 100644 --- a/internal/exec/utils.go +++ b/internal/exec/utils.go @@ -49,6 +49,7 @@ var ( cfg.RedirectStdErrFlag, cfg.LogsLevelFlag, cfg.LogsFileFlag, + cfg.OverridesFlag, } ) @@ -218,6 +219,7 @@ func ProcessCommandLineArgs( configAndStacksInfo.LogsLevel = argsAndFlagsInfo.LogsLevel configAndStacksInfo.LogsFile = argsAndFlagsInfo.LogsFile configAndStacksInfo.SettingsListMergeStrategy = argsAndFlagsInfo.SettingsListMergeStrategy + configAndStacksInfo.Overrides = argsAndFlagsInfo.Overrides // Check if `-h` or `--help` flags are specified if argsAndFlagsInfo.NeedHelp { @@ -976,6 +978,19 @@ func processArgsAndFlags( info.SettingsListMergeStrategy = settingsListMergeStrategyParts[1] } + if arg == cfg.OverridesFlag { + if len(inputArgsAndFlags) <= (i + 1) { + return info, fmt.Errorf("invalid flag: %s", arg) + } + info.Overrides = inputArgsAndFlags[i+1] + } else if strings.HasPrefix(arg+"=", cfg.OverridesFlag) { + var parts = strings.Split(arg, "=") + if len(parts) != 2 { + return info, fmt.Errorf("invalid flag: %s", arg) + } + info.Overrides = parts[1] + } + if arg == cfg.FromPlanFlag { info.UseTerraformPlan = true } diff --git a/pkg/schema/schema.go b/pkg/schema/schema.go index 8108be1bd..2503a83fe 100644 --- a/pkg/schema/schema.go +++ b/pkg/schema/schema.go @@ -179,6 +179,7 @@ type ArgsAndFlagsInfo struct { LogsLevel string LogsFile string SettingsListMergeStrategy string + Overrides string } type ConfigAndStacksInfo struct { @@ -243,6 +244,7 @@ type ConfigAndStacksInfo struct { LogsLevel string LogsFile string SettingsListMergeStrategy string + Overrides string } // Workflows From 3b7cc60bae4fb87d256c9286cf67fd28ef18be6d Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 09:45:21 -0500 Subject: [PATCH 04/32] updates --- cmd/root.go | 3 ++- pkg/config/const.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index f7249cadd..743679392 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -130,7 +130,8 @@ func init() { RootCmd.PersistentFlags().String("logs-level", "Info", "Logs level. Supported log levels are Trace, Debug, Info, Warning, Off. If the log level is set to Off, Atmos will not log any messages") RootCmd.PersistentFlags().String("logs-file", "/dev/stdout", "The file to write Atmos logs to. Logs can be written to any file or any standard file descriptor, including '/dev/stdout', '/dev/stderr' and '/dev/null'") - RootCmd.PersistentFlags().String("overrides", "", "Override attributes in Atmos sections including 'vars', 'settings', 'backend': atmos terraform plan -s --overrides \"vars: {a: 1}\"") + RootCmd.PersistentFlags().String("override", "", "Override attributes in Atmos sections including 'vars', 'settings', 'backend': atmos terraform apply -s --override '.vars.a = \"foo\"'") + RootCmd.PersistentFlags().StringP("query", "q", "", "Query the result of an Atmos command using 'yq' syntax: atmos describe component -s --query '.vars.a'") // Set custom usage template templates.SetCustomUsageFunc(RootCmd) diff --git a/pkg/config/const.go b/pkg/config/const.go index 21041d375..e0088fd01 100644 --- a/pkg/config/const.go +++ b/pkg/config/const.go @@ -65,7 +65,8 @@ const ( LogsLevelFlag = "--logs-level" LogsFileFlag = "--logs-file" - OverridesFlag = "--overrides" + OverrideFlag = "--override" + QueryFlag = "--query" SettingsListMergeStrategyFlag = "--settings-list-merge-strategy" From 56d632b55edb8bf46f123295c0eba98a2613233c Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 09:54:01 -0500 Subject: [PATCH 05/32] updates --- internal/exec/utils.go | 27 +++++++++++++++++++++------ pkg/schema/schema.go | 6 ++++-- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/internal/exec/utils.go b/internal/exec/utils.go index 12437de25..c10ec0ef5 100644 --- a/internal/exec/utils.go +++ b/internal/exec/utils.go @@ -49,7 +49,8 @@ var ( cfg.RedirectStdErrFlag, cfg.LogsLevelFlag, cfg.LogsFileFlag, - cfg.OverridesFlag, + cfg.OverrideFlag, + cfg.QueryFlag, } ) @@ -219,7 +220,8 @@ func ProcessCommandLineArgs( configAndStacksInfo.LogsLevel = argsAndFlagsInfo.LogsLevel configAndStacksInfo.LogsFile = argsAndFlagsInfo.LogsFile configAndStacksInfo.SettingsListMergeStrategy = argsAndFlagsInfo.SettingsListMergeStrategy - configAndStacksInfo.Overrides = argsAndFlagsInfo.Overrides + configAndStacksInfo.Override = argsAndFlagsInfo.Override + configAndStacksInfo.Query = argsAndFlagsInfo.Query // Check if `-h` or `--help` flags are specified if argsAndFlagsInfo.NeedHelp { @@ -978,17 +980,30 @@ func processArgsAndFlags( info.SettingsListMergeStrategy = settingsListMergeStrategyParts[1] } - if arg == cfg.OverridesFlag { + if arg == cfg.OverrideFlag { if len(inputArgsAndFlags) <= (i + 1) { return info, fmt.Errorf("invalid flag: %s", arg) } - info.Overrides = inputArgsAndFlags[i+1] - } else if strings.HasPrefix(arg+"=", cfg.OverridesFlag) { + info.Override = inputArgsAndFlags[i+1] + } else if strings.HasPrefix(arg+"=", cfg.OverrideFlag) { var parts = strings.Split(arg, "=") if len(parts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } - info.Overrides = parts[1] + info.Override = parts[1] + } + + if arg == cfg.QueryFlag { + if len(inputArgsAndFlags) <= (i + 1) { + return info, fmt.Errorf("invalid flag: %s", arg) + } + info.Query = inputArgsAndFlags[i+1] + } else if strings.HasPrefix(arg+"=", cfg.QueryFlag) { + var parts = strings.Split(arg, "=") + if len(parts) != 2 { + return info, fmt.Errorf("invalid flag: %s", arg) + } + info.Query = parts[1] } if arg == cfg.FromPlanFlag { diff --git a/pkg/schema/schema.go b/pkg/schema/schema.go index 2503a83fe..dd516738e 100644 --- a/pkg/schema/schema.go +++ b/pkg/schema/schema.go @@ -179,7 +179,8 @@ type ArgsAndFlagsInfo struct { LogsLevel string LogsFile string SettingsListMergeStrategy string - Overrides string + Override string + Query string } type ConfigAndStacksInfo struct { @@ -244,7 +245,8 @@ type ConfigAndStacksInfo struct { LogsLevel string LogsFile string SettingsListMergeStrategy string - Overrides string + Override string + Query string } // Workflows From 2fd79cae35716348c2b7e3971c2e4ef16c339fce Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 09:57:43 -0500 Subject: [PATCH 06/32] updates --- go.mod | 12 +++++++++++- go.sum | 37 +++++++++++++++++++++++++++++++++---- internal/exec/yq_utils.go | 11 +++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 internal/exec/yq_utils.go diff --git a/go.mod b/go.mod index c7cc392e5..a1e3196af 100644 --- a/go.mod +++ b/go.mod @@ -36,6 +36,7 @@ require ( github.com/kubescape/go-git-url v0.0.30 github.com/lrstanley/bubblezone v0.0.0-20241221063659-0f12a2876fb2 github.com/mattn/go-isatty v0.0.20 + github.com/mikefarah/yq/v4 v4.44.6 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-wordwrap v1.0.1 github.com/mitchellh/mapstructure v1.5.0 @@ -66,9 +67,11 @@ require ( github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/Shopify/ejson v1.3.3 // indirect + github.com/a8m/envsubst v1.4.2 // indirect github.com/agext/levenshtein v1.2.2 // indirect github.com/agnivade/levenshtein v1.2.0 // indirect github.com/alecthomas/chroma/v2 v2.14.0 // indirect + github.com/alecthomas/participle/v2 v2.1.1 // indirect github.com/apparentlymart/go-cidr v1.1.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect @@ -115,6 +118,7 @@ require ( github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/cyphar/filepath-securejoin v0.2.5 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dimchansky/utfbom v1.1.1 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect github.com/docker/cli v27.1.1+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect @@ -122,6 +126,7 @@ require ( github.com/docker/libkv v0.2.2-0.20180912205406-458977154600 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect + github.com/elliotchance/orderedmap v1.7.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -133,6 +138,8 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.3 // indirect + github.com/goccy/go-yaml v1.13.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect @@ -174,6 +181,7 @@ require ( github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jinzhu/copier v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/joho/godotenv v1.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -199,7 +207,7 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -233,6 +241,7 @@ require ( github.com/yashtewari/glob-intersection v0.2.0 // indirect github.com/yuin/goldmark v1.7.4 // indirect github.com/yuin/goldmark-emoji v1.0.3 // indirect + github.com/yuin/gopher-lua v1.1.1 // indirect github.com/zealic/xignore v0.3.3 // indirect go.etcd.io/bbolt v1.3.10 // indirect go.opencensus.io v0.24.0 // indirect @@ -266,6 +275,7 @@ require ( google.golang.org/grpc v1.69.2 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a // indirect diff --git a/go.sum b/go.sum index 2e9c307f2..f5aa7b1f5 100644 --- a/go.sum +++ b/go.sum @@ -261,6 +261,8 @@ github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXx github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/Shopify/ejson v1.3.3 h1:dPzgmvFhUPTJIzwdF5DaqbwW1dWaoR8ADKRdSTy6Mss= github.com/Shopify/ejson v1.3.3/go.mod h1:VZMUtDzvBW/PAXRUF5fzp1ffb1ucT8MztrZXXLYZurw= +github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg= +github.com/a8m/envsubst v1.4.2/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.2.0 h1:U9L4IOT0Y3i0TIlUIDJ7rVUziKi/zPbrJGaFrtYH3SY= @@ -271,6 +273,8 @@ github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbf github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E= github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I= +github.com/alecthomas/participle/v2 v2.1.1 h1:hrjKESvSqGHzRb4yW1ciisFJ4p3MGYih6icjJvbsmV8= +github.com/alecthomas/participle/v2 v2.1.1/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -495,6 +499,7 @@ github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkz github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo= github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= @@ -517,6 +522,8 @@ github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/elewis787/boa v0.1.2 h1:xNKWJ9X2MWbLSLLOA31N4l1Jdec9FZSkbTvXy3C8rw4= github.com/elewis787/boa v0.1.2/go.mod h1:EFDKuz/bYgQAKJQBnfHmB9i+bBzsaZJyyoSmOz6eBZI= +github.com/elliotchance/orderedmap v1.7.0 h1:FirjcM/NbcyudJhaIF9MG/RjIh5XHm2xb1SFquZ8k0g= +github.com/elliotchance/orderedmap v1.7.0/go.mod h1:wsDwEaX5jEoyhbs7x93zk2H/qv0zwuhg4inXhDkYqys= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -553,6 +560,8 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -590,9 +599,15 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA= +github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -605,6 +620,10 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.13.0 h1:0Wtp0FZLd7Sm8gERmR9S6Iczzb3vItJj7NaHmFg8pTs= +github.com/goccy/go-yaml v1.13.0/go.mod h1:IjYwxUiJDoqpx2RmbdjMUceGHZwYLon3sfOGl5Hi9lc= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -912,6 +931,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= +github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= +github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -960,6 +981,8 @@ github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LE github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1007,6 +1030,8 @@ github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKju github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= +github.com/mikefarah/yq/v4 v4.44.6 h1:yuu+sH3KX1R3pQCP/vsDao8uNcuiXcjvC7XtoekCV0g= +github.com/mikefarah/yq/v4 v4.44.6/go.mod h1:sva/xvSlW4mKRtRm9nwIS40A+LqNbl46ezjBHYyFtLo= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -1075,14 +1100,16 @@ github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAq github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -1201,8 +1228,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -1240,6 +1265,8 @@ github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark-emoji v1.0.3 h1:aLRkLHOuBR2czCY4R8olwMjID+tENfhyFDMCRhbIQY4= github.com/yuin/goldmark-emoji v1.0.3/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U= +github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= +github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= @@ -1929,6 +1956,8 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE= +gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= diff --git a/internal/exec/yq_utils.go b/internal/exec/yq_utils.go new file mode 100644 index 000000000..b9207bfe6 --- /dev/null +++ b/internal/exec/yq_utils.go @@ -0,0 +1,11 @@ +// https://github.com/mikefarah/yq +// https://mikefarah.gitbook.io/yq +// https://mikefarah.gitbook.io/yq/recipes +// https://mikefarah.gitbook.io/yq/operators/pipe + +package exec + +import ( + _ "github.com/mikefarah/yq/v4/pkg/yqlib" + _ "gopkg.in/yaml.v3" +) From 6ad4818f762d7940682ce9016d669769b01e1412 Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 12:18:48 -0500 Subject: [PATCH 07/32] updates --- internal/exec/yq_utils.go | 11 ------ pkg/utils/file_extensions.go | 13 +++--- pkg/utils/yq_test.go | 76 ++++++++++++++++++++++++++++++++++++ pkg/utils/yq_utils.go | 44 +++++++++++++++++++++ 4 files changed, 126 insertions(+), 18 deletions(-) delete mode 100644 internal/exec/yq_utils.go create mode 100644 pkg/utils/yq_test.go create mode 100644 pkg/utils/yq_utils.go diff --git a/internal/exec/yq_utils.go b/internal/exec/yq_utils.go deleted file mode 100644 index b9207bfe6..000000000 --- a/internal/exec/yq_utils.go +++ /dev/null @@ -1,11 +0,0 @@ -// https://github.com/mikefarah/yq -// https://mikefarah.gitbook.io/yq -// https://mikefarah.gitbook.io/yq/recipes -// https://mikefarah.gitbook.io/yq/operators/pipe - -package exec - -import ( - _ "github.com/mikefarah/yq/v4/pkg/yqlib" - _ "gopkg.in/yaml.v3" -) diff --git a/pkg/utils/file_extensions.go b/pkg/utils/file_extensions.go index 9368e68fe..73bb505e4 100644 --- a/pkg/utils/file_extensions.go +++ b/pkg/utils/file_extensions.go @@ -1,11 +1,10 @@ package utils const ( - DefaultStackConfigFileExtension = ".yaml" - DefaultVendoringManifestFileExtension = ".yaml" - YamlFileExtension = ".yaml" - YmlFileExtension = ".yml" - YamlTemplateExtension = ".yaml.tmpl" - YmlTemplateExtension = ".yml.tmpl" - TemplateExtension = ".tmpl" + DefaultStackConfigFileExtension = ".yaml" + YamlFileExtension = ".yaml" + YmlFileExtension = ".yml" + YamlTemplateExtension = ".yaml.tmpl" + YmlTemplateExtension = ".yml.tmpl" + TemplateExtension = ".tmpl" ) diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go new file mode 100644 index 000000000..dec52d072 --- /dev/null +++ b/pkg/utils/yq_test.go @@ -0,0 +1,76 @@ +package utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEvaluateYqExpression(t *testing.T) { + input := `--- +vars: + assign_generated_ipv6_cidr_block: false + availability_zones: + - us-east-2a + - us-east-2b + - us-east-2c + enabled: true + environment: ue2 + ipv4_primary_cidr_block: 10.8.0.0/18 + map_public_ip_on_launch: false + max_subnet_count: 3 + name: common + namespace: acme + nat_eip_aws_shield_protection_enabled: false + nat_gateway_enabled: true + nat_instance_enabled: false + region: us-east-2 + stage: prod + tags: + atmos_component: vpc + atmos_manifest: orgs/acme/plat/prod/us-east-2 + atmos_stack: plat-ue2-prod + terraform_component: vpc + terraform_workspace: plat-ue2-prod + tenant: plat + vpc_flow_logs_enabled: true + vpc_flow_logs_log_destination_type: s3 + vpc_flow_logs_traffic_type: ALL +` + + data, err := UnmarshalYAML[map[string]any](input) + assert.Nil(t, err) + assert.NotNil(t, data) + + yq := ".vars.tags.atmos_component" + res, err := EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, "vpc", res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".vars.availability_zones.0" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, "us-east-2a", res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".vars.ipv4_primary_cidr_block" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, "10.8.0.0/18", res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".vars.enabled" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, true, res) + err = PrintAsYAML(res) + assert.Nil(t, err) +} diff --git a/pkg/utils/yq_utils.go b/pkg/utils/yq_utils.go new file mode 100644 index 000000000..741266971 --- /dev/null +++ b/pkg/utils/yq_utils.go @@ -0,0 +1,44 @@ +// https://github.com/mikefarah/yq +// https://mikefarah.gitbook.io/yq +// https://mikefarah.gitbook.io/yq/recipes +// https://mikefarah.gitbook.io/yq/operators/pipe + +package utils + +import ( + "fmt" + "github.com/mikefarah/yq/v4/pkg/yqlib" +) + +func EvaluateYqExpression(data map[string]any, expression string) (any, error) { + evaluator := yqlib.NewStringEvaluator() + + yaml, err := ConvertToYAML(data) + if err != nil { + return nil, fmt.Errorf("failed to convert data to YAML: %w", err) + } + + pref := yqlib.YamlPreferences{ + Indent: 2, + ColorsEnabled: false, + LeadingContentPreProcessing: true, + PrintDocSeparators: true, + UnwrapScalar: true, + EvaluateTogether: false, + } + + encoder := yqlib.NewYamlEncoder(pref) + decoder := yqlib.NewYamlDecoder(pref) + + result, err := evaluator.Evaluate(expression, yaml, encoder, decoder) + if err != nil { + return nil, fmt.Errorf("failed to evaluate YQ expression '%s': %w", expression, err) + } + + res, err := UnmarshalYAML[any](result) + if err != nil { + return nil, fmt.Errorf("failed to convert data to YAML: %w", err) + } + + return res, nil +} From 387f068c52128cb0a5c62eabdb86de8dfcb4b135 Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 12:21:05 -0500 Subject: [PATCH 08/32] updates --- pkg/utils/yq_utils.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/utils/yq_utils.go b/pkg/utils/yq_utils.go index 741266971..a49968739 100644 --- a/pkg/utils/yq_utils.go +++ b/pkg/utils/yq_utils.go @@ -15,7 +15,7 @@ func EvaluateYqExpression(data map[string]any, expression string) (any, error) { yaml, err := ConvertToYAML(data) if err != nil { - return nil, fmt.Errorf("failed to convert data to YAML: %w", err) + return nil, fmt.Errorf("EvaluateYqExpression: failed to convert data to YAML: %w", err) } pref := yqlib.YamlPreferences{ @@ -32,12 +32,12 @@ func EvaluateYqExpression(data map[string]any, expression string) (any, error) { result, err := evaluator.Evaluate(expression, yaml, encoder, decoder) if err != nil { - return nil, fmt.Errorf("failed to evaluate YQ expression '%s': %w", expression, err) + return nil, fmt.Errorf("EvaluateYqExpression: failed to evaluate YQ expression '%s': %w", expression, err) } res, err := UnmarshalYAML[any](result) if err != nil { - return nil, fmt.Errorf("failed to convert data to YAML: %w", err) + return nil, fmt.Errorf("EvaluateYqExpression: failed to convert YAML to Go type: %w", err) } return res, nil From 58f6d06d9578717d11c83faedfe4b29547655e63 Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 13:05:08 -0500 Subject: [PATCH 09/32] updates --- pkg/utils/yq_test.go | 36 ++++++++++++++++++++++++++++++++++++ pkg/utils/yq_utils.go | 6 +++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go index dec52d072..eed68dfb4 100644 --- a/pkg/utils/yq_test.go +++ b/pkg/utils/yq_test.go @@ -73,4 +73,40 @@ vars: assert.Equal(t, true, res) err = PrintAsYAML(res) assert.Nil(t, err) + + yq = ".vars.enabled = false" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + yq = ".vars.enabled" + res, err = EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, false, res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".vars.ipv4_primary_cidr_block = \"10.8.8.0/20\"" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + yq = ".vars.ipv4_primary_cidr_block" + res, err = EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, "10.8.8.0/20", res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".vars.availability_zones.0 = \"us-east-2d\"" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + yq = ".vars.availability_zones.0" + res, err = EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, "us-east-2d", res) + err = PrintAsYAML(res) + assert.Nil(t, err) } diff --git a/pkg/utils/yq_utils.go b/pkg/utils/yq_utils.go index a49968739..f96a3ef10 100644 --- a/pkg/utils/yq_utils.go +++ b/pkg/utils/yq_utils.go @@ -10,7 +10,7 @@ import ( "github.com/mikefarah/yq/v4/pkg/yqlib" ) -func EvaluateYqExpression(data map[string]any, expression string) (any, error) { +func EvaluateYqExpression(data any, yq string) (any, error) { evaluator := yqlib.NewStringEvaluator() yaml, err := ConvertToYAML(data) @@ -30,9 +30,9 @@ func EvaluateYqExpression(data map[string]any, expression string) (any, error) { encoder := yqlib.NewYamlEncoder(pref) decoder := yqlib.NewYamlDecoder(pref) - result, err := evaluator.Evaluate(expression, yaml, encoder, decoder) + result, err := evaluator.Evaluate(yq, yaml, encoder, decoder) if err != nil { - return nil, fmt.Errorf("EvaluateYqExpression: failed to evaluate YQ expression '%s': %w", expression, err) + return nil, fmt.Errorf("EvaluateYqExpression: failed to evaluate YQ expression '%s': %w", yq, err) } res, err := UnmarshalYAML[any](result) From 42d7231708cf422363f70e8062e94288c885b5ab Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 21:15:58 -0500 Subject: [PATCH 10/32] updates --- pkg/utils/yq_test.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go index eed68dfb4..9e156983a 100644 --- a/pkg/utils/yq_test.go +++ b/pkg/utils/yq_test.go @@ -109,4 +109,21 @@ vars: assert.Equal(t, "us-east-2d", res) err = PrintAsYAML(res) assert.Nil(t, err) + + yq = ".vars.enabled = false | .vars.tags.terraform_workspace = \"plat-ue2-prod-override\"" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + yq = ".vars.enabled" + res1, err := EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.Equal(t, false, res1) + err = PrintAsYAML(res1) + assert.Nil(t, err) + yq = ".vars.tags.terraform_workspace" + res2, err := EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.Equal(t, "plat-ue2-prod-override", res2) + err = PrintAsYAML(res2) + assert.Nil(t, err) } From c89b649bc02dcc4f52473e3649358d16ef18c93f Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 1 Jan 2025 21:18:32 -0500 Subject: [PATCH 11/32] updates --- pkg/utils/yq_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go index 9e156983a..3acfbed62 100644 --- a/pkg/utils/yq_test.go +++ b/pkg/utils/yq_test.go @@ -110,7 +110,7 @@ vars: err = PrintAsYAML(res) assert.Nil(t, err) - yq = ".vars.enabled = false | .vars.tags.terraform_workspace = \"plat-ue2-prod-override\"" + yq = ".vars.enabled = false | .vars.tags.terraform_workspace = \"plat-ue2-prod-override\" | .vars.max_subnet_count = 2" res, err = EvaluateYqExpression(data, yq) assert.Nil(t, err) assert.NotNil(t, res) @@ -126,4 +126,10 @@ vars: assert.Equal(t, "plat-ue2-prod-override", res2) err = PrintAsYAML(res2) assert.Nil(t, err) + yq = ".vars.max_subnet_count" + res3, err := EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.Equal(t, 2, res3) + err = PrintAsYAML(res3) + assert.Nil(t, err) } From 59f560acd740d4d9aaebd6a719a616f87341391d Mon Sep 17 00:00:00 2001 From: aknysh Date: Thu, 2 Jan 2025 20:46:44 -0500 Subject: [PATCH 12/32] updates --- LICENSE | 2 +- go.mod | 6 +++--- go.sum | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/LICENSE b/LICENSE index dc427fc55..b56c1edf5 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2020-2024 Cloud Posse, LLC + Copyright 2020-2025 Cloud Posse, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/go.mod b/go.mod index a1e3196af..d6cdb64e2 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/charmbracelet/log v0.4.0 github.com/elewis787/boa v0.1.2 github.com/fatih/color v1.18.0 - github.com/go-git/go-git/v5 v5.13.0 + github.com/go-git/go-git/v5 v5.13.1 github.com/gofrs/flock v0.12.1 github.com/google/go-containerregistry v0.20.2 github.com/google/go-github/v59 v59.0.0 @@ -116,7 +116,7 @@ require ( github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect - github.com/cyphar/filepath-securejoin v0.2.5 // indirect + github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dimchansky/utfbom v1.1.1 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect @@ -132,7 +132,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.0 // indirect + github.com/go-git/go-billy/v5 v5.6.1 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect diff --git a/go.sum b/go.sum index f5aa7b1f5..a6d081d8a 100644 --- a/go.sum +++ b/go.sum @@ -484,8 +484,8 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.23 h1:4M6+isWdcStXEf15G/RbrMPOQj1dZ7HPZCGwE4kOeP0= github.com/creack/pty v1.1.23/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= -github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= -github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -518,8 +518,8 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad h1:Qk76DOWdOp+GlyDKBAG3Klr9cn7N+LcYc82AZ2S7+cA= github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad/go.mod h1:mPKfmRa823oBIgl2r20LeMSpTAteW5j7FLkc0vjmzyQ= github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= -github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= -github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= +github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/elewis787/boa v0.1.2 h1:xNKWJ9X2MWbLSLLOA31N4l1Jdec9FZSkbTvXy3C8rw4= github.com/elewis787/boa v0.1.2/go.mod h1:EFDKuz/bYgQAKJQBnfHmB9i+bBzsaZJyyoSmOz6eBZI= github.com/elliotchance/orderedmap v1.7.0 h1:FirjcM/NbcyudJhaIF9MG/RjIh5XHm2xb1SFquZ8k0g= @@ -571,12 +571,12 @@ github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1 github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8= -github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM= +github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= +github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= -github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= +github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= +github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= From fff0f25369da35b05bff634d3542e42cd7ce1372 Mon Sep 17 00:00:00 2001 From: aknysh Date: Thu, 2 Jan 2025 23:14:26 -0500 Subject: [PATCH 13/32] updates --- pkg/utils/yq_test.go | 77 +++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go index 3acfbed62..0fbbd80c0 100644 --- a/pkg/utils/yq_test.go +++ b/pkg/utils/yq_test.go @@ -7,45 +7,64 @@ import ( ) func TestEvaluateYqExpression(t *testing.T) { - input := `--- + input := ` +settings: + test: true + mode: test vars: - assign_generated_ipv6_cidr_block: false - availability_zones: - - us-east-2a - - us-east-2b - - us-east-2c - enabled: true - environment: ue2 - ipv4_primary_cidr_block: 10.8.0.0/18 - map_public_ip_on_launch: false - max_subnet_count: 3 - name: common - namespace: acme - nat_eip_aws_shield_protection_enabled: false - nat_gateway_enabled: true - nat_instance_enabled: false - region: us-east-2 - stage: prod - tags: - atmos_component: vpc - atmos_manifest: orgs/acme/plat/prod/us-east-2 - atmos_stack: plat-ue2-prod - terraform_component: vpc - terraform_workspace: plat-ue2-prod - tenant: plat - vpc_flow_logs_enabled: true - vpc_flow_logs_log_destination_type: s3 - vpc_flow_logs_traffic_type: ALL + assign_generated_ipv6_cidr_block: false + availability_zones: + - us-east-2a + - us-east-2b + - us-east-2c + enabled: true + environment: ue2 + ipv4_primary_cidr_block: 10.8.0.0/18 + map_public_ip_on_launch: false + max_subnet_count: 3 + name: common + namespace: acme + nat_eip_aws_shield_protection_enabled: false + nat_gateway_enabled: true + nat_instance_enabled: false + region: us-east-2 + stage: prod + tags: + atmos_component: vpc + atmos_manifest: orgs/acme/plat/prod/us-east-2 + atmos_stack: plat-ue2-prod + terraform_component: vpc + terraform_workspace: plat-ue2-prod + tenant: plat + vpc_flow_logs_enabled: true + vpc_flow_logs_log_destination_type: s3 + vpc_flow_logs_traffic_type: ALL ` data, err := UnmarshalYAML[map[string]any](input) assert.Nil(t, err) assert.NotNil(t, data) - yq := ".vars.tags.atmos_component" + yq := ".settings.test" res, err := EvaluateYqExpression(data, yq) assert.Nil(t, err) assert.NotNil(t, res) + assert.Equal(t, true, res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".settings.mode" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) + assert.Equal(t, "test", res) + err = PrintAsYAML(res) + assert.Nil(t, err) + + yq = ".vars.tags.atmos_component" + res, err = EvaluateYqExpression(data, yq) + assert.Nil(t, err) + assert.NotNil(t, res) assert.Equal(t, "vpc", res) err = PrintAsYAML(res) assert.Nil(t, err) From 0cfbc035b9f484a17adb1e3abcb8a3dfd01bf948 Mon Sep 17 00:00:00 2001 From: aknysh Date: Thu, 2 Jan 2025 23:16:48 -0500 Subject: [PATCH 14/32] updates --- pkg/utils/yq_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go index 0fbbd80c0..b83af0108 100644 --- a/pkg/utils/yq_test.go +++ b/pkg/utils/yq_test.go @@ -129,7 +129,7 @@ vars: err = PrintAsYAML(res) assert.Nil(t, err) - yq = ".vars.enabled = false | .vars.tags.terraform_workspace = \"plat-ue2-prod-override\" | .vars.max_subnet_count = 2" + yq = ".vars.enabled = false | .vars.tags.terraform_workspace = \"plat-ue2-prod-override\" | .vars.max_subnet_count = 2 | .settings.test = false" res, err = EvaluateYqExpression(data, yq) assert.Nil(t, err) assert.NotNil(t, res) @@ -151,4 +151,10 @@ vars: assert.Equal(t, 2, res3) err = PrintAsYAML(res3) assert.Nil(t, err) + yq = ".settings.test" + res4, err := EvaluateYqExpression(res, yq) + assert.Nil(t, err) + assert.Equal(t, false, res4) + err = PrintAsYAML(res4) + assert.Nil(t, err) } From e9f3cc9bfc3a01edeb76ab89736656ad286a40f3 Mon Sep 17 00:00:00 2001 From: aknysh Date: Fri, 3 Jan 2025 13:49:18 -0500 Subject: [PATCH 15/32] updates --- examples/quick-start-advanced/Dockerfile | 2 +- website/docs/integrations/atlantis.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index 16783b519..d61d26f72 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -6,7 +6,7 @@ ARG GEODESIC_OS=debian # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.134.0 +ARG ATMOS_VERSION=1.135.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index c15db5ac4..8e73d7f15 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.134.0 + ATMOS_VERSION: 1.135.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From 142a400d39c79c36e5dce4d7274498c998cc43c3 Mon Sep 17 00:00:00 2001 From: aknysh Date: Fri, 3 Jan 2025 22:39:49 -0500 Subject: [PATCH 16/32] updates --- examples/quick-start-advanced/Dockerfile | 4 ++-- website/docs/integrations/atlantis.mdx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index d61d26f72..3b670e508 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -1,12 +1,12 @@ # Geodesic: https://github.com/cloudposse/geodesic/ -ARG GEODESIC_VERSION=3.4.0 +ARG GEODESIC_VERSION=3.4.2 ARG GEODESIC_OS=debian # Atmos # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.135.0 +ARG ATMOS_VERSION=1.136.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index 8e73d7f15..87b6f1ba6 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.135.0 + ATMOS_VERSION: 1.136.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From 986f489e6968bf75c04ed355751dd9c700a62c42 Mon Sep 17 00:00:00 2001 From: aknysh Date: Fri, 3 Jan 2025 22:42:58 -0500 Subject: [PATCH 17/32] updates --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5da577896..6f0b5b99a 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 - github.com/zclconf/go-cty v1.15.1 + github.com/zclconf/go-cty v1.16.0 golang.org/x/term v0.27.0 gopkg.in/yaml.v3 v3.0.1 mvdan.cc/sh/v3 v3.10.0 diff --git a/go.sum b/go.sum index a6d081d8a..7778de9d1 100644 --- a/go.sum +++ b/go.sum @@ -1267,8 +1267,8 @@ github.com/yuin/goldmark-emoji v1.0.3 h1:aLRkLHOuBR2czCY4R8olwMjID+tENfhyFDMCRhb github.com/yuin/goldmark-emoji v1.0.3/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= -github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.16.0 h1:xPKEhst+BW5D0wxebMZkxgapvOE/dw7bFTlgSc9nD6w= +github.com/zclconf/go-cty v1.16.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= github.com/zealic/xignore v0.3.3 h1:EpLXUgZY/JEzFkTc+Y/VYypzXtNz+MSOMVCGW5Q4CKQ= From 6bbab1dc3f12f38b25bf4cae492368655535148e Mon Sep 17 00:00:00 2001 From: aknysh Date: Sun, 5 Jan 2025 13:58:28 -0500 Subject: [PATCH 18/32] updates --- go.mod | 4 +-- go.sum | 8 +++--- internal/exec/describe_component.go | 30 ++++++++++++++++++--- pkg/utils/yq_test.go | 42 +++++++++++++++++------------ pkg/utils/yq_utils.go | 31 ++++++++++++++++++++- 5 files changed, 88 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index 6f0b5b99a..12e368bd5 100644 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 github.com/zclconf/go-cty v1.16.0 - golang.org/x/term v0.27.0 + golang.org/x/term v0.28.0 gopkg.in/yaml.v3 v3.0.1 mvdan.cc/sh/v3 v3.10.0 ) @@ -263,7 +263,7 @@ require ( golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.23.0 // indirect diff --git a/go.sum b/go.sum index 7778de9d1..707c8c6f3 100644 --- a/go.sum +++ b/go.sum @@ -1598,15 +1598,15 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/internal/exec/describe_component.go b/internal/exec/describe_component.go index 099564b74..d29d5ee12 100644 --- a/internal/exec/describe_component.go +++ b/internal/exec/describe_component.go @@ -7,6 +7,7 @@ import ( cfg "github.com/cloudposse/atmos/pkg/config" "github.com/cloudposse/atmos/pkg/schema" + u "github.com/cloudposse/atmos/pkg/utils" ) // ExecuteDescribeComponentCmd executes `describe component` command @@ -42,6 +43,11 @@ func ExecuteDescribeComponentCmd(cmd *cobra.Command, args []string) error { return err } + query, err := flags.GetString("query") + if err != nil { + return err + } + component := args[0] componentSection, err := ExecuteDescribeComponent(component, stack, processTemplates) @@ -49,9 +55,27 @@ func ExecuteDescribeComponentCmd(cmd *cobra.Command, args []string) error { return err } - err = printOrWriteToFile(format, file, componentSection) - if err != nil { - return err + if query != "" { + var configAndStacksInfo schema.ConfigAndStacksInfo + atmosConfig, err := cfg.InitCliConfig(configAndStacksInfo, true) + if err != nil { + return err + } + + res, err := u.EvaluateYqExpression(atmosConfig, componentSection, query) + if err != nil { + return err + } + + err = printOrWriteToFile(format, file, res) + if err != nil { + return err + } + } else { + err = printOrWriteToFile(format, file, componentSection) + if err != nil { + return err + } } return nil diff --git a/pkg/utils/yq_test.go b/pkg/utils/yq_test.go index b83af0108..c8937aa47 100644 --- a/pkg/utils/yq_test.go +++ b/pkg/utils/yq_test.go @@ -4,6 +4,8 @@ import ( "testing" "github.com/stretchr/testify/assert" + + "github.com/cloudposse/atmos/pkg/schema" ) func TestEvaluateYqExpression(t *testing.T) { @@ -41,12 +43,18 @@ vars: vpc_flow_logs_traffic_type: ALL ` + atmosConfig := schema.AtmosConfiguration{ + Logs: schema.Logs{ + Level: "Trace", + }, + } + data, err := UnmarshalYAML[map[string]any](input) assert.Nil(t, err) assert.NotNil(t, data) yq := ".settings.test" - res, err := EvaluateYqExpression(data, yq) + res, err := EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, true, res) @@ -54,7 +62,7 @@ vars: assert.Nil(t, err) yq = ".settings.mode" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, "test", res) @@ -62,7 +70,7 @@ vars: assert.Nil(t, err) yq = ".vars.tags.atmos_component" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, "vpc", res) @@ -70,7 +78,7 @@ vars: assert.Nil(t, err) yq = ".vars.availability_zones.0" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, "us-east-2a", res) @@ -78,7 +86,7 @@ vars: assert.Nil(t, err) yq = ".vars.ipv4_primary_cidr_block" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, "10.8.0.0/18", res) @@ -86,7 +94,7 @@ vars: assert.Nil(t, err) yq = ".vars.enabled" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, true, res) @@ -94,11 +102,11 @@ vars: assert.Nil(t, err) yq = ".vars.enabled = false" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) yq = ".vars.enabled" - res, err = EvaluateYqExpression(res, yq) + res, err = EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, false, res) @@ -106,11 +114,11 @@ vars: assert.Nil(t, err) yq = ".vars.ipv4_primary_cidr_block = \"10.8.8.0/20\"" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) yq = ".vars.ipv4_primary_cidr_block" - res, err = EvaluateYqExpression(res, yq) + res, err = EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, "10.8.8.0/20", res) @@ -118,11 +126,11 @@ vars: assert.Nil(t, err) yq = ".vars.availability_zones.0 = \"us-east-2d\"" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) yq = ".vars.availability_zones.0" - res, err = EvaluateYqExpression(res, yq) + res, err = EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.NotNil(t, res) assert.Equal(t, "us-east-2d", res) @@ -130,29 +138,29 @@ vars: assert.Nil(t, err) yq = ".vars.enabled = false | .vars.tags.terraform_workspace = \"plat-ue2-prod-override\" | .vars.max_subnet_count = 2 | .settings.test = false" - res, err = EvaluateYqExpression(data, yq) + res, err = EvaluateYqExpression(atmosConfig, data, yq) assert.Nil(t, err) assert.NotNil(t, res) yq = ".vars.enabled" - res1, err := EvaluateYqExpression(res, yq) + res1, err := EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.Equal(t, false, res1) err = PrintAsYAML(res1) assert.Nil(t, err) yq = ".vars.tags.terraform_workspace" - res2, err := EvaluateYqExpression(res, yq) + res2, err := EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.Equal(t, "plat-ue2-prod-override", res2) err = PrintAsYAML(res2) assert.Nil(t, err) yq = ".vars.max_subnet_count" - res3, err := EvaluateYqExpression(res, yq) + res3, err := EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.Equal(t, 2, res3) err = PrintAsYAML(res3) assert.Nil(t, err) yq = ".settings.test" - res4, err := EvaluateYqExpression(res, yq) + res4, err := EvaluateYqExpression(atmosConfig, res, yq) assert.Nil(t, err) assert.Equal(t, false, res4) err = PrintAsYAML(res4) diff --git a/pkg/utils/yq_utils.go b/pkg/utils/yq_utils.go index f96a3ef10..4e8169f73 100644 --- a/pkg/utils/yq_utils.go +++ b/pkg/utils/yq_utils.go @@ -7,10 +7,39 @@ package utils import ( "fmt" + "github.com/mikefarah/yq/v4/pkg/yqlib" + "gopkg.in/op/go-logging.v1" + + "github.com/cloudposse/atmos/pkg/schema" ) -func EvaluateYqExpression(data any, yq string) (any, error) { +type logBackend struct{} + +func (n logBackend) Log(level logging.Level, i int, record *logging.Record) error { + return nil +} + +func (n logBackend) GetLevel(s string) logging.Level { + return logging.ERROR +} + +func (n logBackend) SetLevel(level logging.Level, s string) { +} + +func (n logBackend) IsEnabledFor(level logging.Level, s string) bool { + return false +} + +func EvaluateYqExpression(atmosConfig schema.AtmosConfiguration, data any, yq string) (any, error) { + // Use the `yqlib` default (chatty) logger only when Atmos Logs Level is set to `Trace` + // Otherwise, use the no-op logging backend + if atmosConfig.Logs.Level != LogLevelTrace { + logger := yqlib.GetLogger() + backend := logBackend{} + logger.SetBackend(backend) + } + evaluator := yqlib.NewStringEvaluator() yaml, err := ConvertToYAML(data) From de5c5fcb943aeb86a802f68b8f4903121d064937 Mon Sep 17 00:00:00 2001 From: aknysh Date: Sun, 5 Jan 2025 14:02:32 -0500 Subject: [PATCH 19/32] updates --- go.mod | 5 +++-- go.sum | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 12e368bd5..cd98c0c94 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a github.com/open-policy-agent/opa v1.0.0 - github.com/otiai10/copy v1.14.0 + github.com/otiai10/copy v1.14.1 github.com/pkg/errors v0.9.1 github.com/samber/lo v1.47.0 github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 @@ -52,6 +52,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/zclconf/go-cty v1.16.0 golang.org/x/term v0.28.0 + gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 gopkg.in/yaml.v3 v3.0.1 mvdan.cc/sh/v3 v3.10.0 ) @@ -207,6 +208,7 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/otiai10/mint v1.6.3 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect @@ -275,7 +277,6 @@ require ( google.golang.org/grpc v1.69.2 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a // indirect diff --git a/go.sum b/go.sum index 707c8c6f3..90635cce5 100644 --- a/go.sum +++ b/go.sum @@ -1093,10 +1093,10 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= -github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= -github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= -github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= +github.com/otiai10/copy v1.14.1 h1:5/7E6qsUMBaH5AnQ0sSLzzTg1oTECmcCmT6lvF45Na8= +github.com/otiai10/copy v1.14.1/go.mod h1:oQwrEDDOci3IM8dJF0d8+jnbfPDllW6vUjNc3DoZm9I= +github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs= +github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= From ad43eea0dbd6975ae115bd31b9cccaf47d7d008c Mon Sep 17 00:00:00 2001 From: aknysh Date: Sun, 5 Jan 2025 15:25:03 -0500 Subject: [PATCH 20/32] updates --- atmos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atmos.yaml b/atmos.yaml index 5d3492eeb..45a5b87fb 100644 --- a/atmos.yaml +++ b/atmos.yaml @@ -15,7 +15,7 @@ # are independent settings (supporting both absolute and relative paths). # If 'base_path' is provided, 'components.terraform.base_path', 'components.helmfile.base_path', 'stacks.base_path' and 'workflows.base_path' # are considered paths relative to 'base_path'. -base_path: "." +base_path: "./examples/quick-start-advanced" vendor: # Path to vendor configuration file or directory containing vendor files From e1268ea6dceed5992f6bacc8211374550804d273 Mon Sep 17 00:00:00 2001 From: aknysh Date: Mon, 6 Jan 2025 18:54:47 -0500 Subject: [PATCH 21/32] updates --- examples/quick-start-advanced/Dockerfile | 4 ++-- website/docs/integrations/atlantis.mdx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index 3b670e508..08e3aae19 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -1,12 +1,12 @@ # Geodesic: https://github.com/cloudposse/geodesic/ -ARG GEODESIC_VERSION=3.4.2 +ARG GEODESIC_VERSION=3.4.0 ARG GEODESIC_OS=debian # Atmos # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.136.0 +ARG ATMOS_VERSION=1.137.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index 87b6f1ba6..b3cec7a44 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.136.0 + ATMOS_VERSION: 1.137.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From c3ba22129991db98d4c91beee4a10f471ca5a9b4 Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 12:08:45 -0500 Subject: [PATCH 22/32] updates --- examples/quick-start-advanced/Dockerfile | 2 +- go.mod | 12 +++++++- go.sum | 37 +++++++++++++++++++++--- website/docs/integrations/atlantis.mdx | 2 +- 4 files changed, 46 insertions(+), 7 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index 08e3aae19..b7b3bb912 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -6,7 +6,7 @@ ARG GEODESIC_OS=debian # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.137.0 +ARG ATMOS_VERSION=1.138.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/go.mod b/go.mod index 6073e1d56..cd98c0c94 100644 --- a/go.mod +++ b/go.mod @@ -36,6 +36,7 @@ require ( github.com/kubescape/go-git-url v0.0.30 github.com/lrstanley/bubblezone v0.0.0-20241221063659-0f12a2876fb2 github.com/mattn/go-isatty v0.0.20 + github.com/mikefarah/yq/v4 v4.44.6 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-wordwrap v1.0.1 github.com/mitchellh/mapstructure v1.5.0 @@ -51,6 +52,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/zclconf/go-cty v1.16.0 golang.org/x/term v0.28.0 + gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 gopkg.in/yaml.v3 v3.0.1 mvdan.cc/sh/v3 v3.10.0 ) @@ -67,9 +69,11 @@ require ( github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/Shopify/ejson v1.3.3 // indirect + github.com/a8m/envsubst v1.4.2 // indirect github.com/agext/levenshtein v1.2.2 // indirect github.com/agnivade/levenshtein v1.2.0 // indirect github.com/alecthomas/chroma/v2 v2.14.0 // indirect + github.com/alecthomas/participle/v2 v2.1.1 // indirect github.com/apparentlymart/go-cidr v1.1.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect @@ -116,6 +120,7 @@ require ( github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dimchansky/utfbom v1.1.1 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect github.com/docker/cli v27.1.1+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect @@ -123,6 +128,7 @@ require ( github.com/docker/libkv v0.2.2-0.20180912205406-458977154600 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect + github.com/elliotchance/orderedmap v1.7.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -134,6 +140,8 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.3 // indirect + github.com/goccy/go-yaml v1.13.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect @@ -175,6 +183,7 @@ require ( github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jinzhu/copier v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/joho/godotenv v1.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -200,7 +209,7 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/otiai10/mint v1.6.3 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -234,6 +243,7 @@ require ( github.com/yashtewari/glob-intersection v0.2.0 // indirect github.com/yuin/goldmark v1.7.4 // indirect github.com/yuin/goldmark-emoji v1.0.3 // indirect + github.com/yuin/gopher-lua v1.1.1 // indirect github.com/zealic/xignore v0.3.3 // indirect go.etcd.io/bbolt v1.3.10 // indirect go.opencensus.io v0.24.0 // indirect diff --git a/go.sum b/go.sum index 7ec431d45..90635cce5 100644 --- a/go.sum +++ b/go.sum @@ -261,6 +261,8 @@ github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXx github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/Shopify/ejson v1.3.3 h1:dPzgmvFhUPTJIzwdF5DaqbwW1dWaoR8ADKRdSTy6Mss= github.com/Shopify/ejson v1.3.3/go.mod h1:VZMUtDzvBW/PAXRUF5fzp1ffb1ucT8MztrZXXLYZurw= +github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg= +github.com/a8m/envsubst v1.4.2/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.2.0 h1:U9L4IOT0Y3i0TIlUIDJ7rVUziKi/zPbrJGaFrtYH3SY= @@ -271,6 +273,8 @@ github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbf github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E= github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I= +github.com/alecthomas/participle/v2 v2.1.1 h1:hrjKESvSqGHzRb4yW1ciisFJ4p3MGYih6icjJvbsmV8= +github.com/alecthomas/participle/v2 v2.1.1/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -495,6 +499,7 @@ github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkz github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo= github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= @@ -517,6 +522,8 @@ github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/elewis787/boa v0.1.2 h1:xNKWJ9X2MWbLSLLOA31N4l1Jdec9FZSkbTvXy3C8rw4= github.com/elewis787/boa v0.1.2/go.mod h1:EFDKuz/bYgQAKJQBnfHmB9i+bBzsaZJyyoSmOz6eBZI= +github.com/elliotchance/orderedmap v1.7.0 h1:FirjcM/NbcyudJhaIF9MG/RjIh5XHm2xb1SFquZ8k0g= +github.com/elliotchance/orderedmap v1.7.0/go.mod h1:wsDwEaX5jEoyhbs7x93zk2H/qv0zwuhg4inXhDkYqys= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -553,6 +560,8 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -590,9 +599,15 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA= +github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -605,6 +620,10 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.13.0 h1:0Wtp0FZLd7Sm8gERmR9S6Iczzb3vItJj7NaHmFg8pTs= +github.com/goccy/go-yaml v1.13.0/go.mod h1:IjYwxUiJDoqpx2RmbdjMUceGHZwYLon3sfOGl5Hi9lc= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -912,6 +931,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= +github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= +github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -960,6 +981,8 @@ github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LE github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1007,6 +1030,8 @@ github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKju github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= +github.com/mikefarah/yq/v4 v4.44.6 h1:yuu+sH3KX1R3pQCP/vsDao8uNcuiXcjvC7XtoekCV0g= +github.com/mikefarah/yq/v4 v4.44.6/go.mod h1:sva/xvSlW4mKRtRm9nwIS40A+LqNbl46ezjBHYyFtLo= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -1075,14 +1100,16 @@ github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAq github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -1201,8 +1228,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -1240,6 +1265,8 @@ github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark-emoji v1.0.3 h1:aLRkLHOuBR2czCY4R8olwMjID+tENfhyFDMCRhbIQY4= github.com/yuin/goldmark-emoji v1.0.3/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U= +github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= +github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/zclconf/go-cty v1.16.0 h1:xPKEhst+BW5D0wxebMZkxgapvOE/dw7bFTlgSc9nD6w= github.com/zclconf/go-cty v1.16.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= @@ -1929,6 +1956,8 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE= +gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index 1bdc9514a..9b937c687 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.137.0 + ATMOS_VERSION: 1.138.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From 98294c61071ea688b0ac8334e6f53f7c890f635e Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 14:00:27 -0500 Subject: [PATCH 23/32] updates --- examples/quick-start-advanced/Dockerfile | 2 +- website/docs/integrations/atlantis.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index b7b3bb912..a3be63769 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -6,7 +6,7 @@ ARG GEODESIC_OS=debian # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.138.0 +ARG ATMOS_VERSION=1.139.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index 9b937c687..5dfe686aa 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.138.0 + ATMOS_VERSION: 1.139.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From da5a237fef84f97f2f64b79bed36fc31fb46373e Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 18:59:16 -0500 Subject: [PATCH 24/32] updates --- internal/exec/describe_component.go | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/internal/exec/describe_component.go b/internal/exec/describe_component.go index d29d5ee12..a52796fec 100644 --- a/internal/exec/describe_component.go +++ b/internal/exec/describe_component.go @@ -55,27 +55,25 @@ func ExecuteDescribeComponentCmd(cmd *cobra.Command, args []string) error { return err } - if query != "" { - var configAndStacksInfo schema.ConfigAndStacksInfo - atmosConfig, err := cfg.InitCliConfig(configAndStacksInfo, true) - if err != nil { - return err - } + var res any - res, err := u.EvaluateYqExpression(atmosConfig, componentSection, query) + if query != "" { + atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, true) if err != nil { return err } - err = printOrWriteToFile(format, file, res) + res, err = u.EvaluateYqExpression(atmosConfig, componentSection, query) if err != nil { return err } } else { - err = printOrWriteToFile(format, file, componentSection) - if err != nil { - return err - } + res = componentSection + } + + err = printOrWriteToFile(format, file, res) + if err != nil { + return err } return nil From 437af8fdbcc94d11f9a50fb4fb3dc7f1a93d4afb Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 19:05:27 -0500 Subject: [PATCH 25/32] updates --- internal/exec/describe_affected.go | 63 +++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/internal/exec/describe_affected.go b/internal/exec/describe_affected.go index 47ce0ed5a..e492ff11b 100644 --- a/internal/exec/describe_affected.go +++ b/internal/exec/describe_affected.go @@ -32,6 +32,7 @@ type DescribeAffectedCmdArgs struct { Verbose bool Upload bool Stack string + Query string } func parseDescribeAffectedCliArgs(cmd *cobra.Command, args []string) (DescribeAffectedCmdArgs, error) { @@ -153,6 +154,11 @@ func parseDescribeAffectedCliArgs(cmd *cobra.Command, args []string) (DescribeAf } } + query, err := flags.GetString("query") + if err != nil { + return DescribeAffectedCmdArgs{}, err + } + result := DescribeAffectedCmdArgs{ CLIConfig: atmosConfig, CloneTargetRef: cloneTargetRef, @@ -170,6 +176,7 @@ func parseDescribeAffectedCliArgs(cmd *cobra.Command, args []string) (DescribeAf Verbose: verbose, Upload: upload, Stack: stack, + Query: query, } return result, nil @@ -231,39 +238,57 @@ func ExecuteDescribeAffectedCmd(cmd *cobra.Command, args []string) error { } } - a.Logger.Trace("\nAffected components and stacks: \n") + if a.Query == "" { + a.Logger.Trace("\nAffected components and stacks: \n") - err = printOrWriteToFile(a.Format, a.OutputFile, affected) - if err != nil { - return err - } - - if a.Upload { - // Parse the repo URL - gitURL, err := giturl.NewGitURL(repoUrl) + err = printOrWriteToFile(a.Format, a.OutputFile, affected) if err != nil { return err } - apiClient, err := pro.NewAtmosProAPIClientFromEnv(a.Logger) + if a.Upload { + // Parse the repo URL + gitURL, err := giturl.NewGitURL(repoUrl) + if err != nil { + return err + } + + apiClient, err := pro.NewAtmosProAPIClientFromEnv(a.Logger) + if err != nil { + return err + } + + req := pro.AffectedStacksUploadRequest{ + HeadSHA: headHead.Hash().String(), + BaseSHA: baseHead.Hash().String(), + RepoURL: repoUrl, + RepoName: gitURL.GetRepoName(), + RepoOwner: gitURL.GetOwnerName(), + RepoHost: gitURL.GetHostName(), + Stacks: affected, + } + + err = apiClient.UploadAffectedStacks(req) + if err != nil { + return err + } + } + } else { + atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, true) if err != nil { return err } - req := pro.AffectedStacksUploadRequest{ - HeadSHA: headHead.Hash().String(), - BaseSHA: baseHead.Hash().String(), - RepoURL: repoUrl, - RepoName: gitURL.GetRepoName(), - RepoOwner: gitURL.GetOwnerName(), - RepoHost: gitURL.GetHostName(), - Stacks: affected, + res, err := u.EvaluateYqExpression(atmosConfig, affected, a.Query) + if err != nil { + return err } - err = apiClient.UploadAffectedStacks(req) + err = printOrWriteToFile(a.Format, a.OutputFile, res) if err != nil { return err } } + return nil } From 7433f9330b1a86968e05a8ff5d57a644d7bc5f8a Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 19:16:19 -0500 Subject: [PATCH 26/32] updates --- internal/exec/describe_config.go | 19 ++++++++++++++++++- internal/exec/describe_stacks.go | 20 ++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/internal/exec/describe_config.go b/internal/exec/describe_config.go index 0c39ba490..e71a9cd12 100644 --- a/internal/exec/describe_config.go +++ b/internal/exec/describe_config.go @@ -1,6 +1,7 @@ package exec import ( + u "github.com/cloudposse/atmos/pkg/utils" "github.com/spf13/cobra" cfg "github.com/cloudposse/atmos/pkg/config" @@ -15,6 +16,11 @@ func ExecuteDescribeConfigCmd(cmd *cobra.Command, args []string) error { return err } + query, err := flags.GetString("query") + if err != nil { + return err + } + info, err := ProcessCommandLineArgs("", cmd, args, nil) if err != nil { return err @@ -25,7 +31,18 @@ func ExecuteDescribeConfigCmd(cmd *cobra.Command, args []string) error { return err } - err = printOrWriteToFile(format, "", atmosConfig) + var res any + + if query != "" { + res, err = u.EvaluateYqExpression(atmosConfig, atmosConfig, query) + if err != nil { + return err + } + } else { + res = atmosConfig + } + + err = printOrWriteToFile(format, "", res) if err != nil { return err } diff --git a/internal/exec/describe_stacks.go b/internal/exec/describe_stacks.go index 96bae5444..0fe2a0ec2 100644 --- a/internal/exec/describe_stacks.go +++ b/internal/exec/describe_stacks.go @@ -55,7 +55,7 @@ func ExecuteDescribeStacksCmd(cmd *cobra.Command, args []string) error { return err } - includeEmptyStacks, err := cmd.Flags().GetBool("include-empty-stacks") + includeEmptyStacks, err := flags.GetBool("include-empty-stacks") if err != nil { return err } @@ -94,6 +94,11 @@ func ExecuteDescribeStacksCmd(cmd *cobra.Command, args []string) error { return err } + query, err := flags.GetString("query") + if err != nil { + return err + } + finalStacksMap, err := ExecuteDescribeStacks( atmosConfig, filterByStack, @@ -108,7 +113,18 @@ func ExecuteDescribeStacksCmd(cmd *cobra.Command, args []string) error { return err } - err = printOrWriteToFile(format, file, finalStacksMap) + var res any + + if query != "" { + res, err = u.EvaluateYqExpression(atmosConfig, finalStacksMap, query) + if err != nil { + return err + } + } else { + res = finalStacksMap + } + + err = printOrWriteToFile(format, file, res) if err != nil { return err } From 571f30da4b904be1969f629d9815419b8bcb2fc1 Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 19:25:58 -0500 Subject: [PATCH 27/32] updates --- internal/exec/describe_dependents.go | 19 ++++++++++++++++++- internal/exec/describe_workflows.go | 23 ++++++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/internal/exec/describe_dependents.go b/internal/exec/describe_dependents.go index 65f74e346..d0d62e554 100644 --- a/internal/exec/describe_dependents.go +++ b/internal/exec/describe_dependents.go @@ -2,6 +2,7 @@ package exec import ( "fmt" + u "github.com/cloudposse/atmos/pkg/utils" "reflect" "strings" @@ -51,6 +52,11 @@ func ExecuteDescribeDependentsCmd(cmd *cobra.Command, args []string) error { return err } + query, err := flags.GetString("query") + if err != nil { + return err + } + component := args[0] dependents, err := ExecuteDescribeDependents(atmosConfig, component, stack, false) @@ -58,7 +64,18 @@ func ExecuteDescribeDependentsCmd(cmd *cobra.Command, args []string) error { return err } - err = printOrWriteToFile(format, file, dependents) + var res any + + if query != "" { + res, err = u.EvaluateYqExpression(atmosConfig, dependents, query) + if err != nil { + return err + } + } else { + res = dependents + } + + err = printOrWriteToFile(format, file, res) if err != nil { return err } diff --git a/internal/exec/describe_workflows.go b/internal/exec/describe_workflows.go index 0b93153f8..eb0306c93 100644 --- a/internal/exec/describe_workflows.go +++ b/internal/exec/describe_workflows.go @@ -2,6 +2,7 @@ package exec import ( "fmt" + u "github.com/cloudposse/atmos/pkg/utils" cfg "github.com/cloudposse/atmos/pkg/config" "github.com/spf13/cobra" @@ -47,18 +48,34 @@ func ExecuteDescribeWorkflowsCmd(cmd *cobra.Command, args []string) error { outputType = "list" } + query, err := flags.GetString("query") + if err != nil { + return err + } + describeWorkflowsList, describeWorkflowsMap, describeWorkflowsAll, err := ExecuteDescribeWorkflows(atmosConfig) if err != nil { return err } + var res any + if outputType == "list" { - err = printOrWriteToFile(format, "", describeWorkflowsList) + res = describeWorkflowsList } else if outputType == "map" { - err = printOrWriteToFile(format, "", describeWorkflowsMap) + res = describeWorkflowsMap } else { - err = printOrWriteToFile(format, "", describeWorkflowsAll) + res = describeWorkflowsAll + } + + if query != "" { + res, err = u.EvaluateYqExpression(atmosConfig, res, query) + if err != nil { + return err + } } + + err = printOrWriteToFile(format, "", res) if err != nil { return err } From 5ce9afc583ea7988fe9714e5ebbea2cb72754ab9 Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 20:00:39 -0500 Subject: [PATCH 28/32] updates --- cmd/about.go | 5 ++++- cmd/describe.go | 2 ++ cmd/list_components.go | 8 +++++++- cmd/root.go | 9 +++++---- cmd/support.go | 6 +++++- internal/exec/utils.go | 15 --------------- pkg/config/const.go | 3 +-- pkg/schema/schema.go | 2 -- 8 files changed, 24 insertions(+), 26 deletions(-) diff --git a/cmd/about.go b/cmd/about.go index 908cd7e18..5f15a2bbd 100644 --- a/cmd/about.go +++ b/cmd/about.go @@ -35,7 +35,10 @@ var aboutCmd = &cobra.Command{ return fmt.Errorf("failed to render about documentation: %w", err) } - fmt.Fprint(os.Stdout, out) + _, err = fmt.Fprint(os.Stdout, out) + if err != nil { + return err + } return nil }, } diff --git a/cmd/describe.go b/cmd/describe.go index 4e134f584..6411de4ee 100644 --- a/cmd/describe.go +++ b/cmd/describe.go @@ -13,5 +13,7 @@ var describeCmd = &cobra.Command{ } func init() { + describeCmd.PersistentFlags().StringP("query", "q", "", "Query the result of an 'atmos describe' command using 'yq' expressions: atmos describe --query ") + RootCmd.AddCommand(describeCmd) } diff --git a/cmd/list_components.go b/cmd/list_components.go index 029308fc4..4ed2a0b5d 100644 --- a/cmd/list_components.go +++ b/cmd/list_components.go @@ -24,7 +24,13 @@ var listComponentsCmd = &cobra.Command{ // Check Atmos configuration checkAtmosConfig() - stackFlag, _ := cmd.Flags().GetString("stack") + flags := cmd.Flags() + + stackFlag, err := flags.GetString("stack") + if err != nil { + u.PrintMessageInColor(fmt.Sprintf("Error getting the 'stack' flag: %v", err), color.New(color.FgRed)) + return + } configAndStacksInfo := schema.ConfigAndStacksInfo{} atmosConfig, err := config.InitCliConfig(configAndStacksInfo, true) diff --git a/cmd/root.go b/cmd/root.go index e3ed29294..460ed4b84 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -109,11 +109,12 @@ func init() { RootCmd.PersistentFlags().String("logs-level", "Info", "Logs level. Supported log levels are Trace, Debug, Info, Warning, Off. If the log level is set to Off, Atmos will not log any messages") RootCmd.PersistentFlags().String("logs-file", "/dev/stdout", "The file to write Atmos logs to. Logs can be written to any file or any standard file descriptor, including '/dev/stdout', '/dev/stderr' and '/dev/null'") - RootCmd.PersistentFlags().String("override", "", "Override attributes in Atmos sections including 'vars', 'settings', 'backend': atmos terraform apply -s --override '.vars.a = \"foo\"'") - RootCmd.PersistentFlags().StringP("query", "q", "", "Query the result of an Atmos command using 'yq' syntax: atmos describe component -s --query '.vars.a'") - // Set custom usage template - templates.SetCustomUsageFunc(RootCmd) + err := templates.SetCustomUsageFunc(RootCmd) + if err != nil { + u.LogErrorAndExit(atmosConfig, err) + } + initCobraConfig() } diff --git a/cmd/support.go b/cmd/support.go index a0898ea74..2cc12cf04 100644 --- a/cmd/support.go +++ b/cmd/support.go @@ -35,7 +35,11 @@ var supportCmd = &cobra.Command{ return fmt.Errorf("failed to render support documentation: %w", err) } - fmt.Fprint(os.Stdout, out) + _, err = fmt.Fprint(os.Stdout, out) + if err != nil { + return err + } + return nil }, } diff --git a/internal/exec/utils.go b/internal/exec/utils.go index 364301923..57d0dbaab 100644 --- a/internal/exec/utils.go +++ b/internal/exec/utils.go @@ -50,7 +50,6 @@ var ( cfg.RedirectStdErrFlag, cfg.LogsLevelFlag, cfg.LogsFileFlag, - cfg.OverrideFlag, cfg.QueryFlag, } ) @@ -221,7 +220,6 @@ func ProcessCommandLineArgs( configAndStacksInfo.LogsLevel = argsAndFlagsInfo.LogsLevel configAndStacksInfo.LogsFile = argsAndFlagsInfo.LogsFile configAndStacksInfo.SettingsListMergeStrategy = argsAndFlagsInfo.SettingsListMergeStrategy - configAndStacksInfo.Override = argsAndFlagsInfo.Override configAndStacksInfo.Query = argsAndFlagsInfo.Query flags := cmd.Flags() @@ -967,19 +965,6 @@ func processArgsAndFlags( info.SettingsListMergeStrategy = settingsListMergeStrategyParts[1] } - if arg == cfg.OverrideFlag { - if len(inputArgsAndFlags) <= (i + 1) { - return info, fmt.Errorf("invalid flag: %s", arg) - } - info.Override = inputArgsAndFlags[i+1] - } else if strings.HasPrefix(arg+"=", cfg.OverrideFlag) { - var parts = strings.Split(arg, "=") - if len(parts) != 2 { - return info, fmt.Errorf("invalid flag: %s", arg) - } - info.Override = parts[1] - } - if arg == cfg.QueryFlag { if len(inputArgsAndFlags) <= (i + 1) { return info, fmt.Errorf("invalid flag: %s", arg) diff --git a/pkg/config/const.go b/pkg/config/const.go index e0088fd01..34b3b7ef5 100644 --- a/pkg/config/const.go +++ b/pkg/config/const.go @@ -65,8 +65,7 @@ const ( LogsLevelFlag = "--logs-level" LogsFileFlag = "--logs-file" - OverrideFlag = "--override" - QueryFlag = "--query" + QueryFlag = "--query" SettingsListMergeStrategyFlag = "--settings-list-merge-strategy" diff --git a/pkg/schema/schema.go b/pkg/schema/schema.go index ec50df63e..fd561ae37 100644 --- a/pkg/schema/schema.go +++ b/pkg/schema/schema.go @@ -189,7 +189,6 @@ type ArgsAndFlagsInfo struct { LogsLevel string LogsFile string SettingsListMergeStrategy string - Override string Query string } @@ -255,7 +254,6 @@ type ConfigAndStacksInfo struct { LogsLevel string LogsFile string SettingsListMergeStrategy string - Override string Query string } From 49c779e24288aaf8f14366e648294321283bd172 Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 20:25:22 -0500 Subject: [PATCH 29/32] updates --- cmd/describe.go | 2 +- .../docs/cli/commands/describe/describe-affected.mdx | 2 ++ .../cli/commands/describe/describe-component.mdx | 5 +++++ .../docs/cli/commands/describe/describe-config.mdx | 8 +++++--- .../cli/commands/describe/describe-dependents.mdx | 12 +++++++----- .../docs/cli/commands/describe/describe-stacks.mdx | 4 +++- .../cli/commands/describe/describe-workflows.mdx | 10 ++++++---- 7 files changed, 29 insertions(+), 14 deletions(-) diff --git a/cmd/describe.go b/cmd/describe.go index 6411de4ee..2d30fb769 100644 --- a/cmd/describe.go +++ b/cmd/describe.go @@ -13,7 +13,7 @@ var describeCmd = &cobra.Command{ } func init() { - describeCmd.PersistentFlags().StringP("query", "q", "", "Query the result of an 'atmos describe' command using 'yq' expressions: atmos describe --query ") + describeCmd.PersistentFlags().StringP("query", "q", "", "Query the results of an 'atmos describe' command using 'yq' expressions: atmos describe --query ") RootCmd.AddCommand(describeCmd) } diff --git a/website/docs/cli/commands/describe/describe-affected.mdx b/website/docs/cli/commands/describe/describe-affected.mdx index 85f4353e4..75a2effc0 100644 --- a/website/docs/cli/commands/describe/describe-affected.mdx +++ b/website/docs/cli/commands/describe/describe-affected.mdx @@ -107,6 +107,7 @@ atmos describe affected --include-dependents=true atmos describe affected --include-settings=true atmos describe affected --stack=plat-ue2-prod atmos describe affected --upload=true +atmos describe affected --query ``` # Example Output @@ -210,6 +211,7 @@ Affected components and stacks: | `--include-dependents` | Include the dependent components and stacks.
`atmos describe affected --include-dependents=true` | no | | `--include-settings` | Include the `settings` section for each affected component.
`atmos describe affected --include-settings=true` | no | | `--upload` | Upload the affected components and stacks to a specified HTTP endpoint.

`atmos describe affected --upload=true`

Atmos will perform an HTTP POST request
to the URL `${ATMOS_PRO_BASE_URL}/${ATMOS_PRO_ENDPOINT}`,
where the base URL is defined by the `ATMOS_PRO_BASE_URL` environment variable,
and the URL path is defined by the `ATMOS_PRO_ENDPOINT`environment variable. | no | +| `--query` | Query the results of the command using `yq` expressions.

`atmos describe affected --query=`.

For more details, refer to https://mikefarah.gitbook.io/yq | no | ## Output diff --git a/website/docs/cli/commands/describe/describe-component.mdx b/website/docs/cli/commands/describe/describe-component.mdx index 9f2e55b36..662f0cfbc 100644 --- a/website/docs/cli/commands/describe/describe-component.mdx +++ b/website/docs/cli/commands/describe/describe-component.mdx @@ -43,6 +43,10 @@ atmos describe component echo-server -s tenant1-ue2-staging atmos describe component test/test-component-override -s tenant2-ue2-prod atmos describe component vpc -s tenant1-ue2-dev --process-templates=false + +atmos describe component vpc -s plat-ue2-prod --query .vars.tags + +atmos describe component vpc -s plat-ue2-prod -q .settings ``` ## Arguments @@ -59,6 +63,7 @@ atmos describe component vpc -s tenant1-ue2-dev --process-templates=false | `--format` | Output format: `yaml` or `json` (`yaml` is default) | `-f` | no | | `--file` | If specified, write the result to the file | | no | | `--process-templates` | Enable/disable processing of `Go` templates
in Atmos stacks manifests
when executing the command.
Use the flag to see the component configuration
before and after the templates are processed.
If the flag is not provided, it's set to `true` by default | | no | +| `--query` | Query the results of the command using `yq` expressions.

`atmos describe component -s --query .vars.tags`.

For more details, refer to https://mikefarah.gitbook.io/yq | `-q` | no | ## Output diff --git a/website/docs/cli/commands/describe/describe-config.mdx b/website/docs/cli/commands/describe/describe-config.mdx index a75e7b204..2b2fafdf4 100644 --- a/website/docs/cli/commands/describe/describe-config.mdx +++ b/website/docs/cli/commands/describe/describe-config.mdx @@ -35,10 +35,12 @@ atmos describe config atmos describe config -f yaml atmos describe config --format yaml atmos describe config -f json +atmos describe config --query ``` ## Flags -| Flag | Description | Alias | Required | -|:------------|:----------------------------------------------------|:------|:---------| -| `--format` | Output format: `json` or `yaml` (`json` is default) | `-f` | no | +| Flag | Description | Alias | Required | +|:-----------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------|:---------| +| `--format` | Output format: `json` or `yaml` (`json` is default) | `-f` | no | +| `--query` | Query the results of the command using `yq` expressions.

`atmos describe config --query `.

For more details, refer to https://mikefarah.gitbook.io/yq | `-q` | no | diff --git a/website/docs/cli/commands/describe/describe-dependents.mdx b/website/docs/cli/commands/describe/describe-dependents.mdx index 47a2d7dba..ca1d3ab41 100644 --- a/website/docs/cli/commands/describe/describe-dependents.mdx +++ b/website/docs/cli/commands/describe/describe-dependents.mdx @@ -241,6 +241,7 @@ atmos describe dependents test/test-component -s tenant1-ue2-dev --format yaml atmos describe dependents test/test-component -s tenant1-ue2-test-1 -f yaml atmos describe dependents test/test-component -s tenant1-ue2-test-1 --file dependents.json atmos describe dependents test/test-component -s tenant1-ue2-test-1 --format yaml --file dependents.yaml +atmos describe dependents test/test-component -s tenant1-ue2-test-1 --query ``` ## Arguments @@ -251,11 +252,12 @@ atmos describe dependents test/test-component -s tenant1-ue2-test-1 --format yam ## Flags -| Flag | Description | Alias | Required | -| :--------- | :-------------------------------------------------- | :---- | :------- | -| `--stack` | Atmos stack | `-s` | yes | -| `--format` | Output format: `json` or `yaml` (`json` is default) | `-f` | no | -| `--file` | If specified, write the result to the file | | no | +| Flag | Description | Alias | Required | +|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------|:---------| +| `--stack` | Atmos stack | `-s` | yes | +| `--format` | Output format: `json` or `yaml` (`json` is default) | `-f` | no | +| `--file` | If specified, write the result to the file | | no | +| `--query` | Query the results of the command using `yq` expressions.

`atmos describe dependents -s --query `.

For more details, refer to https://mikefarah.gitbook.io/yq | `-q` | no | ## Output diff --git a/website/docs/cli/commands/describe/describe-stacks.mdx b/website/docs/cli/commands/describe/describe-stacks.mdx index 23f64478c..fc393ec85 100644 --- a/website/docs/cli/commands/describe/describe-stacks.mdx +++ b/website/docs/cli/commands/describe/describe-stacks.mdx @@ -44,10 +44,11 @@ atmos describe stacks --components=test/test-component-override-3 --sections=var atmos describe stacks --components=test/test-component-override-3 --sections=vars,settings --format=json --file=stacks.json atmos describe stacks --components=test/test-component-override-3 --sections=deps,vars -s=tenant2-ue2-staging atmos describe stacks --process-templates=false +atmos describe stacks --query ``` :::tip -Use `jq` to filter the output. +Use the `--query` flag (shorthand `-q`) to filter the output. ::: ## Flags @@ -61,3 +62,4 @@ Use `jq` to filter the output. | `--component-types` | Filter by specific component types: `terraform` or `helmfile` | | no | | `--sections` | Output only the specified component sections.
Available component sections: `backend`, `backend_type`, `deps`, `env`,
`inheritance`, `metadata`, `remote_state_backend`,
`remote_state_backend_type`, `settings`, `vars` | | no | | `--process-templates` | Enable/disable processing of `Go` templates in Atmos stacks manifests
when executing the command.
Use the flag to see the stack configurations
before and after the templates are processed.
If the flag is not provided, it's set to `true` by default | | no | +| `--query` | Query the results of the command using `yq` expressions.

`atmos describe stacks --query `.

For more details, refer to https://mikefarah.gitbook.io/yq | `-q` | no | diff --git a/website/docs/cli/commands/describe/describe-workflows.mdx b/website/docs/cli/commands/describe/describe-workflows.mdx index 4e0c82d82..9167fe5a6 100644 --- a/website/docs/cli/commands/describe/describe-workflows.mdx +++ b/website/docs/cli/commands/describe/describe-workflows.mdx @@ -36,14 +36,16 @@ atmos describe workflows -o all atmos describe workflows -o list --format json atmos describe workflows -o all -f yaml atmos describe workflows -f json +atmos describe workflows --query ``` ## Flags -| Flag | Description | Alias | Required | -|:-----------|:--------------------------------------------------------------------|:------|:---------| -| `--format` | Specify the output format: `yaml` or `json` (`yaml` is default) | `-f` | no | -| `--output` | Specify the output type: `list`, `map` or `all` (`list` is default) | `-o` | no | +| Flag | Description | Alias | Required | +|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------|:---------| +| `--format` | Specify the output format: `yaml` or `json` (`yaml` is default) | `-f` | no | +| `--output` | Specify the output type: `list`, `map` or `all` (`list` is default) | `-o` | no | +| `--query` | Query the results of the command using `yq` expressions.

`atmos describe workflows --query `.

For more details, refer to https://mikefarah.gitbook.io/yq | `-q` | no | When the `--output list` flag is passed (default), the output of the command is a list of objects. Each object has the following schema: From 1f26f29eadf1bd6fc265fa05e3d4762e4f134655 Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 20:27:21 -0500 Subject: [PATCH 30/32] updates --- atmos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atmos.yaml b/atmos.yaml index 45a5b87fb..3abb959f9 100644 --- a/atmos.yaml +++ b/atmos.yaml @@ -15,7 +15,7 @@ # are independent settings (supporting both absolute and relative paths). # If 'base_path' is provided, 'components.terraform.base_path', 'components.helmfile.base_path', 'stacks.base_path' and 'workflows.base_path' # are considered paths relative to 'base_path'. -base_path: "./examples/quick-start-advanced" +base_path: "" vendor: # Path to vendor configuration file or directory containing vendor files From c01a353ffc1958f0222817657f9d09ff7e82dfa5 Mon Sep 17 00:00:00 2001 From: aknysh Date: Tue, 7 Jan 2025 20:44:22 -0500 Subject: [PATCH 31/32] updates --- examples/quick-start-advanced/Dockerfile | 2 +- website/docs/integrations/atlantis.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/quick-start-advanced/Dockerfile b/examples/quick-start-advanced/Dockerfile index a3be63769..91ee4e9a0 100644 --- a/examples/quick-start-advanced/Dockerfile +++ b/examples/quick-start-advanced/Dockerfile @@ -6,7 +6,7 @@ ARG GEODESIC_OS=debian # https://atmos.tools/ # https://github.com/cloudposse/atmos # https://github.com/cloudposse/atmos/releases -ARG ATMOS_VERSION=1.139.0 +ARG ATMOS_VERSION=1.140.0 # Terraform: https://github.com/hashicorp/terraform/releases ARG TF_VERSION=1.5.7 diff --git a/website/docs/integrations/atlantis.mdx b/website/docs/integrations/atlantis.mdx index 5dfe686aa..3657bcaeb 100644 --- a/website/docs/integrations/atlantis.mdx +++ b/website/docs/integrations/atlantis.mdx @@ -673,7 +673,7 @@ on: branches: [ main ] env: - ATMOS_VERSION: 1.139.0 + ATMOS_VERSION: 1.140.0 ATMOS_CLI_CONFIG_PATH: ./ jobs: From a8a66f14513fc3fcf136734340855af89c173d30 Mon Sep 17 00:00:00 2001 From: aknysh Date: Wed, 8 Jan 2025 11:52:55 -0500 Subject: [PATCH 32/32] updates --- go.mod | 1 + 1 file changed, 1 insertion(+) diff --git a/go.mod b/go.mod index cd98c0c94..9593461ce 100644 --- a/go.mod +++ b/go.mod @@ -53,6 +53,7 @@ require ( github.com/zclconf/go-cty v1.16.0 golang.org/x/term v0.28.0 gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 + gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 mvdan.cc/sh/v3 v3.10.0 )