From d62491c4dc5c56d16162ed234f0774c65ebf145f Mon Sep 17 00:00:00 2001 From: Matt Calhoun Date: Tue, 21 Jan 2025 11:00:19 -0500 Subject: [PATCH 1/6] dev-2668: migrate to charmbracelet logger --- cmd/atlantis_generate_repo_config.go | 3 +- cmd/aws_eks_update_kubeconfig.go | 3 +- cmd/cmd_utils.go | 54 ++-- cmd/completion.go | 4 +- cmd/describe_affected.go | 3 +- cmd/describe_component.go | 5 +- cmd/describe_config.go | 3 +- cmd/describe_dependents.go | 5 +- cmd/describe_stacks.go | 3 +- cmd/describe_workflows.go | 3 +- cmd/docs.go | 24 +- cmd/helmfile.go | 7 +- cmd/helmfile_generate_varfile.go | 5 +- cmd/pro_lock.go | 3 +- cmd/pro_unlock.go | 3 +- cmd/root.go | 57 +++- cmd/terraform.go | 4 +- cmd/terraform_generate_backend.go | 5 +- cmd/terraform_generate_backends.go | 3 +- cmd/terraform_generate_varfile.go | 5 +- cmd/terraform_generate_varfiles.go | 5 +- cmd/validate_component.go | 5 +- cmd/validate_stacks.go | 3 +- cmd/vendor_diff.go | 3 +- cmd/vendor_pull.go | 3 +- cmd/version.go | 7 +- cmd/workflow.go | 16 +- go.sum | 257 ++++++++++++++++++ .../exec/atlantis_generate_repo_config.go | 6 +- internal/exec/aws_eks_update_kubeconfig.go | 2 +- internal/exec/describe_affected_utils.go | 58 ++-- internal/exec/describe_stacks.go | 4 +- internal/exec/file_utils.go | 4 +- internal/exec/helmfile.go | 40 +-- internal/exec/helmfile_generate_varfile.go | 6 +- internal/exec/oci_utils.go | 2 +- internal/exec/shell_utils.go | 40 +-- internal/exec/tar_utils.go | 4 +- internal/exec/template_funcs_component.go | 16 +- .../template_funcs_gomplate_datasource.go | 7 +- internal/exec/template_utils.go | 8 +- internal/exec/terraform.go | 50 ++-- internal/exec/terraform_clean.go | 22 +- internal/exec/terraform_generate_backend.go | 6 +- internal/exec/terraform_generate_backends.go | 4 +- internal/exec/terraform_generate_varfile.go | 6 +- internal/exec/terraform_generate_varfiles.go | 12 +- internal/exec/terraform_outputs.go | 56 ++-- internal/exec/terraform_utils.go | 2 +- internal/exec/utils.go | 11 +- internal/exec/validate_component.go | 6 +- internal/exec/validate_stacks.go | 4 +- internal/exec/vendor_component_utils.go | 10 +- internal/exec/vendor_model.go | 12 +- internal/exec/vendor_utils.go | 30 +- internal/exec/workflow_utils.go | 10 +- internal/exec/yaml_func_exec.go | 6 +- internal/exec/yaml_func_store.go | 8 +- internal/exec/yaml_func_template.go | 4 +- internal/exec/yaml_func_terraform_output.go | 8 +- main.go | 4 +- pkg/aws/aws_eks_update_kubeconfig.go | 2 +- pkg/component/component_processor.go | 10 +- pkg/config/cache.go | 3 +- pkg/config/config.go | 6 +- pkg/config/utils.go | 96 +++---- pkg/hooks/cmd.go | 13 +- pkg/spacelift/spacelift_stack_processor.go | 18 +- pkg/utils/hcl_utils.go | 4 +- pkg/utils/json_utils.go | 2 +- pkg/utils/log_utils.go | 118 ++------ pkg/utils/yaml_utils.go | 2 +- pkg/validate/validate_component_test.go | 8 +- pkg/validate/validate_stacks_test.go | 7 +- 74 files changed, 729 insertions(+), 529 deletions(-) diff --git a/cmd/atlantis_generate_repo_config.go b/cmd/atlantis_generate_repo_config.go index f190a1d08..bfba61459 100644 --- a/cmd/atlantis_generate_repo_config.go +++ b/cmd/atlantis_generate_repo_config.go @@ -1,7 +1,6 @@ package cmd import ( - "github.com/cloudposse/atmos/pkg/schema" "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" @@ -20,7 +19,7 @@ var atlantisGenerateRepoConfigCmd = &cobra.Command{ err := e.ExecuteAtlantisGenerateRepoConfigCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/aws_eks_update_kubeconfig.go b/cmd/aws_eks_update_kubeconfig.go index b421a0b21..37452d92e 100644 --- a/cmd/aws_eks_update_kubeconfig.go +++ b/cmd/aws_eks_update_kubeconfig.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -36,7 +35,7 @@ See https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html Run: func(cmd *cobra.Command, args []string) { err := e.ExecuteAwsEksUpdateKubeconfigCommand(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/cmd_utils.go b/cmd/cmd_utils.go index 64e7c7d1d..ac507b71d 100644 --- a/cmd/cmd_utils.go +++ b/cmd/cmd_utils.go @@ -139,13 +139,13 @@ func processCommandAliases( Run: func(cmd *cobra.Command, args []string) { err := cmd.ParseFlags(args) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } commandToRun := fmt.Sprintf("%s %s %s", os.Args[0], aliasCmd, strings.Join(args, " ")) err = e.ExecuteShell(atmosConfig, commandToRun, commandToRun, ".", nil, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } }, } @@ -181,11 +181,11 @@ func preCustomCommand( fmt.Sprintf("%d. %s %s %s\n", i+1, parentCommand.Use, commandConfig.Name, c.Name), ) } - u.LogInfo(schema.AtmosConfiguration{}, sb.String()) + u.LogInfo(sb.String()) os.Exit(1) } else { // truly invalid, nothing to do - u.LogError(schema.AtmosConfiguration{}, errors.New( + u.LogError(errors.New( "invalid command: no args, no steps, no sub-commands", )) os.Exit(1) @@ -217,7 +217,7 @@ func preCustomCommand( if len(args) > 0 { sb.WriteString(fmt.Sprintf("\nReceived %d argument(s): %s\n", len(args), strings.Join(args, ", "))) } - u.LogErrorAndExit(schema.AtmosConfiguration{}, errors.New(sb.String())) + u.LogErrorAndExit(errors.New(sb.String())) } // Merge user-supplied arguments with defaults @@ -232,7 +232,7 @@ func preCustomCommand( } else { // This theoretically shouldn't happen: sb.WriteString(fmt.Sprintf("Missing required argument '%s' with no default!\n", arg.Name)) - u.LogErrorAndExit(schema.AtmosConfiguration{}, errors.New(sb.String())) + u.LogErrorAndExit(errors.New(sb.String())) } } } @@ -296,13 +296,13 @@ func executeCustomCommand( if fl.Type == "" || fl.Type == "string" { providedFlag, err := flags.GetString(fl.Name) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } flagsData[fl.Name] = providedFlag } else if fl.Type == "bool" { boolFlag, err := flags.GetBool(fl.Name) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } flagsData[fl.Name] = boolFlag } @@ -320,27 +320,27 @@ func executeCustomCommand( // Process Go templates in the command's 'component_config.component' component, err := e.ProcessTmpl(fmt.Sprintf("component-config-component-%d", i), commandConfig.ComponentConfig.Component, data, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } if component == "" || component == "" { - u.LogErrorAndExit(atmosConfig, fmt.Errorf("the command defines an invalid 'component_config.component: %s' in '%s'", + u.LogErrorAndExit(fmt.Errorf("the command defines an invalid 'component_config.component: %s' in '%s'", commandConfig.ComponentConfig.Component, cfg.CliConfigFileName+u.DefaultStackConfigFileExtension)) } // Process Go templates in the command's 'component_config.stack' stack, err := e.ProcessTmpl(fmt.Sprintf("component-config-stack-%d", i), commandConfig.ComponentConfig.Stack, data, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } if stack == "" || stack == "" { - u.LogErrorAndExit(atmosConfig, fmt.Errorf("the command defines an invalid 'component_config.stack: %s' in '%s'", + u.LogErrorAndExit(fmt.Errorf("the command defines an invalid 'component_config.stack: %s' in '%s'", commandConfig.ComponentConfig.Stack, cfg.CliConfigFileName+u.DefaultStackConfigFileExtension)) } // Get the config for the component in the stack componentConfig, err := e.ExecuteDescribeComponent(component, stack, true) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } data["ComponentConfig"] = componentConfig } @@ -357,7 +357,7 @@ func executeCustomCommand( err = fmt.Errorf("either 'value' or 'valueCommand' can be specified for the ENV var, but not both.\n"+ "Custom command '%s %s' defines 'value=%s' and 'valueCommand=%s' for the ENV var '%s'", parentCommand.Name(), commandConfig.Name, value, valCommand, key) - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } // If the command to get the value for the ENV var is provided, execute it @@ -365,28 +365,28 @@ func executeCustomCommand( valCommandName := fmt.Sprintf("env-var-%s-valcommand", key) res, err := e.ExecuteShellAndReturnOutput(atmosConfig, valCommand, valCommandName, ".", nil, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } value = strings.TrimRight(res, "\r\n") } else { // Process Go templates in the values of the command's ENV vars value, err = e.ProcessTmpl(fmt.Sprintf("env-var-%d", i), value, data, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } } envVarsList = append(envVarsList, fmt.Sprintf("%s=%s", key, value)) err = os.Setenv(key, value) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } } if len(envVarsList) > 0 && commandConfig.Verbose { - u.LogDebug(atmosConfig, "\nUsing ENV vars:") + u.LogDebug("\nUsing ENV vars:") for _, v := range envVarsList { - u.LogDebug(atmosConfig, v) + u.LogDebug(v) } } @@ -394,14 +394,14 @@ func executeCustomCommand( // Steps support Go templates and have access to {{ .ComponentConfig.xxx.yyy.zzz }} Go template variables commandToRun, err := e.ProcessTmpl(fmt.Sprintf("step-%d", i), step, data, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } // Execute the command step commandName := fmt.Sprintf("%s-step-%d", commandConfig.Name, i) err = e.ExecuteShell(atmosConfig, commandToRun, commandName, ".", envVarsList, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } } } @@ -434,7 +434,7 @@ func checkAtmosConfig(opts ...AtmosValidateOption) { atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } if vCfg.CheckStack { @@ -454,7 +454,7 @@ func printMessageForMissingAtmosConfig(atmosConfig schema.AtmosConfiguration) { fmt.Println() err := tuiUtils.PrintStyledText("ATMOS") if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } if atmosConfig.Default { @@ -500,7 +500,7 @@ func CheckForAtmosUpdateAndPrintMessage(atmosConfig schema.AtmosConfiguration) { // Load the cache cacheCfg, err := cfg.LoadCache() if err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Could not load cache: %s", err)) + u.LogWarning(fmt.Sprintf("Could not load cache: %s", err)) return } @@ -513,12 +513,12 @@ func CheckForAtmosUpdateAndPrintMessage(atmosConfig schema.AtmosConfiguration) { // Get the latest Atmos release from GitHub latestReleaseTag, err := u.GetLatestGitHubRepoRelease("cloudposse", "atmos") if err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Failed to retrieve latest Atmos release info: %s", err)) + u.LogWarning(fmt.Sprintf("Failed to retrieve latest Atmos release info: %s", err)) return } if latestReleaseTag == "" { - u.LogWarning(atmosConfig, "No release information available") + u.LogWarning("No release information available") return } @@ -534,7 +534,7 @@ func CheckForAtmosUpdateAndPrintMessage(atmosConfig schema.AtmosConfiguration) { // Update the cache to mark the current timestamp cacheCfg.LastChecked = time.Now().Unix() if saveErr := cfg.SaveCache(cacheCfg); saveErr != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Unable to save cache: %s", saveErr)) + u.LogWarning(fmt.Sprintf("Unable to save cache: %s", saveErr)) } } diff --git a/cmd/completion.go b/cmd/completion.go index 7fe78e9bb..e9e653bf3 100644 --- a/cmd/completion.go +++ b/cmd/completion.go @@ -3,8 +3,6 @@ package cmd import ( "os" - "github.com/cloudposse/atmos/pkg/schema" - "github.com/spf13/cobra" u "github.com/cloudposse/atmos/pkg/utils" @@ -32,7 +30,7 @@ var completionCmd = &cobra.Command{ } if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/describe_affected.go b/cmd/describe_affected.go index 1a95ca535..fcb4a4f38 100644 --- a/cmd/describe_affected.go +++ b/cmd/describe_affected.go @@ -1,7 +1,6 @@ package cmd import ( - "github.com/cloudposse/atmos/pkg/schema" "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" @@ -20,7 +19,7 @@ var describeAffectedCmd = &cobra.Command{ err := e.ExecuteDescribeAffectedCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/describe_component.go b/cmd/describe_component.go index d6eea1317..20051b8b9 100644 --- a/cmd/describe_component.go +++ b/cmd/describe_component.go @@ -1,7 +1,6 @@ package cmd import ( - "github.com/cloudposse/atmos/pkg/schema" "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" @@ -20,7 +19,7 @@ var describeComponentCmd = &cobra.Command{ err := e.ExecuteDescribeComponentCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } @@ -34,7 +33,7 @@ func init() { err := describeComponentCmd.MarkPersistentFlagRequired("stack") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } describeCmd.AddCommand(describeComponentCmd) diff --git a/cmd/describe_config.go b/cmd/describe_config.go index 4a7e4dba2..ad0f1dc86 100644 --- a/cmd/describe_config.go +++ b/cmd/describe_config.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -17,7 +16,7 @@ var describeConfigCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { err := e.ExecuteDescribeConfigCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/describe_dependents.go b/cmd/describe_dependents.go index ca50fd9d4..bb25f2840 100644 --- a/cmd/describe_dependents.go +++ b/cmd/describe_dependents.go @@ -1,7 +1,6 @@ package cmd import ( - "github.com/cloudposse/atmos/pkg/schema" "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" @@ -21,7 +20,7 @@ var describeDependentsCmd = &cobra.Command{ err := e.ExecuteDescribeDependentsCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } @@ -35,7 +34,7 @@ func init() { err := describeDependentsCmd.MarkPersistentFlagRequired("stack") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } describeCmd.AddCommand(describeDependentsCmd) diff --git a/cmd/describe_stacks.go b/cmd/describe_stacks.go index 248cc948f..20a5085b1 100644 --- a/cmd/describe_stacks.go +++ b/cmd/describe_stacks.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var describeStacksCmd = &cobra.Command{ err := e.ExecuteDescribeStacksCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/describe_workflows.go b/cmd/describe_workflows.go index ea660dfa4..38ef9848c 100644 --- a/cmd/describe_workflows.go +++ b/cmd/describe_workflows.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -24,7 +23,7 @@ var describeWorkflowsCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { err := e.ExecuteDescribeWorkflowsCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/docs.go b/cmd/docs.go index 40a672b98..bd54e8f42 100644 --- a/cmd/docs.go +++ b/cmd/docs.go @@ -36,7 +36,7 @@ var docsCmd = &cobra.Command{ atmosConfig, err := cfg.InitCliConfig(info, true) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } // Detect terminal width if not specified in `atmos.yaml` @@ -44,7 +44,7 @@ var docsCmd = &cobra.Command{ maxWidth := atmosConfig.Settings.Terminal.MaxWidth if maxWidth == 0 && atmosConfig.Settings.Docs.MaxWidth > 0 { maxWidth = atmosConfig.Settings.Docs.MaxWidth - u.LogWarning(atmosConfig, "'settings.docs.max-width' is deprecated and will be removed in a future version. Please use 'settings.terminal.max_width' instead") + u.LogWarning("'settings.docs.max-width' is deprecated and will be removed in a future version. Please use 'settings.terminal.max_width' instead") } defaultWidth := 120 screenWidth := defaultWidth @@ -66,24 +66,24 @@ var docsCmd = &cobra.Command{ componentPath := filepath.Join(atmosConfig.BasePath, atmosConfig.Components.Terraform.BasePath, info.Component) componentPathExists, err := u.IsDirectory(componentPath) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } if !componentPathExists { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("Component '%s' not found in path: '%s'", info.Component, componentPath)) + u.LogErrorAndExit(fmt.Errorf("Component '%s' not found in path: '%s'", info.Component, componentPath)) } readmePath := filepath.Join(componentPath, "README.md") if _, err := os.Stat(readmePath); err != nil { if os.IsNotExist(err) { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("No README found for component: %s", info.Component)) + u.LogErrorAndExit(fmt.Errorf("No README found for component: %s", info.Component)) } else { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("Component %s not found", info.Component)) + u.LogErrorAndExit(fmt.Errorf("Component %s not found", info.Component)) } } readmeContent, err := os.ReadFile(readmePath) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } r, err := glamour.NewTermRenderer( @@ -93,22 +93,22 @@ var docsCmd = &cobra.Command{ glamour.WithWordWrap(screenWidth), ) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("failed to initialize markdown renderer: %w", err)) + u.LogErrorAndExit(fmt.Errorf("failed to initialize markdown renderer: %w", err)) } componentDocs, err := r.Render(string(readmeContent)) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } pager := atmosConfig.Settings.Terminal.Pager if !pager && atmosConfig.Settings.Docs.Pagination { pager = atmosConfig.Settings.Docs.Pagination - u.LogWarning(atmosConfig, "'settings.docs.pagination' is deprecated and will be removed in a future version. Please use 'settings.terminal.pager' instead") + u.LogWarning("'settings.docs.pagination' is deprecated and will be removed in a future version. Please use 'settings.terminal.pager' instead") } if err := u.DisplayDocs(componentDocs, pager); err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("failed to display documentation: %w", err)) + u.LogErrorAndExit(fmt.Errorf("failed to display documentation: %w", err)) } return @@ -128,7 +128,7 @@ var docsCmd = &cobra.Command{ } if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/helmfile.go b/cmd/helmfile.go index 4455c14d8..a12232ba3 100644 --- a/cmd/helmfile.go +++ b/cmd/helmfile.go @@ -5,7 +5,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -29,13 +28,13 @@ var helmfileCmd = &cobra.Command{ info, err := e.ProcessCommandLineArgs("helmfile", cmd, finalArgs, argsAfterDoubleDash) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } // Exit on help if info.NeedHelp || (info.SubCommand == "" && info.SubCommand2 == "") { // Check for the latest Atmos release on GitHub and print update message if err := cmd.Help(); err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } return } @@ -44,7 +43,7 @@ var helmfileCmd = &cobra.Command{ err = e.ExecuteHelmfile(info) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/helmfile_generate_varfile.go b/cmd/helmfile_generate_varfile.go index 5299ef44f..3df292bbb 100644 --- a/cmd/helmfile_generate_varfile.go +++ b/cmd/helmfile_generate_varfile.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var helmfileGenerateVarfileCmd = &cobra.Command{ err := e.ExecuteHelmfileGenerateVarfileCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } @@ -32,7 +31,7 @@ func init() { err := helmfileGenerateVarfileCmd.MarkPersistentFlagRequired("stack") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } helmfileGenerateCmd.AddCommand(helmfileGenerateVarfileCmd) diff --git a/cmd/pro_lock.go b/cmd/pro_lock.go index fc37aaa90..86342b933 100644 --- a/cmd/pro_lock.go +++ b/cmd/pro_lock.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var proLockCmd = &cobra.Command{ err := e.ExecuteProLockCommand(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/pro_unlock.go b/cmd/pro_unlock.go index b612306cd..9316ca1d9 100644 --- a/cmd/pro_unlock.go +++ b/cmd/pro_unlock.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var proUnlockCmd = &cobra.Command{ err := e.ExecuteProUnlockCommand(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/root.go b/cmd/root.go index 460ed4b84..73d06d202 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -3,8 +3,10 @@ package cmd import ( "errors" "fmt" + "io" "os" + "github.com/charmbracelet/log" "github.com/elewis787/boa" cc "github.com/ivanpirog/coloredcobra" "github.com/spf13/cobra" @@ -48,16 +50,45 @@ var RootCmd = &cobra.Command{ fmt.Println() err := tuiUtils.PrintStyledText("ATMOS") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } err = e.ExecuteAtmosCmd() if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } +func setupLogger(atmosConfig *schema.AtmosConfiguration) { + switch atmosConfig.Logs.Level { + case "Trace": + log.SetLevel(log.DebugLevel) + case "Debug": + log.SetLevel(log.DebugLevel) + case "Info": + log.SetLevel(log.InfoLevel) + case "Warning": + log.SetLevel(log.WarnLevel) + case "Off": + log.SetOutput(io.Discard) + default: + log.SetLevel(log.InfoLevel) + } + + log.Info("log level set from atmos config", "level", log.GetLevel()) + + if atmosConfig.Logs.File != "/dev/stderr" { + log.Info("setting log file", "file", atmosConfig.Logs.File) + logFile, err := os.OpenFile(atmosConfig.Logs.File, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + if err != nil { + log.Fatal("Failed to open log file:", err) + } + defer logFile.Close() + log.SetOutput(logFile) + } +} + // Execute adds all child commands to the root command and sets flags appropriately. // This is called by main.main(). It only needs to happen once to the RootCmd. func Execute() error { @@ -77,22 +108,26 @@ func Execute() error { atmosConfig, initErr = cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, false) if initErr != nil && !errors.Is(initErr, cfg.NotFound) { if isVersionCommand() { - u.LogTrace(schema.AtmosConfiguration{}, fmt.Sprintf("warning: CLI configuration 'atmos.yaml' file not found. Error: %s", initErr)) + log.Debug("warning: CLI configuration 'atmos.yaml' file not found", "error", initErr) } else { - u.LogErrorAndExit(schema.AtmosConfiguration{}, initErr) + u.LogErrorAndExit(initErr) } } + + // Set the log level for the charmbracelet/log package based on the atmosConfig + setupLogger(&atmosConfig) + var err error // If CLI configuration was found, process its custom commands and command aliases if initErr == nil { err = processCustomCommands(atmosConfig, atmosConfig.Commands, RootCmd, true) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } err = processCommandAliases(atmosConfig, atmosConfig.CommandAliases, RootCmd, true) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } } @@ -112,7 +147,7 @@ func init() { // Set custom usage template err := templates.SetCustomUsageFunc(RootCmd) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } initCobraConfig() @@ -131,19 +166,19 @@ func initCobraConfig() { if command.Use != "atmos" || command.Flags().Changed("help") { err := tuiUtils.PrintStyledText("ATMOS") if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } if err := oldUsageFunc(command); err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } } else { err := tuiUtils.PrintStyledText("ATMOS") if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } b.HelpFunc(command, strings) if err := command.Usage(); err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } } CheckForAtmosUpdateAndPrintMessage(atmosConfig) diff --git a/cmd/terraform.go b/cmd/terraform.go index 9fc9f8e22..22b3b9c6b 100644 --- a/cmd/terraform.go +++ b/cmd/terraform.go @@ -41,7 +41,7 @@ var terraformCmd = &cobra.Command{ info, err := e.ProcessCommandLineArgs("terraform", cmd, finalArgs, argsAfterDoubleDash) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } ctx := context.WithValue(context.Background(), contextKey(atmosInfoKey), info) @@ -135,7 +135,7 @@ func terraformRun(cmd *cobra.Command, actualCmd *cobra.Command, args []string) e err := e.ExecuteTerraform(info) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } return nil } diff --git a/cmd/terraform_generate_backend.go b/cmd/terraform_generate_backend.go index c47b11999..69dc18aec 100644 --- a/cmd/terraform_generate_backend.go +++ b/cmd/terraform_generate_backend.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -21,7 +20,7 @@ var terraformGenerateBackendCmd = &cobra.Command{ err := e.ExecuteTerraformGenerateBackendCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } @@ -32,7 +31,7 @@ func init() { err := terraformGenerateBackendCmd.MarkPersistentFlagRequired("stack") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } terraformGenerateCmd.AddCommand(terraformGenerateBackendCmd) diff --git a/cmd/terraform_generate_backends.go b/cmd/terraform_generate_backends.go index c81257830..0fdbad668 100644 --- a/cmd/terraform_generate_backends.go +++ b/cmd/terraform_generate_backends.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var terraformGenerateBackendsCmd = &cobra.Command{ err := e.ExecuteTerraformGenerateBackendsCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/terraform_generate_varfile.go b/cmd/terraform_generate_varfile.go index dc2be2dd1..280aaa622 100644 --- a/cmd/terraform_generate_varfile.go +++ b/cmd/terraform_generate_varfile.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var terraformGenerateVarfileCmd = &cobra.Command{ err := e.ExecuteTerraformGenerateVarfileCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } @@ -32,7 +31,7 @@ func init() { err := terraformGenerateVarfileCmd.MarkPersistentFlagRequired("stack") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } terraformGenerateCmd.AddCommand(terraformGenerateVarfileCmd) diff --git a/cmd/terraform_generate_varfiles.go b/cmd/terraform_generate_varfiles.go index c83980033..874725356 100644 --- a/cmd/terraform_generate_varfiles.go +++ b/cmd/terraform_generate_varfiles.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var terraformGenerateVarfilesCmd = &cobra.Command{ err := e.ExecuteTerraformGenerateVarfilesCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } @@ -58,7 +57,7 @@ func init() { err := terraformGenerateVarfilesCmd.MarkPersistentFlagRequired("file-template") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } terraformGenerateCmd.AddCommand(terraformGenerateVarfilesCmd) diff --git a/cmd/validate_component.go b/cmd/validate_component.go index 3b9fd4e3d..3f9c16ce1 100644 --- a/cmd/validate_component.go +++ b/cmd/validate_component.go @@ -6,7 +6,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" "github.com/cloudposse/atmos/pkg/ui/theme" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -26,7 +25,7 @@ var validateComponentCmd = &cobra.Command{ component, stack, err := e.ExecuteValidateComponentCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } m := fmt.Sprintf("component '%s' in stack '%s' validated successfully\n", component, stack) @@ -45,7 +44,7 @@ func init() { err := validateComponentCmd.MarkPersistentFlagRequired("stack") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } validateCmd.AddCommand(validateComponentCmd) diff --git a/cmd/validate_stacks.go b/cmd/validate_stacks.go index 872ad802d..d56871dfa 100644 --- a/cmd/validate_stacks.go +++ b/cmd/validate_stacks.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" "github.com/cloudposse/atmos/pkg/ui/theme" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -22,7 +21,7 @@ var ValidateStacksCmd = &cobra.Command{ err := e.ExecuteValidateStacksCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } u.PrintMessageInColor("all stacks validated successfully\n", theme.Colors.Success) diff --git a/cmd/vendor_diff.go b/cmd/vendor_diff.go index 7a65950bf..af1f0d3cd 100644 --- a/cmd/vendor_diff.go +++ b/cmd/vendor_diff.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -20,7 +19,7 @@ var vendorDiffCmd = &cobra.Command{ err := e.ExecuteVendorDiffCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/vendor_pull.go b/cmd/vendor_pull.go index 57db43242..71b5932ab 100644 --- a/cmd/vendor_pull.go +++ b/cmd/vendor_pull.go @@ -4,7 +4,6 @@ import ( "github.com/spf13/cobra" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -21,7 +20,7 @@ var vendorPullCmd = &cobra.Command{ err := e.ExecuteVendorPullCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } }, } diff --git a/cmd/version.go b/cmd/version.go index 75dbfe4d4..b0d96b63c 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -8,7 +8,6 @@ import ( "github.com/spf13/cobra" tuiUtils "github.com/cloudposse/atmos/internal/tui/utils" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" "github.com/cloudposse/atmos/pkg/version" ) @@ -25,7 +24,7 @@ var versionCmd = &cobra.Command{ fmt.Println() err := tuiUtils.PrintStyledText("ATMOS") if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } u.PrintMessage(fmt.Sprintf("\U0001F47D Atmos %s on %s/%s", version.Version, runtime.GOOS, runtime.GOARCH)) @@ -36,11 +35,11 @@ var versionCmd = &cobra.Command{ latestReleaseTag, err := u.GetLatestGitHubRepoRelease("cloudposse", "atmos") if err == nil && latestReleaseTag != "" { if err != nil { - u.LogWarning(schema.AtmosConfiguration{}, fmt.Sprintf("Failed to check for updates: %v", err)) + u.LogWarning(fmt.Sprintf("Failed to check for updates: %v", err)) return } if latestReleaseTag == "" { - u.LogWarning(schema.AtmosConfiguration{}, "No release information available") + u.LogWarning("No release information available") return } latestRelease := strings.TrimPrefix(latestReleaseTag, "v") diff --git a/cmd/workflow.go b/cmd/workflow.go index 413cd0bf6..0a06a35b1 100644 --- a/cmd/workflow.go +++ b/cmd/workflow.go @@ -87,14 +87,14 @@ var workflowCmd = &cobra.Command{ if len(args) == 0 { err := e.ExecuteWorkflowCmd(cmd, args) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } return } if args[0] == "help" { if err := cmd.Help(); err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } return } @@ -107,7 +107,7 @@ var workflowCmd = &cobra.Command{ // Get atmos configuration atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, false) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("failed to initialize atmos config: %w", err)) + u.LogErrorAndExit(fmt.Errorf("failed to initialize atmos config: %w", err)) } // Create a terminal writer to get the optimal width @@ -122,7 +122,7 @@ var workflowCmd = &cobra.Command{ markdown.WithWidth(screenWidth), ) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("failed to create markdown renderer: %w", err)) + u.LogErrorAndExit(fmt.Errorf("failed to create markdown renderer: %w", err)) } // Generate the error message dynamically using H1 styling @@ -130,7 +130,7 @@ var workflowCmd = &cobra.Command{ content := errorMsg + workflowMarkdown rendered, err := renderer.Render(content) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, fmt.Errorf("failed to render markdown: %w", err)) + u.LogErrorAndExit(fmt.Errorf("failed to render markdown: %w", err)) } // Remove duplicate URLs and format output @@ -168,7 +168,7 @@ var workflowCmd = &cobra.Command{ Suggestion: suggestion, }) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } } else if strings.Contains(err.Error(), "does not have the") { details, suggestion := getMarkdownSection("Invalid Workflow") @@ -178,11 +178,11 @@ var workflowCmd = &cobra.Command{ Suggestion: suggestion, }) if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } } else { // For other errors, use the standard error handler - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } return } diff --git a/go.sum b/go.sum index 7a5991166..f7b872ea8 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +cel.dev/expr v0.16.2/go.mod h1:gXngZQMkWJoSbE8mOzehJlXQyubn/Vg0vR9/F3W7iw8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -42,30 +43,37 @@ cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZL cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accessapproval v1.7.5/go.mod h1:g88i1ok5dvQ9XJsxpUInWWvUBrIZhyPDPbk4T01OoJ0= cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/aiplatform v1.60.0/go.mod h1:eTlGuHOahHprZw3Hio5VKmtThIOak5/qy6pzdsqcQnM= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/analytics v0.23.0/go.mod h1:YPd7Bvik3WS95KBok2gPXDqQPHy08TsCQG6CdUCb+u0= cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigateway v1.6.5/go.mod h1:6wCwvYRckRQogyDDltpANi3zsCDl6kWi0b4Je+w2UiI= cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeconnect v1.6.5/go.mod h1:MEKm3AiT7s11PqTfKE3KZluZA9O91FNysvd3E6SJ6Ow= cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apigeeregistry v0.8.3/go.mod h1:aInOWnqF4yMQx8kTjDqHNXjZGh/mxeNlAf52YqtASUs= cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= @@ -74,10 +82,12 @@ cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodC cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/appengine v1.8.5/go.mod h1:uHBgNoGLTS5di7BvU25NFDuKa82v0qQLjyMJLuPQrVo= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/area120 v0.8.5/go.mod h1:BcoFCbDLZjsfe4EkCnEq1LKvHSK0Ew/zk5UFu6GMyA0= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= @@ -86,6 +96,7 @@ cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1 cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/artifactregistry v1.14.7/go.mod h1:0AUKhzWQzfmeTvT4SjfI4zjot72EMfrkvL9g9aRjnnM= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= @@ -94,27 +105,33 @@ cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAt cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/asset v1.17.2/go.mod h1:SVbzde67ehddSoKf5uebOD1sYw8Ab/jD/9EIeWg99q4= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/assuredworkloads v1.11.5/go.mod h1:FKJ3g3ZvkL2D7qtqIGnDufFkHxwIpNM9vtmhvt+6wqk= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/automl v1.13.5/go.mod h1:MDw3vLem3yh+SvmSgeYUmUKqyls6NzSumDm9OJ3xJ1Y= cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/baremetalsolution v1.2.4/go.mod h1:BHCmxgpevw9IEryE99HbYEfxXkAEA3hkMJbYYsHtIuY= cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/batch v1.8.0/go.mod h1:k8V7f6VE2Suc0zUM4WtoibNrA6D3dqBpB+++e3vSGYc= cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go/beyondcorp v1.0.4/go.mod h1:Gx8/Rk2MxrvWfn4WIhHIG1NV7IBfg14pTKv1+EArVcc= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -128,38 +145,46 @@ cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/Zur cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/bigquery v1.59.1/go.mod h1:VP1UJYgevyTwsV7desjzNzDND5p6hZB+Z8gZJN1GQUc= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/billing v1.18.2/go.mod h1:PPIwVsOOQ7xzbADCwNe8nvK776QpfrOAUkvKjCUcpSE= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/binaryauthorization v1.8.1/go.mod h1:1HVRyBerREA/nhI7yLang4Zn7vfNVA3okoAR9qYQJAQ= cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/certificatemanager v1.7.5/go.mod h1:uX+v7kWqy0Y3NG/ZhNvffh0kuqkKZIXdvlZRO7z0VtM= cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/channel v1.17.5/go.mod h1:FlpaOSINDAXgEext0KMaBq/vwpLMkkPAw9b2mApQeHc= cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/cloudbuild v1.15.1/go.mod h1:gIofXZSu+XD2Uy+qkOrGKEx45zd7s28u/k8f99qKals= cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/clouddms v1.7.4/go.mod h1:RdrVqoFG9RWI5AvZ81SxJ/xvxPdtcRhFotwdE79DieY= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/cloudtasks v1.12.6/go.mod h1:b7c7fe4+TJsFZfDyzO51F7cjq7HLUlRi/KZQLQjDsaY= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.2.0/go.mod h1:xlogom/6gr8RJGBe7nT2eGsQYAFUbbv8dbC29qE3Xmw= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= @@ -176,6 +201,7 @@ cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63 cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= @@ -185,15 +211,18 @@ cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1F cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/contactcenterinsights v1.13.0/go.mod h1:ieq5d5EtHsu8vhe2y3amtZ+BE+AQwX5qAy7cpo0POsI= cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/container v1.31.0/go.mod h1:7yABn5s3Iv3lmw7oMmyGbeV6tQj86njcTijkkGuvdZA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/containeranalysis v0.11.4/go.mod h1:cVZT7rXYBS9NG1rhQbWL9pWbXCKHWJPYraE8/FTSYPE= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= @@ -202,44 +231,55 @@ cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOX cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/datacatalog v1.19.3/go.mod h1:ra8V3UAsciBpJKQ+z9Whkxzxv7jmQg1hfODr3N3YPJ4= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataflow v0.9.5/go.mod h1:udl6oi8pfUHnL0z6UN9Lf9chGqzDMVqcYTcZ1aPnCZQ= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/dataform v0.9.2/go.mod h1:S8cQUwPNWXo7m/g3DhWHsLBoufRNn9EgFrMgne2j7cI= cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datafusion v1.7.5/go.mod h1:bYH53Oa5UiqahfbNK9YuYKteeD4RbQSNMx7JF7peGHc= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/datalabeling v0.8.5/go.mod h1:IABB2lxQnkdUbMnQaOl2prCOfms20mcPxDBm36lps+s= cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataplex v1.14.2/go.mod h1:0oGOSFlEKef1cQeAHXy4GZPB/Ife0fz/PxBf+ZymA2U= cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.4.0/go.mod h1:3B1Ht2aRB8VZIteGxQS/iNSJGzt9+CA0WGnDVMEm7Z4= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/dataqna v0.8.5/go.mod h1:vgihg1mz6n7pb5q2YJF7KlXve6tCglInd6XO0JGOlWM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/datastream v1.10.4/go.mod h1:7kRxPdxZxhPg3MFeCSulmAJnil8NJGGvSNdn4p1sRZo= cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/deploy v1.17.1/go.mod h1:SXQyfsXrk0fBmgBHRzBjQbZhMfKZ3hMQBw5ym7MN/50= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= @@ -248,36 +288,45 @@ cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFM cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dialogflow v1.49.0/go.mod h1:dhVrXKETtdPlpPhE7+2/k4Z8FRNUp6kMV3EW3oz/fe0= cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/dlp v1.11.2/go.mod h1:9Czi+8Y/FegpWzgSfkRlyz+jwW6Te9Rv26P3UfU/h/w= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/documentai v1.25.0/go.mod h1:ftLnzw5VcXkLItp6pw1mFic91tMRyfv6hHEY5br4KzY= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/domains v0.9.5/go.mod h1:dBzlxgepazdFhvG7u23XMhmMKBjrkoUNaw0A8AQB55Y= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/edgecontainer v1.1.5/go.mod h1:rgcjrba3DEDEQAidT4yuzaKWTbkTI5zAMu3yy6ZWS0M= cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/essentialcontacts v1.6.6/go.mod h1:XbqHJGaiH0v2UvtuucfOzFXN+rpL/aU5BCZLn4DYl1Q= cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/eventarc v1.13.4/go.mod h1:zV5sFVoAa9orc/52Q+OuYUG9xL2IIZTbbuTHC6JSY8s= cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/filestore v1.8.1/go.mod h1:MbN9KcaM47DRTIuLfQhJEsjaocVebNtNQhSLhKCF5GM= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/firestore v1.15.0/go.mod h1:GWOxFXcv8GZUtYpWHw/w6IuYNux/BtmeVTMmjrm4yhk= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= @@ -285,6 +334,7 @@ cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5Uwt cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/functions v1.16.0/go.mod h1:nbNpfAG7SG7Duw/o1iZ6ohvL7mc6MapWQVpqtM29n8k= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= @@ -293,20 +343,25 @@ cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1 cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkebackup v1.3.5/go.mod h1:KJ77KkNN7Wm1LdMopOelV6OodM01pMuK2/5Zt1t4Tvc= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkeconnect v0.8.5/go.mod h1:LC/rS7+CuJ5fgIbXv8tCD/mdfnlAadTaUufgOkmijuk= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkehub v0.14.5/go.mod h1:6bzqxM+a+vEH/h8W8ec4OJl4r36laxTs3A/fMNHJ0wA= cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/gkemulticloud v1.1.1/go.mod h1:C+a4vcHlWeEIf45IB5FFR5XGjTeYhF83+AYIpTy4i2Q= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/gsuiteaddons v1.6.5/go.mod h1:Lo4P2IvO8uZ9W+RaC6s1JVxo42vgy+TX5a6hfBZ0ubs= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.1.1/go.mod h1:CKqrcnI/suGpybEHxZ7BMehL0oA4LpdyJdUlTl9jVMw= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= @@ -324,13 +379,16 @@ cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/ cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/iap v1.9.4/go.mod h1:vO4mSq0xNf/Pu6E5paORLASBwEmphXEjgCFg7aeNu1w= cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/ids v1.4.5/go.mod h1:p0ZnyzjMWxww6d2DvMGnFwCsSxDJM666Iir1bK1UuBo= cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/iot v1.7.5/go.mod h1:nq3/sqTz3HGaWJi1xNiX7F41ThOzpud67vwk0YsSsqs= cloud.google.com/go/kms v1.1.0/go.mod h1:WdbppnCDMDpOvoYBMn1+gNmOeEoZYqAv+HeuKARGCXI= cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= @@ -339,93 +397,116 @@ cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4 cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/language v1.12.3/go.mod h1:evFX9wECX6mksEva8RbRnr/4wi/vKGYnAJrTRXU8+f8= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/lifesciences v0.9.5/go.mod h1:OdBm0n7C0Osh5yZB7j9BXyrMnTRGBJIZonUMxo5CzPw= cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/managedidentities v1.6.5/go.mod h1:fkFI2PwwyRQbjLxlm5bQ8SjtObFMW3ChBGNqaMcgZjI= cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/maps v1.6.4/go.mod h1:rhjqRy8NWmDJ53saCfsXQ0LKwBHfi6OSh5wkq6BaMhI= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/mediatranslation v0.8.5/go.mod h1:y7kTHYIPCIfgyLbKncgqouXJtLsU+26hZhHEEy80fSs= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/memcache v1.10.5/go.mod h1:/FcblbNd0FdMsx4natdj+2GWzTq+cjZvMa1I+9QsuMA= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/metastore v1.13.4/go.mod h1:FMv9bvPInEfX9Ac1cVcRXp8EBBQnBcqH6gz3KvJ9BAE= cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= cloud.google.com/go/monitoring v1.4.0/go.mod h1:y6xnxfwI3hTFWOdkOaD7nfJVlwuC3/mS/5kvtT131p4= cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.18.0/go.mod h1:c92vVBCeq/OB4Ioyo+NbN2U7tlg5ZH41PZcdvfc+Lcg= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkconnectivity v1.14.4/go.mod h1:PU12q++/IMnDJAB+3r+tJtuCXCfwfN+C6Niyj6ji1Po= cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networkmanagement v1.9.4/go.mod h1:daWJAl0KTFytFL7ar33I6R/oNBH8eEOX/rBNHrC/8TA= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/networksecurity v0.9.5/go.mod h1:KNkjH/RsylSGyyZ8wXpue8xpCEK+bTtvof8SBfIhMG8= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/notebooks v1.11.3/go.mod h1:0wQyI2dQC3AZyQqWnRsp+yA+kY4gC7ZIVP4Qg3AQcgo= cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/optimization v1.6.3/go.mod h1:8ve3svp3W6NFcAEFr4SfJxrldzhUl4VMUJmhrqVKtYA= cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orchestration v1.8.5/go.mod h1:C1J7HesE96Ba8/hZ71ISTV2UAat0bwN+pi85ky38Yq8= cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/oslogin v1.13.1/go.mod h1:vS8Sr/jR7QvPWpCjNqy6LYZr5Zs1e8ZGW/KPn9gmhws= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/phishingprotection v0.8.5/go.mod h1:g1smd68F7mF1hgQPuYn3z8HDbNre8L6Z0b7XMYFmX7I= cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/policytroubleshooter v1.10.3/go.mod h1:+ZqG3agHT7WPb4EBIRqUv4OyIwRTZvsVDHZ8GlZaoxk= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/privatecatalog v0.9.5/go.mod h1:fVWeBOVe7uj2n3kWRGlUQqR/pOd450J9yZoOECcQqJk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -435,9 +516,11 @@ cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcd cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsub v1.36.1/go.mod h1:iYjCa9EzWOoBiTdd4ps7QoMtMln5NwaZQpK1hbRfBDE= cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= @@ -446,47 +529,57 @@ cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.2/go.mod h1:trwwGkfhCmp05Ll5MSJPXY7yvnO0p4v3orGANAFHAuU= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommendationengine v0.8.5/go.mod h1:A38rIXHGFvoPvmy6pZLozr0g59NRNREz4cx7F58HAsQ= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/recommender v1.12.1/go.mod h1:gf95SInWNND5aPas3yjwl0I572dtudMhMIG4ni8nr+0= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/redis v1.14.2/go.mod h1:g0Lu7RRRz46ENdFKQ2EcQZBAJ2PtJHJLuiiRuEXwyQw= cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcemanager v1.9.5/go.mod h1:hep6KjelHA+ToEjOfO3garMKi/CLYwTqeAw7YiEI9x8= cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/resourcesettings v1.6.5/go.mod h1:WBOIWZraXZOGAgoR4ukNj0o0HiSMO62H9RpFi9WjP9I= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/retail v1.16.0/go.mod h1:LW7tllVveZo4ReWt68VnldZFWJRzsh9np+01J9dYWzE= cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/run v1.3.4/go.mod h1:FGieuZvQ3tj1e9GnzXqrMABSuir38AJg5xhiYq+SF3o= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/scheduler v1.10.6/go.mod h1:pe2pNCtJ+R01E06XCDOJs1XvAMbv28ZsQEbqknxGOuE= cloud.google.com/go/secretmanager v1.3.0/go.mod h1:+oLTkouyiYiabAQNugCeTS3PAArGiMJuBqvJnJsyH+U= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/secretmanager v1.11.5/go.mod h1:eAGv+DaCHkeVyQi0BeXgAHOU0RdrMeZIASKc+S7VqH4= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= @@ -494,12 +587,14 @@ cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/security v1.15.5/go.mod h1:KS6X2eG3ynWjqcIX976fuToN5juVkF6Ra6c7MPnldtc= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/securitycenter v1.24.4/go.mod h1:PSccin+o1EMYKcFQzz9HMMnZ2r9+7jbc+LvPjXhpwcU= cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= @@ -511,6 +606,7 @@ cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPj cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicedirectory v1.11.4/go.mod h1:Bz2T9t+/Ehg6x+Y7Ycq5xiShYLD96NfEsWNHyitj1qM= cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= @@ -522,15 +618,18 @@ cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DR cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/shell v1.7.5/go.mod h1:hL2++7F47/IfpfTO53KYf1EC+F56k3ThfNEXd4zcuiE= cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/spanner v1.56.0/go.mod h1:DndqtUKQAt3VLuV2Le+9Y3WTnq5cNKrnLb/Piqcj+h0= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= +cloud.google.com/go/speech v1.21.1/go.mod h1:E5GHZXYQlkqWQwY5xRSLHw2ci5NMQNG52FfMU1aZrIA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -549,39 +648,47 @@ cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POF cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/storagetransfer v1.10.4/go.mod h1:vef30rZKu5HSEf/x1tK3WfWrL0XVoUQN/EPDRGPzjZs= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/talent v1.6.6/go.mod h1:y/WQDKrhVz12WagoarpAIyKKMeKGKHWPoReZ0g8tseQ= cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/texttospeech v1.7.5/go.mod h1:tzpCuNWPwrNJnEa4Pu5taALuZL4QRRLcb+K9pbhXT6M= cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/tpu v1.6.5/go.mod h1:P9DFOEBIBhuEcZhXi+wPoVy/cji+0ICFi4TtTkMHSSs= cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.10.5/go.mod h1:9hjCV1nGBCtXbAE4YK7OqJ8pmPYSxPA0I67JwRd5s3M= cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.10.1/go.mod h1:adGZcQNom/3ogU65N9UXHOnnSvjPwA/jKQUMnsYXOyk= cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.20.4/go.mod h1:LyUVjyW+Bwj7dh3UJnUGZfyqjEto9DnrvTe1f/+QrW0= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/videointelligence v1.11.5/go.mod h1:/PkeQjpRponmOerPeJxNPuxvi12HlW7Em0lJO14FC3I= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= @@ -589,29 +696,36 @@ cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vision/v2 v2.8.0/go.mod h1:ocqDiA2j97pvgogdyhoxiQp2ZkDCyr0HWpicywGGRhU= cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmmigration v1.7.5/go.mod h1:pkvO6huVnVWzkFioxSghZxIGcsstDvYiVCxQ9ZH3eYI= cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vmwareengine v1.1.1/go.mod h1:nMpdsIVkUrSaX8UvmnBhzVzG7PPvNYc5BszcvIVudYs= cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/vpcaccess v1.7.5/go.mod h1:slc5ZRvvjP78c2dnL7m4l4R9GwL3wDLcpIWz6P/ziig= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/webrisk v1.9.5/go.mod h1:aako0Fzep1Q714cPEM5E+mtYX8/jsfegAuS8aivxy3U= cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/websecurityscanner v1.6.5/go.mod h1:QR+DWaxAz2pWooylsBF854/Ijvuoa3FCyS1zBa1rAVQ= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cloud.google.com/go/workflows v1.12.4/go.mod h1:yQ7HUqOkdJK4duVtMeBCAOPiN1ZF1E9pAMX51vpwB/w= contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/stackdriver v0.13.10/go.mod h1:I5htMbyta491eUxufwwZPQdcKvvgzMB4O9ni41YnIM8= contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= @@ -622,6 +736,7 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= github.com/Azure/azure-amqp-common-go/v3 v3.2.1/go.mod h1:O6X1iYHP7s2x7NjUKsXVhkwWrQhxrd+d8/3rRadj4CI= github.com/Azure/azure-amqp-common-go/v3 v3.2.2/go.mod h1:O6X1iYHP7s2x7NjUKsXVhkwWrQhxrd+d8/3rRadj4CI= github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= @@ -629,8 +744,11 @@ github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl github.com/Azure/azure-sdk-for-go v51.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v59.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/Azure/azure-service-bus-go v0.11.5/go.mod h1:MI6ge2CuQWBVq+ly456MY7XqNLJip5LO1iSFodbNLbU= github.com/Azure/azure-storage-blob-go v0.14.0 h1:1BCg74AmVdYwO3dlKwtFU1V0wU2PZdREkXvAmZJRUlM= github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= @@ -640,10 +758,12 @@ github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSW github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest v0.11.22/go.mod h1:BAWYUWGPEtKPzjVkp0Q6an0MJcJDsoh5Z1BFAEFs4Xs= +github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.17/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= github.com/Azure/go-autorest/autorest/azure/auth v0.5.9/go.mod h1:hg3/1yw0Bq87O3KvvnJoAh34/0zbP7SFizX/qN5JvjU= github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= @@ -653,11 +773,13 @@ github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYX github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CycloneDX/cyclonedx-go v0.9.0 h1:inaif7qD8bivyxp7XLgxUYtOXWtDez7+j72qKTMQTb8= github.com/CycloneDX/cyclonedx-go v0.9.0/go.mod h1:NE/EWvzELOFlG6+ljX/QeMlVt9VKcTwu8u0ccsACEsw= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v1.29.0/go.mod h1:spvB9eLJH9dutlbPSRmHvSXXHOwGRyeXh1jVdquA2G8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2/go.mod h1:itPGVDKf9cC/ov4MdvJ2QZ0khw4bfoo9jzwTJlaxy2k= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= @@ -682,6 +804,7 @@ 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/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= 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= @@ -696,6 +819,7 @@ 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/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= 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= @@ -704,6 +828,8 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= @@ -715,6 +841,7 @@ github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4x github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= @@ -794,6 +921,7 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.26.3/go.mod h1:g1qvDuRsJY+XghsV6zg00Z github.com/aws/aws-sdk-go-v2/service/s3 v1.26.10 h1:GWdLZK0r1AK5sKb8rhB9bEXqXCK8WNuyv4TBAD6ZviQ= github.com/aws/aws-sdk-go-v2/service/s3 v1.26.10/go.mod h1:+O7qJxF8nLorAhuIVhYTHse6okjHJJm4EwhhzvpnkT0= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.4/go.mod h1:PJc8s+lxyU8rrre0/4a0pn2wgwiDvOEzoOjcJUBr67o= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.9/go.mod h1:Jt1lSw1fYlQ60lqrZ9ViN2LMGizbWTWbkStm4rbuYuE= github.com/aws/aws-sdk-go-v2/service/sns v1.17.4/go.mod h1:kElt+uCcXxcqFyc+bQqZPFD9DME/eC6oHBXvFzQ9Bcw= github.com/aws/aws-sdk-go-v2/service/sqs v1.18.3/go.mod h1:skmQo0UPvsjsuYYSYMVmrPc1HWCbHUJyrCEp+ZaLzqM= github.com/aws/aws-sdk-go-v2/service/ssm v1.24.1/go.mod h1:NR/xoKjdbRJ+qx0pMR4mI+N/H1I1ynHwXnO6FowXJc0= @@ -826,12 +954,16 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bmatcuk/doublestar/v4 v4.8.0 h1:DSXtrypQddoug1459viM9X9D3dp1Z7993fw36I2kNcQ= github.com/bmatcuk/doublestar/v4 v4.8.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= +github.com/brianvoe/gofakeit/v5 v5.11.2/go.mod h1:/ZENnKqX+XrN8SORLe/fu5lZDIo1tuPncWuRD+eyhSI= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= github.com/catppuccin/go v0.2.0 h1:ktBeIrIP42b/8FGiScP9sgrWOss3lw0Z5SktRoithGA= @@ -878,6 +1010,7 @@ github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXH github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -896,34 +1029,56 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= +github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig= github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= +github.com/containerd/go-cni v1.1.9/go.mod h1:XYrZJ1d5W6E2VOvjffL3IZq0Dz6bsVlERHbekNK90PM= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.1.8/go.mod h1:x6QvFIkMyO2qGIY2zXc88ivEzcbgvLdWjoZyGqDap5U= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/nri v0.6.1/go.mod h1:7+sX3wNx+LR7RzhjnJiUkFDhn18P5Bg/0VnJ/uXpRJM= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= +github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= +github.com/containerd/zfs v1.1.0/go.mod h1:oZF9wBnrnQjpWLaPKEinrx3TQ9a+W/RJO7Zb41d8YLE= +github.com/containernetworking/cni v1.1.2/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= +github.com/containernetworking/plugins v1.2.0/go.mod h1:/VjX4uHecW5vVimFa1wkG4s+r/s9qIfPdqlLF4TW8c4= +github.com/containers/ocicrypt v1.1.10/go.mod h1:YfzSSr06PTHQwSTUKqDSjish9BeW1E4HUmreluQcMd8= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= 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.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= 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= @@ -934,11 +1089,13 @@ github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0 github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= 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/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= 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= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= @@ -947,8 +1104,13 @@ github.com/docker/cli v27.5.0+incompatible h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvD github.com/docker/cli v27.5.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v27.5.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/libkv v0.2.2-0.20180912205406-458977154600 h1:x0AMRhackzbivKKiEeSMzH6gZmbALPXCBG0ecBmRlco= github.com/docker/libkv v0.2.2-0.20180912205406-458977154600/go.mod h1:r5hEwHwW8dr0TFBYGCarMNbrQOiwL1xoqDYZ/JqoTK0= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= @@ -967,6 +1129,7 @@ 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.1 h1:8SR2DB391dw0HVI9572ElrY+KU0Q89OCXYwWZx7aAZc= github.com/elliotchance/orderedmap v1.7.1/go.mod h1:wsDwEaX5jEoyhbs7x93zk2H/qv0zwuhg4inXhDkYqys= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= 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= @@ -980,12 +1143,15 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -1012,6 +1178,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/fsouza/fake-gcs-server v1.37.12/go.mod h1:9A8foxhEYU5Vf7znk9TMl5YZGrdPGBokNTTuqltZCnc= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= 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= @@ -1040,9 +1208,11 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= @@ -1056,6 +1226,9 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= 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-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -1087,6 +1260,7 @@ github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PU github.com/goccy/go-yaml v1.13.3 h1:IXRULR8mAa0MXQobzzp0VOfMUJ8EnaQ4x3jhf7S0/nI= github.com/goccy/go-yaml v1.13.3/go.mod h1:IjYwxUiJDoqpx2RmbdjMUceGHZwYLon3sfOGl5Hi9lc= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0/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= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -1148,6 +1322,7 @@ github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1169,6 +1344,7 @@ github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI= github.com/google/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA= github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= @@ -1176,6 +1352,7 @@ github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6A github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY= github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -1201,6 +1378,7 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= @@ -1233,12 +1411,14 @@ github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/ github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -1246,6 +1426,9 @@ github.com/gosimple/slug v1.12.0 h1:xzuhj7G7cGtd34NXnW/yF0l+AGNfWqwgh/IXgFy7dnc= github.com/gosimple/slug v1.12.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ= github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o= github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= @@ -1362,9 +1545,11 @@ github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/intel/goresctrl v0.3.0/go.mod h1:fdz3mD85cmP9sHD8JUlrNWAxvwM86CrbmVXltEKd7zk= github.com/ivanpirog/coloredcobra v1.0.1 h1:aURSdEmlR90/tSiWS0dMjdwOvCVUeYLfltLfbgNxrN4= github.com/ivanpirog/coloredcobra v1.0.1/go.mod h1:iho4nEKcnwZFiniGSdcgdvRgZNjxm+h20acv8vqmN6Q= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= @@ -1430,6 +1615,8 @@ github.com/johannesboyne/gofakes3 v0.0.0-20220517215058-83a58ec253b6/go.mod h1:L github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -1439,6 +1626,7 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwalton/go-supportscolor v1.2.0 h1:g6Ha4u7Vm3LIsQ5wmeBpS4gazu0UP1DRDE8y6bre4H8= @@ -1496,8 +1684,10 @@ github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -1528,18 +1718,21 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= 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/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikefarah/yq/v4 v4.45.1 h1:EW+HjKEVa55pUYFJseEHEHdQ0+ulunY+q42zF3M7ZaQ= github.com/mikefarah/yq/v4 v4.45.1/go.mod h1:djgN2vD749hpjVNGYTShr5Kmv5LYljhCG3lUTuEe3LM= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mistifyio/go-zfs/v3 v3.0.1/go.mod h1:CzVgeB0RvF2EGzQnytKVvVSDwmKJXxkOTUGbNrTja/k= 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= @@ -1565,12 +1758,20 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= +github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1579,6 +1780,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= @@ -1590,11 +1792,17 @@ github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBB github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nats-io/nats.go v1.34.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8= +github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc= github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/open-policy-agent/opa v1.0.0 h1:fZsEwxg1knpPvUn0YDJuJZBcbVg4G3zKpWa3+CnYK+I= @@ -1603,6 +1811,9 @@ 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/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= +github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= 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= @@ -1610,8 +1821,11 @@ 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 v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= 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/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterh/liner v1.2.2/go.mod h1:xFwJyiKIXJZUKItq5dGHZSTBRAuG/CpeNpWLyiNRNwI= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= @@ -1632,6 +1846,9 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/pkg/xattr v0.4.7/go.mod h1:di8WF84zAKk8jzR1UBTEWh9AUlIZZ7M/JNt8e9B6ktU= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1677,6 +1894,7 @@ github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OK github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= @@ -1686,6 +1904,7 @@ github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkB github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 h1:GHRpF1pTW19a8tTFrMLUcfWwyC0pnifVo2ClaLq+hP8= github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= +github.com/sagikazarmark/crypt v0.19.0/go.mod h1:c6vimRziqqERhtSe0MhIvzE1w54FrCHtrXb5NH/ja78= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -1699,6 +1918,7 @@ github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPO github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500 h1:WnNuhiq+FOY3jNj6JXFT+eLN3CQ/oPIsDPRanvwsmbI= @@ -1707,6 +1927,7 @@ github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9Nz github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -1733,10 +1954,12 @@ github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cA github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6/go.mod h1:39R/xuhNgVhi+K0/zst4TLrJrVmbm6LVgl4A0+ZFS5M= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -1759,6 +1982,7 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo= @@ -1773,8 +1997,14 @@ github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4A github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.22.15/go.mod h1:wSan1hmo5zeyLGBjRJbzRTNk8gwoYa2B9n4q9dmRIc0= +github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= +github.com/vishvananda/netlink v1.2.1-beta.2/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= @@ -1783,10 +2013,12 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1815,6 +2047,12 @@ github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaD github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= +go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= +go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -1827,6 +2065,7 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.31.0/go.mod h1:tzQL6E1l+iV44YFTkcAeNQqzXUiekSYP9jjJjXwEd00= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= @@ -1837,6 +2076,7 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= @@ -1857,6 +2097,7 @@ go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -2209,6 +2450,7 @@ golang.org/x/sys v0.20.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/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= 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= @@ -2424,6 +2666,7 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -2576,6 +2819,7 @@ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240314234333-6e1732d8331c/go.mod h1:IN9OQUXZ0xT+26MDwZL8fJcYw+y99b0eYPA2U15Jt8o= google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -2653,6 +2897,7 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= 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/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= 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= @@ -2686,8 +2931,15 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a h1:1XCVEdxrvL6c0TGOhecLuB7U9zYNdxZEjvOqJreKZiM= inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a/go.mod h1:e83i32mAQOW1LAqEIweALsuK2Uw4mhQadA5r7b0Wobo= +k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= +k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.26.2/go.mod h1:GHcozwXgXsPuOJ28EnQ/jXEM9QeG6HT22YxSNmpYNh8= k8s.io/client-go v0.26.2 h1:s1WkVujHX3kTp4Zn4yGNFK+dlDXy1bAAkIl+cFAiuYI= k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= +k8s.io/component-base v0.26.2/go.mod h1:DxbuIe9M3IZPRxPIzhch2m1eT7uFrSBJUBuVCQEBivs= +k8s.io/cri-api v0.27.1/go.mod h1:+Ts/AVYbIo04S86XbTD73UPp/DkTiYxtsFeOFEu32L0= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrDp+YEkVDAHu7Jwk= k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= @@ -2724,6 +2976,7 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= +mvdan.cc/editorconfig v0.3.0/go.mod h1:NcJHuDtNOTEJ6251indKiWuzK6+VcrMuLzGMLKBFupQ= mvdan.cc/sh/v3 v3.10.0 h1:v9z7N1DLZ7owyLM/SXZQkBSXcwr2IGMm2LY2pmhVXj4= mvdan.cc/sh/v3 v3.10.0/go.mod h1:z/mSSVyLFGZzqb3ZIKojjyqIx/xbmz/UHdCSv9HmqXY= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= @@ -2733,5 +2986,9 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +tags.cncf.io/container-device-interface v0.7.2/go.mod h1:Xb1PvXv2BhfNb3tla4r9JL129ck1Lxv9KuU6eVOfKto= +tags.cncf.io/container-device-interface/specs-go v0.7.0/go.mod h1:hMAwAbMZyBLdmYqWgYcKH0F/yctNpV3P35f+/088A80= diff --git a/internal/exec/atlantis_generate_repo_config.go b/internal/exec/atlantis_generate_repo_config.go index d833740e9..5bef86f85 100644 --- a/internal/exec/atlantis_generate_repo_config.go +++ b/internal/exec/atlantis_generate_repo_config.go @@ -487,14 +487,14 @@ func ExecuteAtlantisGenerateRepoConfig( fileName := outputPath if fileName == "" { fileName = atmosConfig.Integrations.Atlantis.Path - u.LogDebug(atmosConfig, fmt.Sprintf("Using 'atlantis.path: %s' from 'atmos.yaml'", fileName)) + u.LogDebug(fmt.Sprintf("Using 'atlantis.path: %s' from 'atmos.yaml'", fileName)) } else { - u.LogDebug(atmosConfig, fmt.Sprintf("Using '--output-path %s' command-line argument", fileName)) + u.LogDebug(fmt.Sprintf("Using '--output-path %s' command-line argument", fileName)) } // If the path is empty, dump to 'stdout' if fileName != "" { - u.LogDebug(atmosConfig, fmt.Sprintf("Writing atlantis repo config file to '%s'\n", fileName)) + u.LogDebug(fmt.Sprintf("Writing atlantis repo config file to '%s'\n", fileName)) fileAbsolutePath, err := filepath.Abs(fileName) if err != nil { diff --git a/internal/exec/aws_eks_update_kubeconfig.go b/internal/exec/aws_eks_update_kubeconfig.go index eae912ac3..a739948bc 100644 --- a/internal/exec/aws_eks_update_kubeconfig.go +++ b/internal/exec/aws_eks_update_kubeconfig.go @@ -231,7 +231,7 @@ func ExecuteAwsEksUpdateKubeconfig(kubeconfigContext schema.AwsEksUpdateKubeconf if kubeconfigPath != "" { message := fmt.Sprintf("\n'kubeconfig' has been downloaded to '%s'\nYou can set 'KUBECONFIG' ENV var to use in other scripts\n", kubeconfigPath) - u.LogDebug(atmosConfig, message) + u.LogDebug(message) } return nil diff --git a/internal/exec/describe_affected_utils.go b/internal/exec/describe_affected_utils.go index 35897184a..f4ce22757 100644 --- a/internal/exec/describe_affected_utils.go +++ b/internal/exec/describe_affected_utils.go @@ -73,7 +73,7 @@ func ExecuteDescribeAffectedWithTargetRefClone( defer removeTempDir(atmosConfig, tempDir) - u.LogTrace(atmosConfig, fmt.Sprintf("\nCloning repo '%s' into the temp dir '%s'", localRepoInfo.RepoUrl, tempDir)) + u.LogTrace(fmt.Sprintf("\nCloning repo '%s' into the temp dir '%s'", localRepoInfo.RepoUrl, tempDir)) cloneOptions := git.CloneOptions{ URL: localRepoInfo.RepoUrl, @@ -84,9 +84,9 @@ func ExecuteDescribeAffectedWithTargetRefClone( // If `ref` flag is not provided, it will clone the HEAD of the default branch if ref != "" { cloneOptions.ReferenceName = plumbing.ReferenceName(ref) - u.LogTrace(atmosConfig, fmt.Sprintf("\nCloning Git ref '%s' ...\n", ref)) + u.LogTrace(fmt.Sprintf("\nCloning Git ref '%s' ...\n", ref)) } else { - u.LogTrace(atmosConfig, "\nCloned the HEAD of the default branch ...\n") + u.LogTrace("\nCloned the HEAD of the default branch ...\n") } if verbose { @@ -126,14 +126,14 @@ func ExecuteDescribeAffectedWithTargetRefClone( } if ref != "" { - u.LogTrace(atmosConfig, fmt.Sprintf("\nCloned Git ref '%s'\n", ref)) + u.LogTrace(fmt.Sprintf("\nCloned Git ref '%s'\n", ref)) } else { - u.LogTrace(atmosConfig, fmt.Sprintf("\nCloned Git ref '%s'\n", remoteRepoHead.Name())) + u.LogTrace(fmt.Sprintf("\nCloned Git ref '%s'\n", remoteRepoHead.Name())) } // Check if a commit SHA was provided and checkout the repo at that commit SHA if sha != "" { - u.LogTrace(atmosConfig, fmt.Sprintf("\nChecking out commit SHA '%s' ...\n", sha)) + u.LogTrace(fmt.Sprintf("\nChecking out commit SHA '%s' ...\n", sha)) w, err := remoteRepo.Worktree() if err != nil { @@ -152,7 +152,7 @@ func ExecuteDescribeAffectedWithTargetRefClone( return nil, nil, nil, "", err } - u.LogTrace(atmosConfig, fmt.Sprintf("\nChecked out commit SHA '%s'\n", sha)) + u.LogTrace(fmt.Sprintf("\nChecked out commit SHA '%s'\n", sha)) } affected, localRepoHead, remoteRepoHead, err := executeDescribeAffected( @@ -208,7 +208,7 @@ func ExecuteDescribeAffectedWithTargetRefCheckout( defer removeTempDir(atmosConfig, tempDir) // Copy the local repo into the temp directory - u.LogTrace(atmosConfig, fmt.Sprintf("\nCopying the local repo into the temp directory '%s' ...", tempDir)) + u.LogTrace(fmt.Sprintf("\nCopying the local repo into the temp directory '%s' ...", tempDir)) copyOptions := cp.Options{ PreserveTimes: false, @@ -236,7 +236,7 @@ func ExecuteDescribeAffectedWithTargetRefCheckout( return nil, nil, nil, "", err } - u.LogTrace(atmosConfig, fmt.Sprintf("Copied the local repo into the temp directory '%s'\n", tempDir)) + u.LogTrace(fmt.Sprintf("Copied the local repo into the temp directory '%s'\n", tempDir)) remoteRepo, err := git.PlainOpenWithOptions(tempDir, &git.PlainOpenOptions{ DetectDotGit: false, @@ -253,7 +253,7 @@ func ExecuteDescribeAffectedWithTargetRefCheckout( } if sha != "" { - u.LogTrace(atmosConfig, fmt.Sprintf("\nChecking out commit SHA '%s' ...\n", sha)) + u.LogTrace(fmt.Sprintf("\nChecking out commit SHA '%s' ...\n", sha)) w, err := remoteRepo.Worktree() if err != nil { @@ -272,14 +272,14 @@ func ExecuteDescribeAffectedWithTargetRefCheckout( return nil, nil, nil, "", err } - u.LogTrace(atmosConfig, fmt.Sprintf("Checked out commit SHA '%s'\n", sha)) + u.LogTrace(fmt.Sprintf("Checked out commit SHA '%s'\n", sha)) } else { // If `ref` is not provided, use the HEAD of the remote origin if ref == "" { ref = "refs/remotes/origin/HEAD" } - u.LogTrace(atmosConfig, fmt.Sprintf("\nChecking out Git ref '%s' ...", ref)) + u.LogTrace(fmt.Sprintf("\nChecking out Git ref '%s' ...", ref)) w, err := remoteRepo.Worktree() if err != nil { @@ -304,7 +304,7 @@ func ExecuteDescribeAffectedWithTargetRefCheckout( return nil, nil, nil, "", err } - u.LogTrace(atmosConfig, fmt.Sprintf("Checked out Git ref '%s'\n", ref)) + u.LogTrace(fmt.Sprintf("Checked out Git ref '%s'\n", ref)) } affected, localRepoHead, remoteRepoHead, err := executeDescribeAffected( @@ -404,8 +404,8 @@ func executeDescribeAffected( return nil, nil, nil, err } - u.LogTrace(atmosConfig, fmt.Sprintf("Current HEAD: %s", localRepoHead)) - u.LogTrace(atmosConfig, fmt.Sprintf("BASE: %s", remoteRepoHead)) + u.LogTrace(fmt.Sprintf("Current HEAD: %s", localRepoHead)) + u.LogTrace(fmt.Sprintf("BASE: %s", remoteRepoHead)) currentStacks, err := ExecuteDescribeStacks(atmosConfig, stack, nil, nil, nil, false, true, false) if err != nil { @@ -448,39 +448,39 @@ func executeDescribeAffected( return nil, nil, nil, err } - u.LogTrace(atmosConfig, fmt.Sprintf("\nGetting current working repo commit object...")) + u.LogTrace(fmt.Sprintf("\nGetting current working repo commit object...")) localCommit, err := localRepo.CommitObject(localRepoHead.Hash()) if err != nil { return nil, nil, nil, err } - u.LogTrace(atmosConfig, fmt.Sprintf("Got current working repo commit object")) - u.LogTrace(atmosConfig, fmt.Sprintf("Getting current working repo commit tree...")) + u.LogTrace(fmt.Sprintf("Got current working repo commit object")) + u.LogTrace(fmt.Sprintf("Getting current working repo commit tree...")) localTree, err := localCommit.Tree() if err != nil { return nil, nil, nil, err } - u.LogTrace(atmosConfig, fmt.Sprintf("Got current working repo commit tree")) - u.LogTrace(atmosConfig, fmt.Sprintf("Getting remote repo commit object...")) + u.LogTrace(fmt.Sprintf("Got current working repo commit tree")) + u.LogTrace(fmt.Sprintf("Getting remote repo commit object...")) remoteCommit, err := remoteRepo.CommitObject(remoteRepoHead.Hash()) if err != nil { return nil, nil, nil, err } - u.LogTrace(atmosConfig, fmt.Sprintf("Got remote repo commit object")) - u.LogTrace(atmosConfig, fmt.Sprintf("Getting remote repo commit tree...")) + u.LogTrace(fmt.Sprintf("Got remote repo commit object")) + u.LogTrace(fmt.Sprintf("Getting remote repo commit tree...")) remoteTree, err := remoteCommit.Tree() if err != nil { return nil, nil, nil, err } - u.LogTrace(atmosConfig, fmt.Sprintf("Got remote repo commit tree")) - u.LogTrace(atmosConfig, fmt.Sprintf("Finding difference between the current working branch and remote target branch ...")) + u.LogTrace(fmt.Sprintf("Got remote repo commit tree")) + u.LogTrace(fmt.Sprintf("Finding difference between the current working branch and remote target branch ...")) // Find a slice of Patch objects with all the changes between the current working and remote trees patch, err := localTree.Patch(remoteTree) @@ -491,16 +491,16 @@ func executeDescribeAffected( var changedFiles []string if len(patch.Stats()) > 0 { - u.LogTrace(atmosConfig, fmt.Sprintf("Found difference between the current working branch and remote target branch")) - u.LogTrace(atmosConfig, "\nChanged files:\n") + u.LogTrace(fmt.Sprintf("Found difference between the current working branch and remote target branch")) + u.LogTrace("\nChanged files:\n") for _, fileStat := range patch.Stats() { - u.LogTrace(atmosConfig, fileStat.Name) + u.LogTrace(fileStat.Name) changedFiles = append(changedFiles, fileStat.Name) } - u.LogTrace(atmosConfig, "") + u.LogTrace("") } else { - u.LogTrace(atmosConfig, fmt.Sprintf("The current working branch and remote target branch are the same")) + u.LogTrace(fmt.Sprintf("The current working branch and remote target branch are the same")) } affected, err := findAffected( diff --git a/internal/exec/describe_stacks.go b/internal/exec/describe_stacks.go index ba2090f9d..a06eac728 100644 --- a/internal/exec/describe_stacks.go +++ b/internal/exec/describe_stacks.go @@ -382,7 +382,7 @@ func ExecuteDescribeStacks( err = errors.Join(err, errors.New(errorMessage)) } } - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } componentSectionFinal, err := ProcessCustomYamlTags(atmosConfig, componentSectionConverted, stackName) @@ -573,7 +573,7 @@ func ExecuteDescribeStacks( err = errors.Join(err, errors.New(errorMessage)) } } - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } componentSectionFinal, err := ProcessCustomYamlTags(atmosConfig, componentSectionConverted, stackName) diff --git a/internal/exec/file_utils.go b/internal/exec/file_utils.go index 4d65f8610..e3e5886aa 100644 --- a/internal/exec/file_utils.go +++ b/internal/exec/file_utils.go @@ -12,14 +12,14 @@ import ( func removeTempDir(atmosConfig schema.AtmosConfiguration, path string) { err := os.RemoveAll(path) if err != nil { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) } } func closeFile(fileName string, file io.ReadCloser) { err := file.Close() if err != nil { - u.LogError(schema.AtmosConfiguration{}, fmt.Errorf("error closing the file '%s': %v", fileName, err)) + u.LogError(fmt.Errorf("error closing the file '%s': %v", fileName, err)) } } diff --git a/internal/exec/helmfile.go b/internal/exec/helmfile.go index 734cbdf68..0a0c5898f 100644 --- a/internal/exec/helmfile.go +++ b/internal/exec/helmfile.go @@ -68,7 +68,7 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { } if !info.ComponentIsEnabled { - u.LogInfo(atmosConfig, fmt.Sprintf("component '%s' is not enabled and skipped", info.ComponentFromArg)) + u.LogInfo(fmt.Sprintf("component '%s' is not enabled and skipped", info.ComponentFromArg)) return nil } @@ -105,7 +105,7 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { } // Print component variables - u.LogDebug(atmosConfig, fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) + u.LogDebug(fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) if atmosConfig.Logs.Level == u.LogLevelTrace || atmosConfig.Logs.Level == u.LogLevelDebug { err = u.PrintAsYAMLToFileDescriptor(atmosConfig, info.ComponentVarsSection) @@ -127,8 +127,8 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { varFile := constructHelmfileComponentVarfileName(info) varFilePath := constructHelmfileComponentVarfilePath(atmosConfig, info) - u.LogDebug(atmosConfig, "Writing the variables to file:") - u.LogDebug(atmosConfig, varFilePath) + u.LogDebug("Writing the variables to file:") + u.LogDebug(varFilePath) if !info.DryRun { err = u.WriteToFileAsYAML(varFilePath, info.ComponentVarsSection, 0644) @@ -149,12 +149,12 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { if atmosConfig.Components.Helmfile.UseEKS { // Prepare AWS profile helmAwsProfile := cfg.ReplaceContextTokens(context, atmosConfig.Components.Helmfile.HelmAwsProfilePattern) - u.LogDebug(atmosConfig, fmt.Sprintf("\nUsing AWS_PROFILE=%s\n\n", helmAwsProfile)) + u.LogDebug(fmt.Sprintf("\nUsing AWS_PROFILE=%s\n\n", helmAwsProfile)) // Download kubeconfig by running `aws eks update-kubeconfig` kubeconfigPath := fmt.Sprintf("%s/%s-kubecfg", atmosConfig.Components.Helmfile.KubeconfigPath, info.ContextPrefix) clusterName := cfg.ReplaceContextTokens(context, atmosConfig.Components.Helmfile.ClusterNamePattern) - u.LogDebug(atmosConfig, fmt.Sprintf("Downloading kubeconfig from the cluster '%s' and saving it to %s\n\n", clusterName, kubeconfigPath)) + u.LogDebug(fmt.Sprintf("Downloading kubeconfig from the cluster '%s' and saving it to %s\n\n", clusterName, kubeconfigPath)) err = ExecuteShellCommand( atmosConfig, @@ -184,33 +184,33 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { } // Print command info - u.LogDebug(atmosConfig, "\nCommand info:") - u.LogDebug(atmosConfig, "Helmfile binary: "+info.Command) - u.LogDebug(atmosConfig, "Helmfile command: "+info.SubCommand) + u.LogDebug("\nCommand info:") + u.LogDebug("Helmfile binary: " + info.Command) + u.LogDebug("Helmfile command: " + info.SubCommand) // https://github.com/roboll/helmfile#cli-reference // atmos helmfile diff echo-server -s tenant1-ue2-dev --global-options "--no-color --namespace=test" // atmos helmfile diff echo-server -s tenant1-ue2-dev --global-options "--no-color --namespace test" // atmos helmfile diff echo-server -s tenant1-ue2-dev --global-options="--no-color --namespace=test" // atmos helmfile diff echo-server -s tenant1-ue2-dev --global-options="--no-color --namespace test" - u.LogDebug(atmosConfig, fmt.Sprintf("Global options: %v", info.GlobalOptions)) + u.LogDebug(fmt.Sprintf("Global options: %v", info.GlobalOptions)) - u.LogDebug(atmosConfig, fmt.Sprintf("Arguments and flags: %v", info.AdditionalArgsAndFlags)) - u.LogDebug(atmosConfig, "Component: "+info.ComponentFromArg) + u.LogDebug(fmt.Sprintf("Arguments and flags: %v", info.AdditionalArgsAndFlags)) + u.LogDebug("Component: " + info.ComponentFromArg) if len(info.BaseComponent) > 0 { - u.LogDebug(atmosConfig, "Helmfile component: "+info.BaseComponent) + u.LogDebug("Helmfile component: " + info.BaseComponent) } if info.Stack == info.StackFromArg { - u.LogDebug(atmosConfig, "Stack: "+info.StackFromArg) + u.LogDebug("Stack: " + info.StackFromArg) } else { - u.LogDebug(atmosConfig, "Stack: "+info.StackFromArg) - u.LogDebug(atmosConfig, "Stack path: "+filepath.Join(atmosConfig.BasePath, atmosConfig.Stacks.BasePath, info.Stack)) + u.LogDebug("Stack: " + info.StackFromArg) + u.LogDebug("Stack path: " + filepath.Join(atmosConfig.BasePath, atmosConfig.Stacks.BasePath, info.Stack)) } workingDir := constructHelmfileComponentWorkingDir(atmosConfig, info) - u.LogDebug(atmosConfig, fmt.Sprintf("Working dir: %s\n\n", workingDir)) + u.LogDebug(fmt.Sprintf("Working dir: %s\n\n", workingDir)) // Prepare arguments and flags allArgsAndFlags := []string{"--state-values-file", varFile} @@ -255,9 +255,9 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { envVars = append(envVars, envVarsEKS...) } - u.LogTrace(atmosConfig, "Using ENV vars:") + u.LogTrace("Using ENV vars:") for _, v := range envVars { - u.LogTrace(atmosConfig, v) + u.LogTrace(v) } err = ExecuteShellCommand( @@ -276,7 +276,7 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { // Cleanup err = os.Remove(varFilePath) if err != nil { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) } return nil diff --git a/internal/exec/helmfile_generate_varfile.go b/internal/exec/helmfile_generate_varfile.go index 2f1ac4da8..0562df7ce 100644 --- a/internal/exec/helmfile_generate_varfile.go +++ b/internal/exec/helmfile_generate_varfile.go @@ -59,7 +59,7 @@ func ExecuteHelmfileGenerateVarfileCmd(cmd *cobra.Command, args []string) error } // Print the component variables - u.LogDebug(atmosConfig, fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) + u.LogDebug(fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) if atmosConfig.Logs.Level == u.LogLevelTrace || atmosConfig.Logs.Level == u.LogLevelDebug { err = u.PrintAsYAMLToFileDescriptor(atmosConfig, info.ComponentVarsSection) @@ -69,8 +69,8 @@ func ExecuteHelmfileGenerateVarfileCmd(cmd *cobra.Command, args []string) error } // Write the variables to file - u.LogDebug(atmosConfig, "Writing the variables to file:") - u.LogDebug(atmosConfig, varFilePath) + u.LogDebug("Writing the variables to file:") + u.LogDebug(varFilePath) if !info.DryRun { err = u.WriteToFileAsYAML(varFilePath, info.ComponentVarsSection, 0644) diff --git a/internal/exec/oci_utils.go b/internal/exec/oci_utils.go index 49b591658..dde817233 100644 --- a/internal/exec/oci_utils.go +++ b/internal/exec/oci_utils.go @@ -60,7 +60,7 @@ func processOciImage(atmosConfig schema.AtmosConfiguration, imageName string, de m, err := tarball.LoadManifest(func() (io.ReadCloser, error) { f, err := os.Open(tempTarFileName) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } return f, nil diff --git a/internal/exec/shell_utils.go b/internal/exec/shell_utils.go index 119058172..be06ceb4a 100644 --- a/internal/exec/shell_utils.go +++ b/internal/exec/shell_utils.go @@ -80,22 +80,22 @@ func ExecuteShellCommand( } else { f, err := os.OpenFile(redirectStdError, os.O_WRONLY|os.O_CREATE, 0644) if err != nil { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) return err } defer func(f *os.File) { err = f.Close() if err != nil { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) } }(f) cmd.Stderr = f } - u.LogDebug(atmosConfig, "\nExecuting command:") - u.LogDebug(atmosConfig, cmd.String()) + u.LogDebug("\nExecuting command:") + u.LogDebug(cmd.String()) if dryRun { return nil @@ -119,8 +119,8 @@ func ExecuteShell( } updatedEnv := append(env, fmt.Sprintf("ATMOS_SHLVL=%d", newShellLevel)) - u.LogDebug(atmosConfig, "\nExecuting command:") - u.LogDebug(atmosConfig, command) + u.LogDebug("\nExecuting command:") + u.LogDebug(command) if dryRun { return nil @@ -146,8 +146,8 @@ func ExecuteShellAndReturnOutput( } updatedEnv := append(env, fmt.Sprintf("ATMOS_SHLVL=%d", newShellLevel)) - u.LogDebug(atmosConfig, "\nExecuting command:") - u.LogDebug(atmosConfig, command) + u.LogDebug("\nExecuting command:") + u.LogDebug(command) if dryRun { return "", nil @@ -214,7 +214,7 @@ func execTerraformShellCommand( } val, err := strconv.Atoi(atmosShellLvl) if err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Failed to parse ATMOS_SHLVL: %v", err)) + u.LogWarning(fmt.Sprintf("Failed to parse ATMOS_SHLVL: %v", err)) return } // Prevent negative values @@ -223,7 +223,7 @@ func execTerraformShellCommand( newVal = 0 } if err := os.Setenv("ATMOS_SHLVL", fmt.Sprintf("%d", newVal)); err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Failed to update ATMOS_SHLVL: %v", err)) + u.LogWarning(fmt.Sprintf("Failed to update ATMOS_SHLVL: %v", err)) } }() @@ -261,12 +261,12 @@ func execTerraformShellCommand( } } - u.LogDebug(atmosConfig, "\nStarting a new interactive shell where you can execute all native Terraform commands (type 'exit' to go back)") - u.LogDebug(atmosConfig, fmt.Sprintf("Component: %s\n", component)) - u.LogDebug(atmosConfig, fmt.Sprintf("Stack: %s\n", stack)) - u.LogDebug(atmosConfig, fmt.Sprintf("Working directory: %s\n", workingDir)) - u.LogDebug(atmosConfig, fmt.Sprintf("Terraform workspace: %s\n", workspaceName)) - u.LogDebug(atmosConfig, "\nSetting the ENV vars in the shell:\n") + u.LogDebug("\nStarting a new interactive shell where you can execute all native Terraform commands (type 'exit' to go back)") + u.LogDebug(fmt.Sprintf("Component: %s\n", component)) + u.LogDebug(fmt.Sprintf("Stack: %s\n", stack)) + u.LogDebug(fmt.Sprintf("Working directory: %s\n", workingDir)) + u.LogDebug(fmt.Sprintf("Terraform workspace: %s\n", workspaceName)) + u.LogDebug("\nSetting the ENV vars in the shell:\n") // Merge env vars, ensuring componentEnvList takes precedence mergedEnv := mergeEnvVars(atmosConfig, componentEnvList) @@ -314,7 +314,7 @@ func execTerraformShellCommand( } } - u.LogDebug(atmosConfig, fmt.Sprintf("Starting process: %s\n", shellCommand)) + u.LogDebug(fmt.Sprintf("Starting process: %s\n", shellCommand)) args := strings.Fields(shellCommand) @@ -329,7 +329,7 @@ func execTerraformShellCommand( return err } - u.LogDebug(atmosConfig, fmt.Sprintf("Exited shell: %s\n", state.String())) + u.LogDebug(fmt.Sprintf("Exited shell: %s\n", state.String())) return nil } @@ -346,7 +346,7 @@ func mergeEnvVars(atmosConfig schema.AtmosConfiguration, componentEnvList []stri for _, env := range os.Environ() { if parts := strings.SplitN(env, "=", 2); len(parts) == 2 { if strings.HasPrefix(parts[0], "TF_") { - u.LogWarning(atmosConfig, fmt.Sprintf("detected '%s' set in the environment; this may interfere with Atmos's control of Terraform.", parts[0])) + u.LogWarning(fmt.Sprintf("detected '%s' set in the environment; this may interfere with Atmos's control of Terraform.", parts[0])) } envMap[parts[0]] = parts[1] } @@ -375,7 +375,7 @@ func mergeEnvVars(atmosConfig schema.AtmosConfiguration, componentEnvList []stri // Convert back to slice merged := make([]string, 0, len(envMap)) for k, v := range envMap { - u.LogDebug(atmosConfig, fmt.Sprintf("%s=%s", k, v)) + u.LogDebug(fmt.Sprintf("%s=%s", k, v)) merged = append(merged, k+"="+v) } return merged diff --git a/internal/exec/tar_utils.go b/internal/exec/tar_utils.go index bcd1f1392..7a171f2d2 100644 --- a/internal/exec/tar_utils.go +++ b/internal/exec/tar_utils.go @@ -42,7 +42,7 @@ func extractTarball(atmosConfig schema.AtmosConfiguration, sourceFile, extractPa } if strings.Contains(header.Name, "..") { - u.LogTrace(atmosConfig, fmt.Sprintf("the header '%s' in the tarball '%s' contains '..', "+ + u.LogTrace(fmt.Sprintf("the header '%s' in the tarball '%s' contains '..', "+ "which can lead to directory traversal attacks or overriding arbitrary files and directories.", header.Name, sourceFile)) continue @@ -84,7 +84,7 @@ func extractTarball(atmosConfig schema.AtmosConfiguration, sourceFile, extractPa } default: - u.LogTrace(atmosConfig, fmt.Sprintf("the header '%s' in the tarball '%s' has unsupported header type '%v'. "+ + u.LogTrace(fmt.Sprintf("the header '%s' in the tarball '%s' has unsupported header type '%v'. "+ "Supported header types are 'Directory' and 'File'", header.Name, sourceFile, header.Typeflag)) } diff --git a/internal/exec/template_funcs_component.go b/internal/exec/template_funcs_component.go index 1fa4c9269..16d86e00a 100644 --- a/internal/exec/template_funcs_component.go +++ b/internal/exec/template_funcs_component.go @@ -15,7 +15,7 @@ var ( ) func componentFunc(atmosConfig schema.AtmosConfiguration, component string, stack string) (any, error) { - u.LogTrace(atmosConfig, fmt.Sprintf("Executing template function 'atmos.Component(%s, %s)'", component, stack)) + u.LogTrace(fmt.Sprintf("Executing template function 'atmos.Component(%s, %s)'", component, stack)) stackSlug := fmt.Sprintf("%s-%s", stack, component) @@ -23,15 +23,15 @@ func componentFunc(atmosConfig schema.AtmosConfiguration, component string, stac existingSections, found := componentFuncSyncMap.Load(stackSlug) if found && existingSections != nil { if atmosConfig.Logs.Level == u.LogLevelTrace { - u.LogTrace(atmosConfig, fmt.Sprintf("Found the result of the template function 'atmos.Component(%s, %s)' in the cache", component, stack)) + u.LogTrace(fmt.Sprintf("Found the result of the template function 'atmos.Component(%s, %s)' in the cache", component, stack)) if outputsSection, ok := existingSections.(map[string]any)["outputs"]; ok { - u.LogTrace(atmosConfig, "'outputs' section:") + u.LogTrace("'outputs' section:") y, err2 := u.ConvertToYAML(outputsSection) if err2 != nil { - u.LogError(atmosConfig, err2) + u.LogError(err2) } else { - u.LogTrace(atmosConfig, y) + u.LogTrace(y) } } } @@ -73,12 +73,12 @@ func componentFunc(atmosConfig schema.AtmosConfiguration, component string, stac componentFuncSyncMap.Store(stackSlug, sections) if atmosConfig.Logs.Level == u.LogLevelTrace { - u.LogTrace(atmosConfig, fmt.Sprintf("Executed template function 'atmos.Component(%s, %s)'\n\n'outputs' section:", component, stack)) + u.LogTrace(fmt.Sprintf("Executed template function 'atmos.Component(%s, %s)'\n\n'outputs' section:", component, stack)) y, err2 := u.ConvertToYAML(terraformOutputs) if err2 != nil { - u.LogError(atmosConfig, err2) + u.LogError(err2) } else { - u.LogTrace(atmosConfig, y) + u.LogTrace(y) } } diff --git a/internal/exec/template_funcs_gomplate_datasource.go b/internal/exec/template_funcs_gomplate_datasource.go index 318de5400..ca3076969 100644 --- a/internal/exec/template_funcs_gomplate_datasource.go +++ b/internal/exec/template_funcs_gomplate_datasource.go @@ -2,9 +2,10 @@ package exec import ( "fmt" - u "github.com/cloudposse/atmos/pkg/utils" "sync" + u "github.com/cloudposse/atmos/pkg/utils" + "github.com/cloudposse/atmos/pkg/schema" "github.com/hairyhenderson/gomplate/v3/data" ) @@ -14,7 +15,7 @@ var ( ) func gomplateDatasourceFunc(atmosConfig schema.AtmosConfiguration, alias string, gomplateData *data.Data, args ...string) (any, error) { - u.LogTrace(atmosConfig, fmt.Sprintf("atmos.GomplateDatasource(): processing datasource alias '%s'", alias)) + u.LogTrace(fmt.Sprintf("atmos.GomplateDatasource(): processing datasource alias '%s'", alias)) // If the result for the alias already exists in the cache, return it existingResult, found := gomplateDatasourceFuncSyncMap.Load(alias) @@ -30,7 +31,7 @@ func gomplateDatasourceFunc(atmosConfig schema.AtmosConfiguration, alias string, // Cache the result gomplateDatasourceFuncSyncMap.Store(alias, result) - u.LogTrace(atmosConfig, fmt.Sprintf("atmos.GomplateDatasource(): processed datasource alias '%s'.\nResult: '%v'", alias, result)) + u.LogTrace(fmt.Sprintf("atmos.GomplateDatasource(): processed datasource alias '%s'.\nResult: '%v'", alias, result)) return result, nil } diff --git a/internal/exec/template_utils.go b/internal/exec/template_utils.go index 2ecc969d4..09b5a3fdf 100644 --- a/internal/exec/template_utils.go +++ b/internal/exec/template_utils.go @@ -70,11 +70,11 @@ func ProcessTmplWithDatasources( ignoreMissingTemplateValues bool, ) (string, error) { if !atmosConfig.Templates.Settings.Enabled { - u.LogTrace(atmosConfig, fmt.Sprintf("ProcessTmplWithDatasources: not processing template '%s' since templating is disabled in 'atmos.yaml'", tmplName)) + u.LogTrace(fmt.Sprintf("ProcessTmplWithDatasources: not processing template '%s' since templating is disabled in 'atmos.yaml'", tmplName)) return tmplValue, nil } - u.LogTrace(atmosConfig, fmt.Sprintf("ProcessTmplWithDatasources(): processing template '%s'", tmplName)) + u.LogTrace(fmt.Sprintf("ProcessTmplWithDatasources(): processing template '%s'", tmplName)) // Merge the template settings from `atmos.yaml` CLI config and from the stack manifests var cliConfigTemplateSettingsMap map[string]any @@ -109,7 +109,7 @@ func ProcessTmplWithDatasources( result := tmplValue for i := 0; i < evaluations; i++ { - u.LogTrace(atmosConfig, fmt.Sprintf("ProcessTmplWithDatasources(): template '%s' - evaluation %d", tmplName, i+1)) + u.LogTrace(fmt.Sprintf("ProcessTmplWithDatasources(): template '%s' - evaluation %d", tmplName, i+1)) d := data.Data{} @@ -229,7 +229,7 @@ func ProcessTmplWithDatasources( } } - u.LogTrace(atmosConfig, fmt.Sprintf("ProcessTmplWithDatasources(): processed template '%s'", tmplName)) + u.LogTrace(fmt.Sprintf("ProcessTmplWithDatasources(): processed template '%s'", tmplName)) return result, nil } diff --git a/internal/exec/terraform.go b/internal/exec/terraform.go index feeffa823..7d168d444 100644 --- a/internal/exec/terraform.go +++ b/internal/exec/terraform.go @@ -57,8 +57,8 @@ func generateBackendConfig(atmosConfig *schema.AtmosConfiguration, info *schema. if atmosConfig.Components.Terraform.AutoGenerateBackendFile { backendFileName := filepath.Join(workingDir, "backend.tf.json") - u.LogDebug(*atmosConfig, "\nWriting the backend config to file:") - u.LogDebug(*atmosConfig, backendFileName) + u.LogDebug("\nWriting the backend config to file:") + u.LogDebug(backendFileName) if !info.DryRun { componentBackendConfig, err := generateComponentBackendConfig(info.ComponentBackendType, info.ComponentBackendSection, info.TerraformWorkspace) @@ -81,8 +81,8 @@ func generateProviderOverrides(atmosConfig *schema.AtmosConfiguration, info *sch if len(info.ComponentProvidersSection) > 0 { providerOverrideFileName := filepath.Join(workingDir, "providers_override.tf.json") - u.LogDebug(*atmosConfig, "\nWriting the provider overrides to file:") - u.LogDebug(*atmosConfig, providerOverrideFileName) + u.LogDebug("\nWriting the provider overrides to file:") + u.LogDebug(providerOverrideFileName) if !info.DryRun { var providerOverrides = generateComponentProviderOverrides(info.ComponentProvidersSection) @@ -147,7 +147,7 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { } if !info.ComponentIsEnabled { - u.LogInfo(atmosConfig, fmt.Sprintf("component '%s' is not enabled and skipped", info.ComponentFromArg)) + u.LogInfo(fmt.Sprintf("component '%s' is not enabled and skipped", info.ComponentFromArg)) return nil } @@ -186,7 +186,7 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { if info.SubCommand == "clean" { err := handleCleanSubCommand(info, componentPath, atmosConfig) if err != nil { - u.LogTrace(atmosConfig, fmt.Errorf("error cleaning the terraform component: %v", err).Error()) + u.LogTrace(fmt.Errorf("error cleaning the terraform component: %v", err).Error()) return err } return nil @@ -198,7 +198,7 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { // Print component variables and write to file // Don't process variables when executing `terraform workspace` commands if info.SubCommand != "workspace" { - u.LogDebug(atmosConfig, fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) + u.LogDebug(fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) if atmosConfig.Logs.Level == u.LogLevelTrace || atmosConfig.Logs.Level == u.LogLevelDebug { err = u.PrintAsYAMLToFileDescriptor(atmosConfig, info.ComponentVarsSection) @@ -227,8 +227,8 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { varFilePath = constructTerraformComponentVarfilePath(atmosConfig, info) } - u.LogDebug(atmosConfig, "Writing the variables to file:") - u.LogDebug(atmosConfig, varFilePath) + u.LogDebug("Writing the variables to file:") + u.LogDebug(varFilePath) if !info.DryRun { err = u.WriteToFileAsJSON(varFilePath, info.ComponentVarsSection, 0644) @@ -271,7 +271,7 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { for _, envVar := range os.Environ() { if strings.HasPrefix(envVar, "TF_") { varName := strings.SplitN(envVar, "=", 2)[0] - u.LogWarning(atmosConfig, fmt.Sprintf("detected '%s' set in the environment; this may interfere with Atmos's control of Terraform.", varName)) + u.LogWarning(fmt.Sprintf("detected '%s' set in the environment; this may interfere with Atmos's control of Terraform.", varName)) } } @@ -291,9 +291,9 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { // Print ENV vars if they are found in the component's stack config if len(info.ComponentEnvList) > 0 { - u.LogDebug(atmosConfig, "\nUsing ENV vars:") + u.LogDebug("\nUsing ENV vars:") for _, v := range info.ComponentEnvList { - u.LogDebug(atmosConfig, v) + u.LogDebug(v) } } @@ -306,7 +306,7 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { } if info.SkipInit { - u.LogDebug(atmosConfig, "Skipping over 'terraform init' due to '--skip-init' flag being passed") + u.LogDebug("Skipping over 'terraform init' due to '--skip-init' flag being passed") runTerraformInit = false } @@ -349,34 +349,34 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { } // Print command info - u.LogDebug(atmosConfig, "\nCommand info:") - u.LogDebug(atmosConfig, "Terraform binary: "+info.Command) + u.LogDebug("\nCommand info:") + u.LogDebug("Terraform binary: " + info.Command) if info.SubCommand2 == "" { - u.LogDebug(atmosConfig, fmt.Sprintf("Terraform command: %s", info.SubCommand)) + u.LogDebug(fmt.Sprintf("Terraform command: %s", info.SubCommand)) } else { - u.LogDebug(atmosConfig, fmt.Sprintf("Terraform command: %s %s", info.SubCommand, info.SubCommand2)) + u.LogDebug(fmt.Sprintf("Terraform command: %s %s", info.SubCommand, info.SubCommand2)) } - u.LogDebug(atmosConfig, fmt.Sprintf("Arguments and flags: %v", info.AdditionalArgsAndFlags)) - u.LogDebug(atmosConfig, "Component: "+info.ComponentFromArg) + u.LogDebug(fmt.Sprintf("Arguments and flags: %v", info.AdditionalArgsAndFlags)) + u.LogDebug("Component: " + info.ComponentFromArg) if len(info.BaseComponentPath) > 0 { - u.LogDebug(atmosConfig, "Terraform component: "+info.BaseComponentPath) + u.LogDebug("Terraform component: " + info.BaseComponentPath) } if len(info.ComponentInheritanceChain) > 0 { - u.LogDebug(atmosConfig, "Inheritance: "+info.ComponentFromArg+" -> "+strings.Join(info.ComponentInheritanceChain, " -> ")) + u.LogDebug("Inheritance: " + info.ComponentFromArg + " -> " + strings.Join(info.ComponentInheritanceChain, " -> ")) } if info.Stack == info.StackFromArg { - u.LogDebug(atmosConfig, "Stack: "+info.StackFromArg) + u.LogDebug("Stack: " + info.StackFromArg) } else { - u.LogDebug(atmosConfig, "Stack: "+info.StackFromArg) - u.LogDebug(atmosConfig, "Stack path: "+filepath.Join(atmosConfig.BasePath, atmosConfig.Stacks.BasePath, info.Stack)) + u.LogDebug("Stack: " + info.StackFromArg) + u.LogDebug("Stack path: " + filepath.Join(atmosConfig.BasePath, atmosConfig.Stacks.BasePath, info.Stack)) } - u.LogDebug(atmosConfig, fmt.Sprintf("Working dir: %s", workingDir)) + u.LogDebug(fmt.Sprintf("Working dir: %s", workingDir)) allArgsAndFlags := strings.Fields(info.SubCommand) diff --git a/internal/exec/terraform_clean.go b/internal/exec/terraform_clean.go index 709962b19..6b154c787 100644 --- a/internal/exec/terraform_clean.go +++ b/internal/exec/terraform_clean.go @@ -51,7 +51,7 @@ func findFoldersNamesWithPrefix(root, prefix string, atmosConfig schema.AtmosCon level2Path := filepath.Join(root, dir.Name()) level2Dirs, err := os.ReadDir(level2Path) if err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Error reading subdirectory %s: %v", level2Path, err)) + u.LogWarning(fmt.Sprintf("Error reading subdirectory %s: %v", level2Path, err)) continue } @@ -287,7 +287,7 @@ func confirmDeletion(atmosConfig schema.AtmosConfiguration) (bool, error) { return false, err } if !confirm { - u.LogWarning(atmosConfig, "Mission aborted.") + u.LogWarning("Mission aborted.") return false, nil } return true, nil @@ -312,7 +312,7 @@ func deleteFolders(folders []Directory, relativePath string, atmosConfig schema. } if len(errors) > 0 { for _, err := range errors { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) } } // check if the folder is empty by using the os.ReadDir function @@ -320,7 +320,7 @@ func deleteFolders(folders []Directory, relativePath string, atmosConfig schema. entries, err := os.ReadDir(folder.FullPath) if err == nil && len(entries) == 0 { if err := os.Remove(folder.FullPath); err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Error removing directory %s: %v", folder.FullPath, err)) + u.LogWarning(fmt.Sprintf("Error removing directory %s: %v", folder.FullPath, err)) } } } @@ -335,15 +335,15 @@ func handleTFDataDir(componentPath string, relativePath string, atmosConfig sche return } if err := IsValidDataDir(tfDataDir); err != nil { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) return } if _, err := os.Stat(filepath.Join(componentPath, tfDataDir)); os.IsNotExist(err) { - u.LogWarning(atmosConfig, fmt.Sprintf("TF_DATA_DIR '%s' does not exist", tfDataDir)) + u.LogWarning(fmt.Sprintf("TF_DATA_DIR '%s' does not exist", tfDataDir)) return } if err := DeletePathTerraform(filepath.Join(componentPath, tfDataDir), filepath.Join(relativePath, tfDataDir)); err != nil { - u.LogWarning(atmosConfig, err.Error()) + u.LogWarning(err.Error()) } } @@ -411,7 +411,7 @@ func handleCleanSubCommand(info schema.ConfigAndStacksInfo, componentPath string filesToClear := initializeFilesToClear(info, atmosConfig, everything) folders, err := CollectDirectoryObjects(cleanPath, filesToClear) if err != nil { - u.LogTrace(atmosConfig, fmt.Errorf("error collecting folders and files: %v", err).Error()) + u.LogTrace(fmt.Errorf("error collecting folders and files: %v", err).Error()) return err } @@ -419,7 +419,7 @@ func handleCleanSubCommand(info schema.ConfigAndStacksInfo, componentPath string stackFolders, err := getStackTerraformStateFolder(cleanPath, info.Stack, atmosConfig) if err != nil { errMsg := fmt.Errorf("error getting stack terraform state folders: %v", err) - u.LogTrace(atmosConfig, errMsg.Error()) + u.LogTrace(errMsg.Error()) } if stackFolders != nil { folders = append(folders, stackFolders...) @@ -430,11 +430,11 @@ func handleCleanSubCommand(info schema.ConfigAndStacksInfo, componentPath string var tfDataDirFolders []Directory if tfDataDir != "" { if err := IsValidDataDir(tfDataDir); err != nil { - u.LogTrace(atmosConfig, err.Error()) + u.LogTrace(err.Error()) } else { tfDataDirFolders, err = CollectDirectoryObjects(cleanPath, []string{tfDataDir}) if err != nil { - u.LogTrace(atmosConfig, fmt.Errorf("error collecting folder of ENV TF_DATA_DIR: %v", err).Error()) + u.LogTrace(fmt.Errorf("error collecting folder of ENV TF_DATA_DIR: %v", err).Error()) } } } diff --git a/internal/exec/terraform_generate_backend.go b/internal/exec/terraform_generate_backend.go index 632b8e508..13ee4bbfb 100644 --- a/internal/exec/terraform_generate_backend.go +++ b/internal/exec/terraform_generate_backend.go @@ -58,7 +58,7 @@ func ExecuteTerraformGenerateBackendCmd(cmd *cobra.Command, args []string) error return err } - u.LogDebug(atmosConfig, "Component backend config:\n\n") + u.LogDebug("Component backend config:\n\n") if atmosConfig.Logs.Level == u.LogLevelTrace || atmosConfig.Logs.Level == u.LogLevelDebug { err = u.PrintAsJSONToFileDescriptor(atmosConfig, componentBackendConfig) @@ -83,8 +83,8 @@ func ExecuteTerraformGenerateBackendCmd(cmd *cobra.Command, args []string) error "backend.tf.json", ) - u.LogDebug(atmosConfig, "\nWriting the backend config to file:") - u.LogDebug(atmosConfig, backendFilePath) + u.LogDebug("\nWriting the backend config to file:") + u.LogDebug(backendFilePath) if !info.DryRun { err = u.WriteToFileAsJSON(backendFilePath, componentBackendConfig, 0644) diff --git a/internal/exec/terraform_generate_backends.go b/internal/exec/terraform_generate_backends.go index 99099edb1..0404d1577 100644 --- a/internal/exec/terraform_generate_backends.go +++ b/internal/exec/terraform_generate_backends.go @@ -257,7 +257,7 @@ func ExecuteTerraformGenerateBackends( err = errors.Join(err, errors.New(errorMessage)) } } - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } componentSectionFinal, err := ProcessCustomYamlTags(atmosConfig, componentSectionConverted, stackName) @@ -327,7 +327,7 @@ func ExecuteTerraformGenerateBackends( } // Write the backend config to the file - u.LogDebug(atmosConfig, fmt.Sprintf("Writing backend config for the component '%s' to file '%s'", terraformComponent, backendFilePath)) + u.LogDebug(fmt.Sprintf("Writing backend config for the component '%s' to file '%s'", terraformComponent, backendFilePath)) if format == "json" { componentBackendConfig, err := generateComponentBackendConfig(backendTypeSection, backendSection, "") diff --git a/internal/exec/terraform_generate_varfile.go b/internal/exec/terraform_generate_varfile.go index 6bc8263f6..d584a3372 100644 --- a/internal/exec/terraform_generate_varfile.go +++ b/internal/exec/terraform_generate_varfile.go @@ -59,7 +59,7 @@ func ExecuteTerraformGenerateVarfileCmd(cmd *cobra.Command, args []string) error } // Print the component variables - u.LogDebug(atmosConfig, fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) + u.LogDebug(fmt.Sprintf("\nVariables for the component '%s' in the stack '%s':", info.ComponentFromArg, info.Stack)) if atmosConfig.Logs.Level == u.LogLevelTrace || atmosConfig.Logs.Level == u.LogLevelDebug { err = u.PrintAsYAMLToFileDescriptor(atmosConfig, info.ComponentVarsSection) @@ -69,8 +69,8 @@ func ExecuteTerraformGenerateVarfileCmd(cmd *cobra.Command, args []string) error } // Write the variables to file - u.LogDebug(atmosConfig, "Writing the variables to file:") - u.LogDebug(atmosConfig, varFilePath) + u.LogDebug("Writing the variables to file:") + u.LogDebug(varFilePath) if !info.DryRun { err = u.WriteToFileAsJSON(varFilePath, info.ComponentVarsSection, 0644) diff --git a/internal/exec/terraform_generate_varfiles.go b/internal/exec/terraform_generate_varfiles.go index 04ef9466f..6906e71bd 100644 --- a/internal/exec/terraform_generate_varfiles.go +++ b/internal/exec/terraform_generate_varfiles.go @@ -266,7 +266,7 @@ func ExecuteTerraformGenerateVarfiles( err = errors.Join(err, errors.New(errorMessage)) } } - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } componentSectionFinal, err := ProcessCustomYamlTags(atmosConfig, componentSectionConverted, stackName) @@ -323,11 +323,11 @@ func ExecuteTerraformGenerateVarfiles( return fmt.Errorf("invalid '--format' argument '%s'. Valid values are 'json' (default), 'yaml' and 'hcl", format) } - u.LogDebug(atmosConfig, fmt.Sprintf("varfile: %s", fileName)) - u.LogDebug(atmosConfig, fmt.Sprintf("terraform component: %s", terraformComponent)) - u.LogDebug(atmosConfig, fmt.Sprintf("atmos component: %s", componentName)) - u.LogDebug(atmosConfig, fmt.Sprintf("atmos stack: %s", stackName)) - u.LogDebug(atmosConfig, fmt.Sprintf("stack config file: %s", stackFileName)) + u.LogDebug(fmt.Sprintf("varfile: %s", fileName)) + u.LogDebug(fmt.Sprintf("terraform component: %s", terraformComponent)) + u.LogDebug(fmt.Sprintf("atmos component: %s", componentName)) + u.LogDebug(fmt.Sprintf("atmos stack: %s", stackName)) + u.LogDebug(fmt.Sprintf("stack config file: %s", stackFileName)) } } } diff --git a/internal/exec/terraform_outputs.go b/internal/exec/terraform_outputs.go index 09e575be3..2aec13534 100644 --- a/internal/exec/terraform_outputs.go +++ b/internal/exec/terraform_outputs.go @@ -77,8 +77,8 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, if atmosConfig.Components.Terraform.AutoGenerateBackendFile { backendFileName := filepath.Join(componentPath, "backend.tf.json") - u.LogTrace(*atmosConfig, "\nWriting the backend config to file:") - u.LogTrace(*atmosConfig, backendFileName) + u.LogDebug("\nWriting the backend config to file:") + u.LogDebug(backendFileName) backendTypeSection, ok := sections["backend_type"].(string) if !ok { @@ -100,8 +100,8 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, return nil, err } - u.LogTrace(*atmosConfig, "\nWrote the backend config to file:") - u.LogTrace(*atmosConfig, backendFileName) + u.LogDebug("\nWrote the backend config to file:") + u.LogDebug(backendFileName) } // Generate `providers_override.tf.json` file if the `providers` section is configured @@ -110,8 +110,8 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, if ok && len(providersSection) > 0 { providerOverrideFileName := filepath.Join(componentPath, "providers_override.tf.json") - u.LogTrace(*atmosConfig, "\nWriting the provider overrides to file:") - u.LogTrace(*atmosConfig, providerOverrideFileName) + u.LogDebug("\nWriting the provider overrides to file:") + u.LogDebug(providerOverrideFileName) var providerOverrides = generateComponentProviderOverrides(providersSection) err = u.WriteToFileAsJSON(providerOverrideFileName, providerOverrides, 0644) @@ -119,8 +119,8 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, return nil, err } - u.LogTrace(*atmosConfig, "\nWrote the provider overrides to file:") - u.LogTrace(*atmosConfig, providerOverrideFileName) + u.LogDebug("\nWrote the provider overrides to file:") + u.LogDebug(providerOverrideFileName) } // Initialize Terraform/OpenTofu @@ -136,7 +136,7 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, // Before executing `terraform init`, delete the `.terraform/environment` file from the component directory cleanTerraformWorkspace(*atmosConfig, componentPath) - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuting 'terraform init %s -s %s'", component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuting 'terraform init %s -s %s'", component, stack)) var initOptions []tfexec.InitOption initOptions = append(initOptions, tfexec.Upgrade(false)) @@ -148,50 +148,50 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, if err != nil { return nil, err } - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuted 'terraform init %s -s %s'", component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuted 'terraform init %s -s %s'", component, stack)) // Terraform workspace - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuting 'terraform workspace new %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuting 'terraform workspace new %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) err = tf.WorkspaceNew(ctx, terraformWorkspace) if err != nil { - u.LogTrace(*atmosConfig, fmt.Sprintf("\nWorkspace exists. Executing 'terraform workspace select %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) + u.LogDebug(fmt.Sprintf("\nWorkspace exists. Executing 'terraform workspace select %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) err = tf.WorkspaceSelect(ctx, terraformWorkspace) if err != nil { return nil, err } - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuted 'terraform workspace select %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuted 'terraform workspace select %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) } else { - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuted 'terraform workspace new %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuted 'terraform workspace new %s' for component '%s' in stack '%s'", terraformWorkspace, component, stack)) } // Terraform output - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuting 'terraform output %s -s %s'", component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuting 'terraform output %s -s %s'", component, stack)) outputMeta, err := tf.Output(ctx) if err != nil { return nil, err } - u.LogTrace(*atmosConfig, fmt.Sprintf("\nExecuted 'terraform output %s -s %s'", component, stack)) + u.LogDebug(fmt.Sprintf("\nExecuted 'terraform output %s -s %s'", component, stack)) if atmosConfig.Logs.Level == u.LogLevelTrace { y, err2 := u.ConvertToYAML(outputMeta) if err2 != nil { - u.LogError(*atmosConfig, err2) + u.LogError(err2) } else { - u.LogTrace(*atmosConfig, fmt.Sprintf("\nResult of 'terraform output %s -s %s' before processing it:\n%s\n", component, stack, y)) + u.LogDebug(fmt.Sprintf("\nResult of 'terraform output %s -s %s' before processing it:\n%s\n", component, stack, y)) } } outputProcessed = lo.MapEntries(outputMeta, func(k string, v tfexec.OutputMeta) (string, any) { s := string(v.Value) - u.LogTrace(*atmosConfig, fmt.Sprintf("Converting the variable '%s' with the value\n%s\nfrom JSON to 'Go' data type\n", k, s)) + u.LogDebug(fmt.Sprintf("Converting the variable '%s' with the value\n%s\nfrom JSON to 'Go' data type\n", k, s)) d, err2 := u.ConvertFromJSON(s) if err2 != nil { - u.LogError(*atmosConfig, fmt.Errorf("failed to convert output '%s': %w", k, err2)) + u.LogError(fmt.Errorf("failed to convert output '%s': %w", k, err2)) return k, nil } else { - u.LogTrace(*atmosConfig, fmt.Sprintf("Converted the variable '%s' with the value\n%s\nfrom JSON to 'Go' data type\nResult: %v\n", k, s, d)) + u.LogDebug(fmt.Sprintf("Converted the variable '%s' with the value\n%s\nfrom JSON to 'Go' data type\nResult: %v\n", k, s, d)) } return k, d @@ -201,7 +201,7 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, if componentAbstract { componentStatus = "abstract" } - u.LogTrace(*atmosConfig, fmt.Sprintf("\nNot executing 'terraform output %s -s %s' because the component is %s", component, stack, componentStatus)) + u.LogDebug(fmt.Sprintf("\nNot executing 'terraform output %s -s %s' because the component is %s", component, stack, componentStatus)) } return outputProcessed, nil @@ -221,21 +221,21 @@ func GetTerraformOutput( if !skipCache { cachedOutputs, found := terraformOutputsCache.Load(stackSlug) if found && cachedOutputs != nil { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found the result of the Atmos YAML function '!terraform.output %s %s %s' in the cache", component, stack, output)) + u.LogDebug(fmt.Sprintf("Found the result of the Atmos YAML function '!terraform.output %s %s %s' in the cache", component, stack, output)) return getTerraformOutputVariable(atmosConfig, component, stack, cachedOutputs.(map[string]any), output) } } sections, err := ExecuteDescribeComponent(component, stack, true) if err != nil { - u.LogErrorAndExit(*atmosConfig, err) + u.LogErrorAndExit(err) } // Check if the component in the stack is configured with the 'static' remote state backend, in which case get the // `output` from the static remote state instead of executing `terraform output` remoteStateBackendStaticTypeOutputs, err := GetComponentRemoteStateBackendStaticType(sections) if err != nil { - u.LogErrorAndExit(*atmosConfig, err) + u.LogErrorAndExit(err) } if remoteStateBackendStaticTypeOutputs != nil { @@ -246,7 +246,7 @@ func GetTerraformOutput( // Execute `terraform output` terraformOutputs, err := execTerraformOutput(atmosConfig, component, stack, sections) if err != nil { - u.LogErrorAndExit(*atmosConfig, err) + u.LogErrorAndExit(err) } // Cache the result @@ -270,7 +270,7 @@ func getTerraformOutputVariable( res, err := u.EvaluateYqExpression(*atmosConfig, outputs, val) if err != nil { - u.LogErrorAndExit(*atmosConfig, fmt.Errorf("error evaluating terrform output '%s' for the component '%s' in the stack '%s':\n%v", + u.LogErrorAndExit(fmt.Errorf("error evaluating terrform output '%s' for the component '%s' in the stack '%s':\n%v", output, component, stack, @@ -296,7 +296,7 @@ func getStaticRemoteStateOutput( res, err := u.EvaluateYqExpression(*atmosConfig, remoteStateSection, val) if err != nil { - u.LogErrorAndExit(*atmosConfig, fmt.Errorf("error evaluating the 'static' remote state backend output '%s' for the component '%s' in the stack '%s':\n%v", + u.LogErrorAndExit(fmt.Errorf("error evaluating the 'static' remote state backend output '%s' for the component '%s' in the stack '%s':\n%v", output, component, stack, diff --git a/internal/exec/terraform_utils.go b/internal/exec/terraform_utils.go index 979e826b5..466a88f04 100644 --- a/internal/exec/terraform_utils.go +++ b/internal/exec/terraform_utils.go @@ -26,6 +26,6 @@ func checkTerraformConfig(atmosConfig schema.AtmosConfiguration) error { // previously used workspace. This happens when different backends are used for the same component. func cleanTerraformWorkspace(atmosConfig schema.AtmosConfiguration, componentPath string) { filePath := filepath.Join(componentPath, ".terraform", "environment") - u.LogDebug(atmosConfig, fmt.Sprintf("\nDeleting Terraform environment file:\n'%s'", filePath)) + u.LogDebug(fmt.Sprintf("\nDeleting Terraform environment file:\n'%s'", filePath)) _ = os.Remove(filePath) } diff --git a/internal/exec/utils.go b/internal/exec/utils.go index 6436a6633..eca02010c 100644 --- a/internal/exec/utils.go +++ b/internal/exec/utils.go @@ -315,7 +315,7 @@ func ProcessStacks( } else { msg = "\nFound stack manifests:" } - u.LogTrace(atmosConfig, msg) + u.LogTrace(msg) err = u.PrintAsYAMLToFileDescriptor(atmosConfig, atmosConfig.StackConfigFilesRelativePaths) if err != nil { return configAndStacksInfo, err @@ -402,7 +402,6 @@ func ProcessStacks( foundStacks = append(foundStacks, stackName) u.LogDebug( - atmosConfig, fmt.Sprintf("Found component '%s' in the stack '%s' in the stack manifest '%s'", configAndStacksInfo.ComponentFromArg, configAndStacksInfo.Stack, @@ -425,7 +424,7 @@ func ProcessStacks( } return configAndStacksInfo, - fmt.Errorf("\nCould not find the component '%s' in the stack '%s'.\n"+ + fmt.Errorf("Could not find the component '%s' in the stack '%s'.\n"+ "Check that all the context variables are correctly defined in the stack manifests.\n"+ "Are the component and stack names correct? Did you forget an import?%v\n", configAndStacksInfo.ComponentFromArg, @@ -439,7 +438,7 @@ func ProcessStacks( configAndStacksInfo.Stack, strings.Join(foundStacks, ", "), ) - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } else { configAndStacksInfo = foundConfigAndStacksInfo } @@ -521,7 +520,7 @@ func ProcessStacks( ) if err != nil { // If any error returned from the templates processing, log it and exit - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } componentSectionConverted, err := u.UnmarshalYAML[schema.AtmosSectionMapType](componentSectionProcessed) @@ -533,7 +532,7 @@ func ProcessStacks( err = errors.Join(err, errors.New(errorMessage)) } } - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } componentSectionFinal, err := ProcessCustomYamlTags(atmosConfig, componentSectionConverted, configAndStacksInfo.Stack) diff --git a/internal/exec/validate_component.go b/internal/exec/validate_component.go index 96875bc4c..755989487 100644 --- a/internal/exec/validate_component.go +++ b/internal/exec/validate_component.go @@ -110,7 +110,7 @@ func ValidateComponent( var err error if schemaPath != "" && schemaType != "" { - u.LogDebug(atmosConfig, fmt.Sprintf("\nValidating the component '%s' using '%s' file '%s'", componentName, schemaType, schemaPath)) + u.LogDebug(fmt.Sprintf("\nValidating the component '%s' using '%s' file '%s'", componentName, schemaType, schemaPath)) ok, err = validateComponentInternal(atmosConfig, componentSection, schemaPath, schemaType, modulePaths, timeoutSeconds) if err != nil { @@ -157,10 +157,10 @@ func ValidateComponent( finalTimeoutSeconds = v.Timeout } - u.LogDebug(atmosConfig, fmt.Sprintf("\nValidating the component '%s' using '%s' file '%s'", componentName, finalSchemaType, finalSchemaPath)) + u.LogDebug(fmt.Sprintf("\nValidating the component '%s' using '%s' file '%s'", componentName, finalSchemaType, finalSchemaPath)) if v.Description != "" { - u.LogDebug(atmosConfig, v.Description) + u.LogDebug(v.Description) } ok2, err := validateComponentInternal(atmosConfig, componentSection, finalSchemaPath, finalSchemaType, finalModulePaths, finalTimeoutSeconds) diff --git a/internal/exec/validate_stacks.go b/internal/exec/validate_stacks.go index b440b1749..c52b38b1a 100644 --- a/internal/exec/validate_stacks.go +++ b/internal/exec/validate_stacks.go @@ -99,7 +99,7 @@ func ValidateStacks(atmosConfig schema.AtmosConfiguration) error { return err } atmosConfig.Schemas.Atmos.Manifest = f - u.LogTrace(atmosConfig, fmt.Sprintf("Atmos JSON Schema is not configured. Using the default embedded schema")) + u.LogTrace(fmt.Sprintf("Atmos JSON Schema is not configured. Using the default embedded schema")) } else if u.FileExists(atmosConfig.Schemas.Atmos.Manifest) { atmosManifestJsonSchemaFilePath = atmosConfig.Schemas.Atmos.Manifest } else if u.FileExists(atmosManifestJsonSchemaFileAbsPath) { @@ -139,7 +139,7 @@ func ValidateStacks(atmosConfig schema.AtmosConfiguration) error { return err } - u.LogDebug(atmosConfig, fmt.Sprintf("Validating all YAML files in the '%s' folder and all subfolders (excluding template files)\n", + u.LogDebug(fmt.Sprintf("Validating all YAML files in the '%s' folder and all subfolders (excluding template files)\n", filepath.Join(atmosConfig.BasePath, atmosConfig.Stacks.BasePath))) for _, filePath := range stackConfigFilesAbsolutePaths { diff --git a/internal/exec/vendor_component_utils.go b/internal/exec/vendor_component_utils.go index 493bea958..d93f62571 100644 --- a/internal/exec/vendor_component_utils.go +++ b/internal/exec/vendor_component_utils.go @@ -124,7 +124,7 @@ func copyComponentToDestination(atmosConfig schema.AtmosConfiguration, tempDir, return true, err } else if excludeMatch { // If the file matches ANY of the 'excluded_paths' patterns, exclude the file - u.LogTrace(atmosConfig, fmt.Sprintf("Excluding the file '%s' since it matches the '%s' pattern from 'excluded_paths'\n", + u.LogTrace(fmt.Sprintf("Excluding the file '%s' since it matches the '%s' pattern from 'excluded_paths'\n", trimmedSrc, excludePath, )) @@ -142,7 +142,7 @@ func copyComponentToDestination(atmosConfig schema.AtmosConfiguration, tempDir, return true, err } else if includeMatch { // If the file matches ANY of the 'included_paths' patterns, include the file - u.LogTrace(atmosConfig, fmt.Sprintf("Including '%s' since it matches the '%s' pattern from 'included_paths'\n", + u.LogTrace(fmt.Sprintf("Including '%s' since it matches the '%s' pattern from 'included_paths'\n", trimmedSrc, includePath, )) @@ -154,13 +154,13 @@ func copyComponentToDestination(atmosConfig schema.AtmosConfiguration, tempDir, if anyMatches { return false, nil } else { - u.LogTrace(atmosConfig, fmt.Sprintf("Excluding '%s' since it does not match any pattern from 'included_paths'\n", trimmedSrc)) + u.LogTrace(fmt.Sprintf("Excluding '%s' since it does not match any pattern from 'included_paths'\n", trimmedSrc)) return true, nil } } // If 'included_paths' is not provided, include all files that were not excluded - u.LogTrace(atmosConfig, fmt.Sprintf("Including '%s'\n", u.TrimBasePathFromPath(tempDir+"/", src))) + u.LogTrace(fmt.Sprintf("Including '%s'\n", u.TrimBasePathFromPath(tempDir+"/", src))) return false, nil }, @@ -348,7 +348,7 @@ func ExecuteComponentVendorInternal( // Disable TUI if no TTY support is available if !CheckTTYSupport() { opts = []tea.ProgramOption{tea.WithoutRenderer(), tea.WithInput(nil)} - u.LogWarning(atmosConfig, "TTY is not supported. Running in non-interactive mode") + u.LogWarning("TTY is not supported. Running in non-interactive mode") } if _, err := tea.NewProgram(&model, opts...).Run(); err != nil { return fmt.Errorf("running download error: %w", err) diff --git a/internal/exec/vendor_model.go b/internal/exec/vendor_model.go index 9f91fcc7d..3371b0aa8 100644 --- a/internal/exec/vendor_model.go +++ b/internal/exec/vendor_model.go @@ -138,7 +138,7 @@ func (m *modelVendor) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if msg.err != nil { errMsg = fmt.Sprintf("Failed to vendor %s: error : %s", pkg.name, msg.err) if !m.isTTY { - u.LogError(m.atmosConfig, errors.New(errMsg)) + u.LogError(errors.New(errMsg)) } mark = xMark m.failedPkg++ @@ -151,14 +151,14 @@ func (m *modelVendor) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // Everything's been installed. We're done! m.done = true if !m.isTTY { - u.LogInfo(m.atmosConfig, fmt.Sprintf("%s %s %s", mark, pkg.name, version)) + u.LogInfo(fmt.Sprintf("%s %s %s", mark, pkg.name, version)) if m.dryRun { - u.LogInfo(m.atmosConfig, "Done! Dry run completed. No components vendored.\n") + u.LogInfo("Done! Dry run completed. No components vendored.\n") } if m.failedPkg > 0 { - u.LogInfo(m.atmosConfig, fmt.Sprintf("Vendored %d components. Failed to vendor %d components.\n", len(m.packages)-m.failedPkg, m.failedPkg)) + u.LogInfo(fmt.Sprintf("Vendored %d components. Failed to vendor %d components.\n", len(m.packages)-m.failedPkg, m.failedPkg)) } - u.LogInfo(m.atmosConfig, fmt.Sprintf("Vendored %d components.\n", len(m.packages))) + u.LogInfo(fmt.Sprintf("Vendored %d components.\n", len(m.packages))) } version := grayColor.Render(version) return m, tea.Sequence( @@ -167,7 +167,7 @@ func (m *modelVendor) Update(msg tea.Msg) (tea.Model, tea.Cmd) { ) } if !m.isTTY { - u.LogInfo(m.atmosConfig, fmt.Sprintf("%s %s %s", mark, pkg.name, version)) + u.LogInfo(fmt.Sprintf("%s %s %s", mark, pkg.name, version)) } m.index++ // Update progress bar diff --git a/internal/exec/vendor_utils.go b/internal/exec/vendor_utils.go index a9e0fd3aa..a4bf4dfb0 100644 --- a/internal/exec/vendor_utils.go +++ b/internal/exec/vendor_utils.go @@ -172,7 +172,7 @@ func ReadAndProcessVendorConfigFile( if !fileExists { vendorConfigFileExists = false - u.LogWarning(atmosConfig, fmt.Sprintf("Vendor config file '%s' does not exist. Proceeding without vendor configurations", pathToVendorConfig)) + u.LogWarning(fmt.Sprintf("Vendor config file '%s' does not exist. Proceeding without vendor configurations", pathToVendorConfig)) return vendorConfig, vendorConfigFileExists, "", nil } } @@ -415,7 +415,7 @@ func ExecuteAtmosVendorInternal( if !CheckTTYSupport() { // set tea.WithInput(nil) workaround tea program not run on not TTY mod issue on non TTY mode https://github.com/charmbracelet/bubbletea/issues/761 opts = []tea.ProgramOption{tea.WithoutRenderer(), tea.WithInput(nil)} - u.LogWarning(atmosConfig, "No TTY detected. Falling back to basic output. This can happen when no terminal is attached or when commands are pipelined.") + u.LogWarning("No TTY detected. Falling back to basic output. This can happen when no terminal is attached or when commands are pipelined.") } model, err := newModelAtmosVendorInternal(packages, dryRun, atmosConfig) @@ -483,7 +483,7 @@ func logInitialMessage(atmosConfig schema.AtmosConfiguration, vendorConfigFileNa if len(tags) > 0 { logMessage = fmt.Sprintf("%s for tags {%s}", logMessage, strings.Join(tags, ", ")) } - u.LogInfo(atmosConfig, logMessage) + u.LogInfo(logMessage) } func validateSourceFields(s *schema.AtmosVendorSource, vendorConfigFileName string) error { @@ -603,7 +603,7 @@ func generateSkipFunction(atmosConfig schema.AtmosConfiguration, tempDir string, return true, err } else if excludeMatch { // If the file matches ANY of the 'excluded_paths' patterns, exclude the file - u.LogTrace(atmosConfig, fmt.Sprintf("Excluding the file '%s' since it matches the '%s' pattern from 'excluded_paths'\n", + u.LogTrace(fmt.Sprintf("Excluding the file '%s' since it matches the '%s' pattern from 'excluded_paths'\n", trimmedSrc, excludePath, )) @@ -620,7 +620,7 @@ func generateSkipFunction(atmosConfig schema.AtmosConfiguration, tempDir string, return true, err } else if includeMatch { // If the file matches ANY of the 'included_paths' patterns, include the file - u.LogTrace(atmosConfig, fmt.Sprintf("Including '%s' since it matches the '%s' pattern from 'included_paths'\n", + u.LogTrace(fmt.Sprintf("Including '%s' since it matches the '%s' pattern from 'included_paths'\n", trimmedSrc, includePath, )) @@ -632,13 +632,13 @@ func generateSkipFunction(atmosConfig schema.AtmosConfiguration, tempDir string, if anyMatches { return false, nil } else { - u.LogTrace(atmosConfig, fmt.Sprintf("Excluding '%s' since it does not match any pattern from 'included_paths'\n", trimmedSrc)) + u.LogTrace(fmt.Sprintf("Excluding '%s' since it does not match any pattern from 'included_paths'\n", trimmedSrc)) return true, nil } } // If 'included_paths' is not provided, include all files that were not excluded - u.LogTrace(atmosConfig, fmt.Sprintf("Including '%s'\n", u.TrimBasePathFromPath(tempDir+"/", src))) + u.LogTrace(fmt.Sprintf("Including '%s'\n", u.TrimBasePathFromPath(tempDir+"/", src))) return false, nil } } @@ -706,18 +706,18 @@ func (d *CustomGitHubDetector) Detect(src, _ string) (string, bool, error) { parsedURL, err := url.Parse(src) if err != nil { - u.LogDebug(d.AtmosConfig, fmt.Sprintf("Failed to parse URL %q: %v\n", src, err)) + u.LogDebug(fmt.Sprintf("Failed to parse URL %q: %v\n", src, err)) return "", false, fmt.Errorf("failed to parse URL %q: %w", src, err) } if strings.ToLower(parsedURL.Host) != "github.com" { - u.LogDebug(d.AtmosConfig, fmt.Sprintf("Host is %q, not 'github.com', skipping token injection\n", parsedURL.Host)) + u.LogDebug(fmt.Sprintf("Host is %q, not 'github.com', skipping token injection\n", parsedURL.Host)) return "", false, nil } parts := strings.SplitN(parsedURL.Path, "/", 4) if len(parts) < 3 { - u.LogDebug(d.AtmosConfig, fmt.Sprintf("URL path %q doesn't look like /owner/repo\n", parsedURL.Path)) + u.LogDebug(fmt.Sprintf("URL path %q doesn't look like /owner/repo\n", parsedURL.Path)) return "", false, fmt.Errorf("invalid GitHub URL %q", parsedURL.Path) } @@ -731,15 +731,15 @@ func (d *CustomGitHubDetector) Detect(src, _ string) (string, bool, error) { if atmosGitHubToken != "" { usedToken = atmosGitHubToken tokenSource = "ATMOS_GITHUB_TOKEN" - u.LogDebug(d.AtmosConfig, "ATMOS_GITHUB_TOKEN is set\n") + u.LogDebug("ATMOS_GITHUB_TOKEN is set\n") } else { // 2. Otherwise, only inject GITHUB_TOKEN if cfg.Settings.InjectGithubToken == true if d.AtmosConfig.Settings.InjectGithubToken && gitHubToken != "" { usedToken = gitHubToken tokenSource = "GITHUB_TOKEN" - u.LogTrace(d.AtmosConfig, "InjectGithubToken=true and GITHUB_TOKEN is set, using it\n") + u.LogDebug("InjectGithubToken=true and GITHUB_TOKEN is set, using it\n") } else { - u.LogTrace(d.AtmosConfig, "No ATMOS_GITHUB_TOKEN or GITHUB_TOKEN found\n") + u.LogDebug("No ATMOS_GITHUB_TOKEN or GITHUB_TOKEN found\n") } } @@ -747,10 +747,10 @@ func (d *CustomGitHubDetector) Detect(src, _ string) (string, bool, error) { user := parsedURL.User.Username() pass, _ := parsedURL.User.Password() if user == "" && pass == "" { - u.LogDebug(d.AtmosConfig, fmt.Sprintf("Injecting token from %s for %s\n", tokenSource, src)) + u.LogDebug(fmt.Sprintf("Injecting token from %s for %s\n", tokenSource, src)) parsedURL.User = url.UserPassword("x-access-token", usedToken) } else { - u.LogDebug(d.AtmosConfig, "Credentials found, skipping token injection\n") + u.LogDebug("Credentials found, skipping token injection\n") } } diff --git a/internal/exec/workflow_utils.go b/internal/exec/workflow_utils.go index 971a06396..50238ea9e 100644 --- a/internal/exec/workflow_utils.go +++ b/internal/exec/workflow_utils.go @@ -40,7 +40,7 @@ func ExecuteWorkflow( // Check if the workflow steps have the `name` attribute checkAndGenerateWorkflowStepNames(workflowDefinition) - logFunc(atmosConfig, fmt.Sprintf("\nExecuting the workflow '%s' from '%s'\n", workflow, workflowPath)) + logFunc(fmt.Sprintf("\nExecuting the workflow '%s' from '%s'\n", workflow, workflowPath)) if atmosConfig.Logs.Level == u.LogLevelTrace || atmosConfig.Logs.Level == u.LogLevelDebug { err := u.PrintAsYAMLToFileDescriptor(atmosConfig, workflowDefinition) @@ -64,7 +64,7 @@ func ExecuteWorkflow( var command = strings.TrimSpace(step.Command) var commandType = strings.TrimSpace(step.Type) - logFunc(atmosConfig, fmt.Sprintf("Executing workflow step: %s", command)) + logFunc(fmt.Sprintf("Executing workflow step: %s", command)) if commandType == "" { commandType = "atmos" @@ -97,7 +97,7 @@ func ExecuteWorkflow( if finalStack != "" { args = append(args, []string{"-s", finalStack}...) - logFunc(atmosConfig, fmt.Sprintf("Stack: %s", finalStack)) + logFunc(fmt.Sprintf("Stack: %s", finalStack)) } err = ExecuteShellCommand(atmosConfig, "atmos", args, ".", []string{}, dryRun, "") @@ -111,8 +111,8 @@ func ExecuteWorkflow( failedMsg := theme.Colors.Error.Sprintf("\nStep '%s' failed!", step.Name) - u.LogDebug(atmosConfig, fmt.Sprintf("\nCommand failed: %s", command)) - u.LogDebug(atmosConfig, fmt.Sprintf("Error: %v", err)) + u.LogDebug(fmt.Sprintf("\nCommand failed: %s", command)) + u.LogDebug(fmt.Sprintf("Error: %v", err)) resumeMsg := theme.Colors.Success.Sprintf( "\nTo resume the workflow from this step, run:\natmos workflow %s -f %s --from-step %s", diff --git a/internal/exec/yaml_func_exec.go b/internal/exec/yaml_func_exec.go index b231b9da3..8725ec6b9 100644 --- a/internal/exec/yaml_func_exec.go +++ b/internal/exec/yaml_func_exec.go @@ -14,17 +14,17 @@ func processTagExec( input string, currentStack string, ) any { - u.LogTrace(atmosConfig, fmt.Sprintf("Executing Atmos YAML function: %s", input)) + u.LogTrace(fmt.Sprintf("Executing Atmos YAML function: %s", input)) str, err := getStringAfterTag(input, config.AtmosYamlFuncExec) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } res, err := ExecuteShellAndReturnOutput(atmosConfig, str, input, ".", nil, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } var decoded any diff --git a/internal/exec/yaml_func_store.go b/internal/exec/yaml_func_store.go index 3b765a1aa..8e692327b 100644 --- a/internal/exec/yaml_func_store.go +++ b/internal/exec/yaml_func_store.go @@ -46,24 +46,24 @@ func processTagStore(atmosConfig schema.AtmosConfiguration, input string, curren str, err := getStringAfterTag(input, u.AtmosYamlFuncStore) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } params, err := getParams(str, currentStack) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } store := atmosConfig.Stores[params.storeName] if store == nil { - u.LogErrorAndExit(atmosConfig, fmt.Errorf("invalid Atmos Store YAML function execution:: %s\nstore '%s' not found", input, params.storeName)) + u.LogErrorAndExit(fmt.Errorf("invalid Atmos Store YAML function execution:: %s\nstore '%s' not found", input, params.storeName)) } value, err := store.Get(params.stack, params.component, params.key) if err != nil { - u.LogErrorAndExit(atmosConfig, fmt.Errorf("an error occurred while looking up key %s in stack %s and component %s from store %s\n%v", params.key, params.stack, params.component, params.storeName, err)) + u.LogErrorAndExit(fmt.Errorf("an error occurred while looking up key %s in stack %s and component %s from store %s\n%v", params.key, params.stack, params.component, params.storeName, err)) } return value diff --git a/internal/exec/yaml_func_template.go b/internal/exec/yaml_func_template.go index c0ab9046a..93b12ab96 100644 --- a/internal/exec/yaml_func_template.go +++ b/internal/exec/yaml_func_template.go @@ -14,12 +14,12 @@ func processTagTemplate( input string, currentStack string, ) any { - u.LogTrace(atmosConfig, fmt.Sprintf("Executing Atmos YAML function: %s", input)) + u.LogTrace(fmt.Sprintf("Executing Atmos YAML function: %s", input)) str, err := getStringAfterTag(input, config.AtmosYamlFuncTemplate) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } var decoded any diff --git a/internal/exec/yaml_func_terraform_output.go b/internal/exec/yaml_func_terraform_output.go index 7f7fd81a6..405f21cba 100644 --- a/internal/exec/yaml_func_terraform_output.go +++ b/internal/exec/yaml_func_terraform_output.go @@ -14,11 +14,11 @@ func processTagTerraformOutput( input string, currentStack string, ) any { - u.LogTrace(atmosConfig, fmt.Sprintf("Executing Atmos YAML function: %s", input)) + u.LogTrace(fmt.Sprintf("Executing Atmos YAML function: %s", input)) str, err := getStringAfterTag(input, config.AtmosYamlFuncTerraformOutput) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } var component string @@ -38,11 +38,11 @@ func processTagTerraformOutput( component = strings.TrimSpace(parts[0]) stack = currentStack output = strings.TrimSpace(parts[1]) - u.LogTrace(atmosConfig, fmt.Sprintf("Atmos YAML function `%s` is called with two parameters 'component' and 'output'. "+ + u.LogTrace(fmt.Sprintf("Atmos YAML function `%s` is called with two parameters 'component' and 'output'. "+ "Using the current stack '%s' as the 'stack' parameter", input, currentStack)) } else { err := fmt.Errorf("invalid number of arguments in the Atmos YAML function: %s", input) - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } value := GetTerraformOutput(&atmosConfig, stack, component, output, false) diff --git a/main.go b/main.go index 3696f6341..38df7bfd9 100644 --- a/main.go +++ b/main.go @@ -2,13 +2,13 @@ package main import ( "github.com/cloudposse/atmos/cmd" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) func main() { + err := cmd.Execute() if err != nil { - u.LogErrorAndExit(schema.AtmosConfiguration{}, err) + u.LogErrorAndExit(err) } } diff --git a/pkg/aws/aws_eks_update_kubeconfig.go b/pkg/aws/aws_eks_update_kubeconfig.go index 8a20669a5..92cab6c1a 100644 --- a/pkg/aws/aws_eks_update_kubeconfig.go +++ b/pkg/aws/aws_eks_update_kubeconfig.go @@ -12,7 +12,7 @@ func ExecuteAwsEksUpdateKubeconfig(kubeconfigContext schema.AwsEksUpdateKubeconf err := e.ExecuteAwsEksUpdateKubeconfig(kubeconfigContext) if err != nil { - u.LogError(schema.AtmosConfiguration{}, err) + u.LogError(err) return err } diff --git a/pkg/component/component_processor.go b/pkg/component/component_processor.go index b2c6db215..f06a19ee4 100644 --- a/pkg/component/component_processor.go +++ b/pkg/component/component_processor.go @@ -25,7 +25,7 @@ func ProcessComponentInStack( atmosConfig, err := cfg.InitCliConfig(configAndStacksInfo, true) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } @@ -35,7 +35,7 @@ func ProcessComponentInStack( configAndStacksInfo.ComponentType = "helmfile" configAndStacksInfo, err = e.ProcessStacks(atmosConfig, configAndStacksInfo, true, true) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } } @@ -61,19 +61,19 @@ func ProcessComponentFromContext( atmosConfig, err := cfg.InitCliConfig(configAndStacksInfo, true) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } if len(e.GetStackNamePattern(atmosConfig)) < 1 { er := errors.New("stack name pattern must be provided in 'stacks.name_pattern' CLI config or 'ATMOS_STACKS_NAME_PATTERN' ENV variable") - u.LogError(atmosConfig, er) + u.LogError(er) return nil, er } stack, err := cfg.GetStackNameFromContextAndStackNamePattern(namespace, tenant, environment, stage, e.GetStackNamePattern(atmosConfig)) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } diff --git a/pkg/config/cache.go b/pkg/config/cache.go index cf70ab675..a6a86ab5e 100644 --- a/pkg/config/cache.go +++ b/pkg/config/cache.go @@ -12,7 +12,6 @@ import ( "github.com/pkg/errors" "github.com/spf13/viper" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) @@ -105,7 +104,7 @@ func ShouldCheckForUpdates(lastChecked int64, frequency string) bool { interval, err := parseFrequency(frequency) if err != nil { // Log warning and default to daily if we canโ€™t parse - u.LogWarning(schema.AtmosConfiguration{}, fmt.Sprintf("Unsupported frequency '%s' encountered. Defaulting to daily.", frequency)) + u.LogWarning(fmt.Sprintf("Unsupported frequency '%s' encountered. Defaulting to daily.", frequency)) interval = 86400 // daily } return now-lastChecked >= interval diff --git a/pkg/config/config.go b/pkg/config/config.go index 37ddc13fd..bd495e1f0 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -192,7 +192,7 @@ func InitCliConfig(configAndStacksInfo schema.ConfigAndStacksInfo, processStacks // Process config from the path in ENV var `ATMOS_CLI_CONFIG_PATH` configFilePath4 := os.Getenv("ATMOS_CLI_CONFIG_PATH") if len(configFilePath4) > 0 { - u.LogTrace(atmosConfig, fmt.Sprintf("Found ENV var ATMOS_CLI_CONFIG_PATH=%s", configFilePath4)) + u.LogTrace(fmt.Sprintf("Found ENV var ATMOS_CLI_CONFIG_PATH=%s", configFilePath4)) configFile4 := filepath.Join(configFilePath4, CliConfigFileName) found, err = processConfigFile(atmosConfig, configFile4, v) if err != nil { @@ -354,7 +354,7 @@ func InitCliConfig(configAndStacksInfo schema.ConfigAndStacksInfo, processStacks atmosConfig.StackConfigFilesRelativePaths = stackConfigFilesRelativePaths if stackIsPhysicalPath { - u.LogTrace(atmosConfig, fmt.Sprintf("\nThe stack '%s' matches the stack manifest %s\n", + u.LogTrace(fmt.Sprintf("\nThe stack '%s' matches the stack manifest %s\n", configAndStacksInfo.Stack, stackConfigFilesRelativePaths[0]), ) @@ -390,7 +390,7 @@ func processConfigFile( defer func(reader *os.File) { err := reader.Close() if err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("error closing file '"+configPath+"'. "+err.Error())) + u.LogWarning(fmt.Sprintf("error closing file '" + configPath + "'. " + err.Error())) } }(reader) diff --git a/pkg/config/utils.go b/pkg/config/utils.go index 8d658d443..66be5dfb0 100644 --- a/pkg/config/utils.go +++ b/pkg/config/utils.go @@ -188,61 +188,61 @@ func FindAllStackConfigsInPaths( func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { basePath := os.Getenv("ATMOS_BASE_PATH") if len(basePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_BASE_PATH=%s", basePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_BASE_PATH=%s", basePath)) atmosConfig.BasePath = basePath } vendorBasePath := os.Getenv("ATMOS_VENDOR_BASE_PATH") if len(vendorBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_VENDOR_BASE_PATH=%s", vendorBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_VENDOR_BASE_PATH=%s", vendorBasePath)) atmosConfig.Vendor.BasePath = vendorBasePath } stacksBasePath := os.Getenv("ATMOS_STACKS_BASE_PATH") if len(stacksBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_STACKS_BASE_PATH=%s", stacksBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_STACKS_BASE_PATH=%s", stacksBasePath)) atmosConfig.Stacks.BasePath = stacksBasePath } stacksIncludedPaths := os.Getenv("ATMOS_STACKS_INCLUDED_PATHS") if len(stacksIncludedPaths) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_STACKS_INCLUDED_PATHS=%s", stacksIncludedPaths)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_STACKS_INCLUDED_PATHS=%s", stacksIncludedPaths)) atmosConfig.Stacks.IncludedPaths = strings.Split(stacksIncludedPaths, ",") } stacksExcludedPaths := os.Getenv("ATMOS_STACKS_EXCLUDED_PATHS") if len(stacksExcludedPaths) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_STACKS_EXCLUDED_PATHS=%s", stacksExcludedPaths)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_STACKS_EXCLUDED_PATHS=%s", stacksExcludedPaths)) atmosConfig.Stacks.ExcludedPaths = strings.Split(stacksExcludedPaths, ",") } stacksNamePattern := os.Getenv("ATMOS_STACKS_NAME_PATTERN") if len(stacksNamePattern) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_STACKS_NAME_PATTERN=%s", stacksNamePattern)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_STACKS_NAME_PATTERN=%s", stacksNamePattern)) atmosConfig.Stacks.NamePattern = stacksNamePattern } stacksNameTemplate := os.Getenv("ATMOS_STACKS_NAME_TEMPLATE") if len(stacksNameTemplate) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_STACKS_NAME_TEMPLATE=%s", stacksNameTemplate)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_STACKS_NAME_TEMPLATE=%s", stacksNameTemplate)) atmosConfig.Stacks.NameTemplate = stacksNameTemplate } componentsTerraformCommand := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_COMMAND") if len(componentsTerraformCommand) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_COMMAND=%s", componentsTerraformCommand)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_COMMAND=%s", componentsTerraformCommand)) atmosConfig.Components.Terraform.Command = componentsTerraformCommand } componentsTerraformBasePath := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_BASE_PATH") if len(componentsTerraformBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_BASE_PATH=%s", componentsTerraformBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_BASE_PATH=%s", componentsTerraformBasePath)) atmosConfig.Components.Terraform.BasePath = componentsTerraformBasePath } componentsTerraformApplyAutoApprove := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE") if len(componentsTerraformApplyAutoApprove) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE=%s", componentsTerraformApplyAutoApprove)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE=%s", componentsTerraformApplyAutoApprove)) applyAutoApproveBool, err := strconv.ParseBool(componentsTerraformApplyAutoApprove) if err != nil { return err @@ -252,7 +252,7 @@ func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { componentsTerraformDeployRunInit := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_DEPLOY_RUN_INIT") if len(componentsTerraformDeployRunInit) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_DEPLOY_RUN_INIT=%s", componentsTerraformDeployRunInit)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_DEPLOY_RUN_INIT=%s", componentsTerraformDeployRunInit)) deployRunInitBool, err := strconv.ParseBool(componentsTerraformDeployRunInit) if err != nil { return err @@ -262,7 +262,7 @@ func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { componentsInitRunReconfigure := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_INIT_RUN_RECONFIGURE") if len(componentsInitRunReconfigure) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_INIT_RUN_RECONFIGURE=%s", componentsInitRunReconfigure)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_INIT_RUN_RECONFIGURE=%s", componentsInitRunReconfigure)) initRunReconfigureBool, err := strconv.ParseBool(componentsInitRunReconfigure) if err != nil { return err @@ -272,7 +272,7 @@ func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { componentsTerraformAutoGenerateBackendFile := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_AUTO_GENERATE_BACKEND_FILE") if len(componentsTerraformAutoGenerateBackendFile) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_AUTO_GENERATE_BACKEND_FILE=%s", componentsTerraformAutoGenerateBackendFile)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_AUTO_GENERATE_BACKEND_FILE=%s", componentsTerraformAutoGenerateBackendFile)) componentsTerraformAutoGenerateBackendFileBool, err := strconv.ParseBool(componentsTerraformAutoGenerateBackendFile) if err != nil { return err @@ -282,19 +282,19 @@ func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { componentsHelmfileCommand := os.Getenv("ATMOS_COMPONENTS_HELMFILE_COMMAND") if len(componentsHelmfileCommand) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_COMMAND=%s", componentsHelmfileCommand)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_COMMAND=%s", componentsHelmfileCommand)) atmosConfig.Components.Helmfile.Command = componentsHelmfileCommand } componentsHelmfileBasePath := os.Getenv("ATMOS_COMPONENTS_HELMFILE_BASE_PATH") if len(componentsHelmfileBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_BASE_PATH=%s", componentsHelmfileBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_BASE_PATH=%s", componentsHelmfileBasePath)) atmosConfig.Components.Helmfile.BasePath = componentsHelmfileBasePath } componentsHelmfileUseEKS := os.Getenv("ATMOS_COMPONENTS_HELMFILE_USE_EKS") if len(componentsHelmfileUseEKS) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_USE_EKS=%s", componentsHelmfileUseEKS)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_USE_EKS=%s", componentsHelmfileUseEKS)) useEKSBool, err := strconv.ParseBool(componentsHelmfileUseEKS) if err != nil { return err @@ -304,61 +304,61 @@ func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { componentsHelmfileKubeconfigPath := os.Getenv("ATMOS_COMPONENTS_HELMFILE_KUBECONFIG_PATH") if len(componentsHelmfileKubeconfigPath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_KUBECONFIG_PATH=%s", componentsHelmfileKubeconfigPath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_KUBECONFIG_PATH=%s", componentsHelmfileKubeconfigPath)) atmosConfig.Components.Helmfile.KubeconfigPath = componentsHelmfileKubeconfigPath } componentsHelmfileHelmAwsProfilePattern := os.Getenv("ATMOS_COMPONENTS_HELMFILE_HELM_AWS_PROFILE_PATTERN") if len(componentsHelmfileHelmAwsProfilePattern) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_HELM_AWS_PROFILE_PATTERN=%s", componentsHelmfileHelmAwsProfilePattern)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_HELM_AWS_PROFILE_PATTERN=%s", componentsHelmfileHelmAwsProfilePattern)) atmosConfig.Components.Helmfile.HelmAwsProfilePattern = componentsHelmfileHelmAwsProfilePattern } componentsHelmfileClusterNamePattern := os.Getenv("ATMOS_COMPONENTS_HELMFILE_CLUSTER_NAME_PATTERN") if len(componentsHelmfileClusterNamePattern) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_CLUSTER_NAME_PATTERN=%s", componentsHelmfileClusterNamePattern)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_HELMFILE_CLUSTER_NAME_PATTERN=%s", componentsHelmfileClusterNamePattern)) atmosConfig.Components.Helmfile.ClusterNamePattern = componentsHelmfileClusterNamePattern } workflowsBasePath := os.Getenv("ATMOS_WORKFLOWS_BASE_PATH") if len(workflowsBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_WORKFLOWS_BASE_PATH=%s", workflowsBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_WORKFLOWS_BASE_PATH=%s", workflowsBasePath)) atmosConfig.Workflows.BasePath = workflowsBasePath } jsonschemaBasePath := os.Getenv("ATMOS_SCHEMAS_JSONSCHEMA_BASE_PATH") if len(jsonschemaBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_JSONSCHEMA_BASE_PATH=%s", jsonschemaBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_JSONSCHEMA_BASE_PATH=%s", jsonschemaBasePath)) atmosConfig.Schemas.JsonSchema.BasePath = jsonschemaBasePath } opaBasePath := os.Getenv("ATMOS_SCHEMAS_OPA_BASE_PATH") if len(opaBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_OPA_BASE_PATH=%s", opaBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_OPA_BASE_PATH=%s", opaBasePath)) atmosConfig.Schemas.Opa.BasePath = opaBasePath } cueBasePath := os.Getenv("ATMOS_SCHEMAS_CUE_BASE_PATH") if len(cueBasePath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_CUE_BASE_PATH=%s", cueBasePath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_CUE_BASE_PATH=%s", cueBasePath)) atmosConfig.Schemas.Cue.BasePath = cueBasePath } atmosManifestJsonSchemaPath := os.Getenv("ATMOS_SCHEMAS_ATMOS_MANIFEST") if len(atmosManifestJsonSchemaPath) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_ATMOS_MANIFEST=%s", atmosManifestJsonSchemaPath)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_SCHEMAS_ATMOS_MANIFEST=%s", atmosManifestJsonSchemaPath)) atmosConfig.Schemas.Atmos.Manifest = atmosManifestJsonSchemaPath } logsFile := os.Getenv("ATMOS_LOGS_FILE") if len(logsFile) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_LOGS_FILE=%s", logsFile)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_LOGS_FILE=%s", logsFile)) atmosConfig.Logs.File = logsFile } logsLevel := os.Getenv("ATMOS_LOGS_LEVEL") if len(logsLevel) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_LOGS_LEVEL=%s", logsLevel)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_LOGS_LEVEL=%s", logsLevel)) // Validate the log level before setting it if _, err := logger.ParseLogLevel(logsLevel); err != nil { return err @@ -369,22 +369,22 @@ func processEnvVars(atmosConfig *schema.AtmosConfiguration) error { tfAppendUserAgent := os.Getenv("ATMOS_COMPONENTS_TERRAFORM_APPEND_USER_AGENT") if len(tfAppendUserAgent) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_APPEND_USER_AGENT=%s", tfAppendUserAgent)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_COMPONENTS_TERRAFORM_APPEND_USER_AGENT=%s", tfAppendUserAgent)) atmosConfig.Components.Terraform.AppendUserAgent = tfAppendUserAgent } listMergeStrategy := os.Getenv("ATMOS_SETTINGS_LIST_MERGE_STRATEGY") if len(listMergeStrategy) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_SETTINGS_LIST_MERGE_STRATEGY=%s", listMergeStrategy)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_SETTINGS_LIST_MERGE_STRATEGY=%s", listMergeStrategy)) atmosConfig.Settings.ListMergeStrategy = listMergeStrategy } versionEnabled := os.Getenv("ATMOS_VERSION_CHECK_ENABLED") if len(versionEnabled) > 0 { - u.LogTrace(*atmosConfig, fmt.Sprintf("Found ENV var ATMOS_VERSION_CHECK_ENABLED=%s", versionEnabled)) + u.LogDebug(fmt.Sprintf("Found ENV var ATMOS_VERSION_CHECK_ENABLED=%s", versionEnabled)) enabled, err := strconv.ParseBool(versionEnabled) if err != nil { - u.LogWarning(*atmosConfig, fmt.Sprintf("Invalid boolean value '%s' for ATMOS_VERSION_CHECK_ENABLED; using default.", versionEnabled)) + u.LogWarning(fmt.Sprintf("Invalid boolean value '%s' for ATMOS_VERSION_CHECK_ENABLED; using default.", versionEnabled)) } else { atmosConfig.Version.Check.Enabled = enabled } @@ -414,31 +414,31 @@ func checkConfig(atmosConfig schema.AtmosConfiguration) error { func processCommandLineArgs(atmosConfig *schema.AtmosConfiguration, configAndStacksInfo schema.ConfigAndStacksInfo) error { if len(configAndStacksInfo.BasePath) > 0 { atmosConfig.BasePath = configAndStacksInfo.BasePath - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as base path for stacks and components", configAndStacksInfo.BasePath)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as base path for stacks and components", configAndStacksInfo.BasePath)) } if len(configAndStacksInfo.TerraformCommand) > 0 { atmosConfig.Components.Terraform.Command = configAndStacksInfo.TerraformCommand - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as terraform executable", configAndStacksInfo.TerraformCommand)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as terraform executable", configAndStacksInfo.TerraformCommand)) } if len(configAndStacksInfo.TerraformDir) > 0 { atmosConfig.Components.Terraform.BasePath = configAndStacksInfo.TerraformDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as terraform directory", configAndStacksInfo.TerraformDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as terraform directory", configAndStacksInfo.TerraformDir)) } if len(configAndStacksInfo.HelmfileCommand) > 0 { atmosConfig.Components.Helmfile.Command = configAndStacksInfo.HelmfileCommand - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as helmfile executable", configAndStacksInfo.HelmfileCommand)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as helmfile executable", configAndStacksInfo.HelmfileCommand)) } if len(configAndStacksInfo.HelmfileDir) > 0 { atmosConfig.Components.Helmfile.BasePath = configAndStacksInfo.HelmfileDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as helmfile directory", configAndStacksInfo.HelmfileDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as helmfile directory", configAndStacksInfo.HelmfileDir)) } if len(configAndStacksInfo.ConfigDir) > 0 { atmosConfig.Stacks.BasePath = configAndStacksInfo.ConfigDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as stacks directory", configAndStacksInfo.ConfigDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as stacks directory", configAndStacksInfo.ConfigDir)) } if len(configAndStacksInfo.StacksDir) > 0 { atmosConfig.Stacks.BasePath = configAndStacksInfo.StacksDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as stacks directory", configAndStacksInfo.StacksDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as stacks directory", configAndStacksInfo.StacksDir)) } if len(configAndStacksInfo.DeployRunInit) > 0 { deployRunInitBool, err := strconv.ParseBool(configAndStacksInfo.DeployRunInit) @@ -446,7 +446,7 @@ func processCommandLineArgs(atmosConfig *schema.AtmosConfiguration, configAndSta return err } atmosConfig.Components.Terraform.DeployRunInit = deployRunInitBool - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s=%s'", DeployRunInitFlag, configAndStacksInfo.DeployRunInit)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s=%s'", DeployRunInitFlag, configAndStacksInfo.DeployRunInit)) } if len(configAndStacksInfo.AutoGenerateBackendFile) > 0 { autoGenerateBackendFileBool, err := strconv.ParseBool(configAndStacksInfo.AutoGenerateBackendFile) @@ -454,11 +454,11 @@ func processCommandLineArgs(atmosConfig *schema.AtmosConfiguration, configAndSta return err } atmosConfig.Components.Terraform.AutoGenerateBackendFile = autoGenerateBackendFileBool - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s=%s'", AutoGenerateBackendFileFlag, configAndStacksInfo.AutoGenerateBackendFile)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s=%s'", AutoGenerateBackendFileFlag, configAndStacksInfo.AutoGenerateBackendFile)) } if len(configAndStacksInfo.WorkflowsDir) > 0 { atmosConfig.Workflows.BasePath = configAndStacksInfo.WorkflowsDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as workflows directory", configAndStacksInfo.WorkflowsDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as workflows directory", configAndStacksInfo.WorkflowsDir)) } if len(configAndStacksInfo.InitRunReconfigure) > 0 { initRunReconfigureBool, err := strconv.ParseBool(configAndStacksInfo.InitRunReconfigure) @@ -466,23 +466,23 @@ func processCommandLineArgs(atmosConfig *schema.AtmosConfiguration, configAndSta return err } atmosConfig.Components.Terraform.InitRunReconfigure = initRunReconfigureBool - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s=%s'", InitRunReconfigure, configAndStacksInfo.InitRunReconfigure)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s=%s'", InitRunReconfigure, configAndStacksInfo.InitRunReconfigure)) } if len(configAndStacksInfo.JsonSchemaDir) > 0 { atmosConfig.Schemas.JsonSchema.BasePath = configAndStacksInfo.JsonSchemaDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as JsonSchema schemas directory", configAndStacksInfo.JsonSchemaDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as JsonSchema schemas directory", configAndStacksInfo.JsonSchemaDir)) } if len(configAndStacksInfo.OpaDir) > 0 { atmosConfig.Schemas.Opa.BasePath = configAndStacksInfo.OpaDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as OPA schemas directory", configAndStacksInfo.OpaDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as OPA schemas directory", configAndStacksInfo.OpaDir)) } if len(configAndStacksInfo.CueDir) > 0 { atmosConfig.Schemas.Cue.BasePath = configAndStacksInfo.CueDir - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as CUE schemas directory", configAndStacksInfo.CueDir)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as CUE schemas directory", configAndStacksInfo.CueDir)) } if len(configAndStacksInfo.AtmosManifestJsonSchema) > 0 { atmosConfig.Schemas.Atmos.Manifest = configAndStacksInfo.AtmosManifestJsonSchema - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s' as path to Atmos JSON Schema", configAndStacksInfo.AtmosManifestJsonSchema)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s' as path to Atmos JSON Schema", configAndStacksInfo.AtmosManifestJsonSchema)) } if len(configAndStacksInfo.LogsLevel) > 0 { if _, err := logger.ParseLogLevel(configAndStacksInfo.LogsLevel); err != nil { @@ -490,15 +490,15 @@ func processCommandLineArgs(atmosConfig *schema.AtmosConfiguration, configAndSta } // Only set the log level if validation passes atmosConfig.Logs.Level = configAndStacksInfo.LogsLevel - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s=%s'", LogsLevelFlag, configAndStacksInfo.LogsLevel)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s=%s'", LogsLevelFlag, configAndStacksInfo.LogsLevel)) } if len(configAndStacksInfo.LogsFile) > 0 { atmosConfig.Logs.File = configAndStacksInfo.LogsFile - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s=%s'", LogsFileFlag, configAndStacksInfo.LogsFile)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s=%s'", LogsFileFlag, configAndStacksInfo.LogsFile)) } if len(configAndStacksInfo.SettingsListMergeStrategy) > 0 { atmosConfig.Settings.ListMergeStrategy = configAndStacksInfo.SettingsListMergeStrategy - u.LogTrace(*atmosConfig, fmt.Sprintf("Using command line argument '%s=%s'", SettingsListMergeStrategyFlag, configAndStacksInfo.SettingsListMergeStrategy)) + u.LogDebug(fmt.Sprintf("Using command line argument '%s=%s'", SettingsListMergeStrategyFlag, configAndStacksInfo.SettingsListMergeStrategy)) } return nil diff --git a/pkg/hooks/cmd.go b/pkg/hooks/cmd.go index 57c68e703..90e866c47 100644 --- a/pkg/hooks/cmd.go +++ b/pkg/hooks/cmd.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" + "github.com/charmbracelet/log" e "github.com/cloudposse/atmos/internal/exec" cfg "github.com/cloudposse/atmos/pkg/config" "github.com/cloudposse/atmos/pkg/schema" @@ -36,18 +37,18 @@ func storeOutput(atmosConfig schema.AtmosConfiguration, info *schema.ConfigAndSt if store == nil { return fmt.Errorf("store %q not found in configuration", hook.Name) } - u.LogInfo(atmosConfig, fmt.Sprintf(" storing terraform output '%s' in store '%s' with key '%s' and value %v", outputKey, hook.Name, key, outputValue)) + log.Info("storing terraform output", "outputKey", outputKey, "store", hook.Name, "key", key, "value", outputValue) return store.Set(info.Stack, info.ComponentFromArg, key, outputValue) } func processStoreCommand(atmosConfig schema.AtmosConfiguration, info *schema.ConfigAndStacksInfo, hook Hook) error { if len(hook.Outputs) == 0 { - u.LogInfo(atmosConfig, fmt.Sprintf("skipping hook %q: no outputs configured", hook.Name)) + log.Info("skipping hook. no outputs configured.", "hook", hook.Name, "outputs", hook.Outputs) return nil } - u.LogInfo(atmosConfig, fmt.Sprintf("\nexecuting 'after-terraform-apply' hook '%s' with command '%s'", hook.Name, hook.Command)) + log.Info("executing 'after-terraform-apply' hook", "hook", hook.Name, "command", hook.Command) for key, value := range hook.Outputs { outputKey, outputValue := getOutputValue(atmosConfig, info, value) @@ -62,19 +63,19 @@ func processStoreCommand(atmosConfig schema.AtmosConfiguration, info *schema.Con func RunE(cmd *cobra.Command, args []string, info *schema.ConfigAndStacksInfo) error { atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, false) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } sections, err := e.ExecuteDescribeComponent(info.ComponentFromArg, info.Stack, true) if err != nil { - u.LogErrorAndExit(atmosConfig, err) + u.LogErrorAndExit(err) } if isTerraformApplyCommand(&info.SubCommand) { hooks := Hooks{} hooks, err = hooks.ConvertToHooks(sections["hooks"].(map[string]any)) if err != nil { - u.LogErrorAndExit(atmosConfig, fmt.Errorf("invalid hooks section %v", sections["hooks"])) + u.LogErrorAndExit(fmt.Errorf("invalid hooks section %v", sections["hooks"])) } for _, hook := range hooks { diff --git a/pkg/spacelift/spacelift_stack_processor.go b/pkg/spacelift/spacelift_stack_processor.go index 6cfd1d2c3..7dc7cbeaa 100644 --- a/pkg/spacelift/spacelift_stack_processor.go +++ b/pkg/spacelift/spacelift_stack_processor.go @@ -30,7 +30,7 @@ func CreateSpaceliftStacks( atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, true) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } @@ -46,7 +46,7 @@ func CreateSpaceliftStacks( false, ) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } @@ -70,7 +70,7 @@ func CreateSpaceliftStacks( false, ) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } @@ -187,7 +187,7 @@ func TransformStackConfigToSpaceliftStacks( if stackNamePattern != "" { contextPrefix, err = cfg.GetContextPrefix(stackName, context, stackNamePattern, stackName) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } } else { @@ -257,7 +257,7 @@ func TransformStackConfigToSpaceliftStacks( // Terraform workspace workspace, err := e.BuildTerraformWorkspace(atmosConfig, configAndStacksInfo) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } spaceliftConfig["workspace"] = workspace @@ -300,7 +300,7 @@ func TransformStackConfigToSpaceliftStacks( component, ) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } spaceliftStackNameDependsOnLabels1 = append(spaceliftStackNameDependsOnLabels1, fmt.Sprintf("depends-on:%s", spaceliftStackNameDependsOn)) @@ -360,7 +360,7 @@ func TransformStackConfigToSpaceliftStacks( allStackNames, ) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } spaceliftStackNameDependsOnLabels2 = append(spaceliftStackNameDependsOnLabels2, fmt.Sprintf("depends-on:%s", spaceliftStackNameDependsOn)) @@ -378,7 +378,7 @@ func TransformStackConfigToSpaceliftStacks( // Spacelift stack name spaceliftStackName, spaceliftStackNamePattern, err := e.BuildSpaceliftStackName(spaceliftSettings, context, contextPrefix) if err != nil { - u.LogError(atmosConfig, err) + u.LogError(err) return nil, err } @@ -397,7 +397,7 @@ func TransformStackConfigToSpaceliftStacks( spaceliftStackNamePattern, ) er := errors.New(errorMessage) - u.LogError(atmosConfig, er) + u.LogError(er) return nil, er } } diff --git a/pkg/utils/hcl_utils.go b/pkg/utils/hcl_utils.go index 601346fed..6cf4f973f 100644 --- a/pkg/utils/hcl_utils.go +++ b/pkg/utils/hcl_utils.go @@ -48,7 +48,7 @@ func WriteToFileAsHcl( defer func(f *os.File) { err := f.Close() if err != nil { - LogWarning(atmosConfig, err.Error()) + LogWarning(err.Error()) } }(f) @@ -129,7 +129,7 @@ func WriteTerraformBackendConfigToFileAsHcl( defer func(f *os.File) { err := f.Close() if err != nil { - LogWarning(atmosConfig, err.Error()) + LogWarning(err.Error()) } }(f) diff --git a/pkg/utils/json_utils.go b/pkg/utils/json_utils.go index 86ae7cba5..c6f91cc1d 100644 --- a/pkg/utils/json_utils.go +++ b/pkg/utils/json_utils.go @@ -41,7 +41,7 @@ func PrintAsJSONToFileDescriptor(atmosConfig schema.AtmosConfiguration, data any if err != nil { return err } - LogInfo(atmosConfig, j) + LogInfo(j) return nil } diff --git a/pkg/utils/log_utils.go b/pkg/utils/log_utils.go index 63907a6e1..6566859b7 100644 --- a/pkg/utils/log_utils.go +++ b/pkg/utils/log_utils.go @@ -7,8 +7,7 @@ import ( "os/exec" "runtime/debug" - "github.com/cloudposse/atmos/pkg/schema" - "github.com/cloudposse/atmos/pkg/ui/theme" + l "github.com/charmbracelet/log" "github.com/fatih/color" ) @@ -30,113 +29,46 @@ func PrintMessageInColor(message string, messageColor *color.Color) { } // LogErrorAndExit logs errors to std.Error and exits with an error code -func LogErrorAndExit(atmosConfig schema.AtmosConfiguration, err error) { - if err != nil { - LogError(atmosConfig, err) - - // Find the executed command's exit code from the error - var exitError *exec.ExitError - if errors.As(err, &exitError) { - exitCode := exitError.ExitCode() - os.Exit(exitCode) - } - - os.Exit(1) +func LogErrorAndExit(err error) { + l.Error(err) + + // Find the executed command's exit code from the error + var exitError *exec.ExitError + if errors.As(err, &exitError) { + exitCode := exitError.ExitCode() + os.Exit(exitCode) } + + os.Exit(1) } // LogError logs errors to std.Error -func LogError(atmosConfig schema.AtmosConfiguration, err error) { - if err != nil { - _, printErr := theme.Colors.Error.Fprintln(color.Error, err.Error()) - if printErr != nil { - theme.Colors.Error.Println("Error logging the error:") - theme.Colors.Error.Printf("%s\n", printErr) - theme.Colors.Error.Println("Original error:") - theme.Colors.Error.Printf("%s\n", err) - } +func LogError(err error) { + + l.Error(err) - // Print stack trace - if atmosConfig.Logs.Level == LogLevelTrace { - debug.PrintStack() - } + // Print stack trace + if l.GetLevel() == l.DebugLevel { + debug.PrintStack() } } // LogTrace logs the provided trace message -func LogTrace(atmosConfig schema.AtmosConfiguration, message string) { - if atmosConfig.Logs.Level == LogLevelTrace { - log(atmosConfig, theme.Colors.Info, message) - } +func LogTrace(message string) { + LogDebug(message) } // LogDebug logs the provided debug message -func LogDebug(atmosConfig schema.AtmosConfiguration, message string) { - if atmosConfig.Logs.Level == LogLevelTrace || - atmosConfig.Logs.Level == LogLevelDebug { - - log(atmosConfig, theme.Colors.Info, message) - } +func LogDebug(message string) { + l.Debug(message) } // LogInfo logs the provided info message -func LogInfo(atmosConfig schema.AtmosConfiguration, message string) { - // Info level is default, it's used if not set in `atmos.yaml` in the `logs.level` section - if atmosConfig.Logs.Level == "" || - atmosConfig.Logs.Level == LogLevelTrace || - atmosConfig.Logs.Level == LogLevelDebug || - atmosConfig.Logs.Level == LogLevelInfo { - - log(atmosConfig, theme.Colors.Default, message) - } +func LogInfo(message string) { + l.Info(message) } // LogWarning logs the provided warning message -func LogWarning(atmosConfig schema.AtmosConfiguration, message string) { - if atmosConfig.Logs.Level == LogLevelTrace || - atmosConfig.Logs.Level == LogLevelDebug || - atmosConfig.Logs.Level == LogLevelInfo || - atmosConfig.Logs.Level == LogLevelWarning { - - log(atmosConfig, theme.Colors.Warning, message) - } -} - -func log(atmosConfig schema.AtmosConfiguration, logColor *color.Color, message string) { - if atmosConfig.Logs.File != "" { - if atmosConfig.Logs.File == "/dev/stdout" { - _, err := logColor.Fprintln(os.Stdout, message) - if err != nil { - theme.Colors.Error.Printf("%s\n", err) - } - } else if atmosConfig.Logs.File == "/dev/stderr" { - _, err := logColor.Fprintln(os.Stderr, message) - if err != nil { - theme.Colors.Error.Printf("%s\n", err) - } - } else { - f, err := os.OpenFile(atmosConfig.Logs.File, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644) - if err != nil { - theme.Colors.Error.Printf("%s\n", err) - return - } - - defer func(f *os.File) { - err = f.Close() - if err != nil { - theme.Colors.Error.Printf("%s\n", err) - } - }(f) - - _, err = f.Write([]byte(fmt.Sprintf("%s\n", message))) - if err != nil { - theme.Colors.Error.Printf("%s\n", err) - } - } - } else { - _, err := logColor.Fprintln(os.Stdout, message) - if err != nil { - theme.Colors.Error.Printf("%s\n", err) - } - } +func LogWarning(message string) { + l.Warn(message) } diff --git a/pkg/utils/yaml_utils.go b/pkg/utils/yaml_utils.go index a7af8a2c9..84902a996 100644 --- a/pkg/utils/yaml_utils.go +++ b/pkg/utils/yaml_utils.go @@ -49,7 +49,7 @@ func PrintAsYAMLToFileDescriptor(atmosConfig schema.AtmosConfiguration, data any if err != nil { return err } - LogInfo(atmosConfig, y) + LogInfo(y) return nil } diff --git a/pkg/validate/validate_component_test.go b/pkg/validate/validate_component_test.go index 63c4ce906..1442d5631 100644 --- a/pkg/validate/validate_component_test.go +++ b/pkg/validate/validate_component_test.go @@ -26,7 +26,7 @@ func TestValidateComponent(t *testing.T) { "opa", []string{"catalog"}, 0) - u.LogError(atmosConfig, err) + u.LogError(err) assert.Error(t, err) } @@ -45,7 +45,7 @@ func TestValidateComponent2(t *testing.T) { "", []string{"catalog/constants"}, 0) - u.LogError(atmosConfig, err) + u.LogError(err) assert.Error(t, err) } @@ -64,7 +64,7 @@ func TestValidateComponent3(t *testing.T) { "", nil, 0) - u.LogError(atmosConfig, err) + u.LogError(err) assert.Error(t, err) } @@ -83,7 +83,7 @@ func TestValidateComponent4(t *testing.T) { "", nil, 0) - u.LogError(atmosConfig, err) + u.LogError(err) assert.Error(t, err) assert.Equal(t, "'service_1_name' variable length must be greater than 10 chars", err.Error()) } diff --git a/pkg/validate/validate_stacks_test.go b/pkg/validate/validate_stacks_test.go index 26b86369b..11754d1f6 100644 --- a/pkg/validate/validate_stacks_test.go +++ b/pkg/validate/validate_stacks_test.go @@ -7,24 +7,23 @@ import ( "github.com/cloudposse/atmos/cmd" e "github.com/cloudposse/atmos/internal/exec" - "github.com/cloudposse/atmos/pkg/schema" u "github.com/cloudposse/atmos/pkg/utils" ) func TestValidateStacksCommand(t *testing.T) { err := e.ExecuteValidateStacksCmd(cmd.ValidateStacksCmd, nil) - u.LogError(schema.AtmosConfiguration{}, err) + u.LogError(err) assert.NotNil(t, err) } func TestValidateStacksCommandWithAtmosManifestJsonSchema(t *testing.T) { err := e.ExecuteValidateStacksCmd(cmd.ValidateStacksCmd, []string{"--schemas-atmos-manifest", "../../internal/exec/schemas/atmos/atmos-manifest/1.0/atmos-manifest.json"}) - u.LogError(schema.AtmosConfiguration{}, err) + u.LogError(err) assert.NotNil(t, err) } func TestValidateStacksCommandWithRemoteAtmosManifestJsonSchema(t *testing.T) { err := e.ExecuteValidateStacksCmd(cmd.ValidateStacksCmd, []string{"--schemas-atmos-manifest", "https://atmos.tools/schemas/atmos/atmos-manifest/1.0/atmos-manifest.json"}) - u.LogError(schema.AtmosConfiguration{}, err) + u.LogError(err) assert.NotNil(t, err) } From 42fbc3e793fcbe1c21a82ab0122cec30e0084f8b Mon Sep 17 00:00:00 2001 From: Erik Osterman Date: Thu, 30 Jan 2025 21:29:37 -0600 Subject: [PATCH 2/6] fix tests --- ..._Valid_Log_Level_in_Environment_Variable.stderr.golden | 8 ++++---- ..._atmos_terraform_deploy_locked_component.stderr.golden | 2 +- tests/test-cases/log-level-validation.yaml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/snapshots/TestCLICommands_Valid_Log_Level_in_Environment_Variable.stderr.golden b/tests/snapshots/TestCLICommands_Valid_Log_Level_in_Environment_Variable.stderr.golden index e2a5de16d..3844be7fe 100644 --- a/tests/snapshots/TestCLICommands_Valid_Log_Level_in_Environment_Variable.stderr.golden +++ b/tests/snapshots/TestCLICommands_Valid_Log_Level_in_Environment_Variable.stderr.golden @@ -1,4 +1,4 @@ -DEBU Found ENV var ATMOS_LOGS_LEVEL=Debug -DEBU Using command line argument '--logs-level=Info' -DEBU Using command line argument '--logs-file=/dev/stdout' -DEBU processStoreConfig atmosConfig.StoresConfig=map[] +DEBU Found ENV var ATMOS_LOGS_LEVEL=Debug +DEBU Using command line argument '--logs-level=Info' +DEBU Using command line argument '--logs-file=/dev/stdout' +DEBU processStoreConfig atmosConfig.StoresConfig=map[] diff --git a/tests/snapshots/TestCLICommands_atmos_terraform_deploy_locked_component.stderr.golden b/tests/snapshots/TestCLICommands_atmos_terraform_deploy_locked_component.stderr.golden index 7e1b3ea46..89affe83a 100644 --- a/tests/snapshots/TestCLICommands_atmos_terraform_deploy_locked_component.stderr.golden +++ b/tests/snapshots/TestCLICommands_atmos_terraform_deploy_locked_component.stderr.golden @@ -1 +1 @@ -ERRO component 'myapp' is locked and cannot be modified (metadata.locked = true) +ERRO component 'myapp' is locked and cannot be modified (metadata.locked = true) diff --git a/tests/test-cases/log-level-validation.yaml b/tests/test-cases/log-level-validation.yaml index 18fd16ef7..c13d48fcb 100644 --- a/tests/test-cases/log-level-validation.yaml +++ b/tests/test-cases/log-level-validation.yaml @@ -70,7 +70,7 @@ tests: stdout: - '^\n๐Ÿ‘ฝ Atmos (\d+\.\d+\.\d+|test) on [a-z]+/[a-z0-9_]+\n\n' stderr: - - "^$" + - "DEBU Found ENV var ATMOS_LOGS_LEVEL=Debug" exit_code: 0 - name: "Valid Log Level in Command Line Flag" From e69bdfb65cbd7a1663cd99e6dd42e6f4f79b1aef Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 03:30:28 +0000 Subject: [PATCH 3/6] [autofix.ci] apply automated fixes --- cmd/cmd_utils.go | 14 +- cmd/describe_config.go | 1 - cmd/describe_stacks.go | 1 - cmd/root.go | 3 +- cmd/validate_editorconfig.go | 2 +- .../exec/atlantis_generate_repo_config.go | 3 +- internal/exec/describe_affected_utils.go | 13 -- internal/exec/describe_stacks.go | 1 - internal/exec/file_utils.go | 4 +- internal/exec/helmfile.go | 2 +- internal/exec/helmfile_generate_varfile.go | 2 +- internal/exec/shell_utils.go | 6 +- internal/exec/template_funcs_component.go | 4 +- .../template_funcs_gomplate_datasource.go | 4 +- internal/exec/terraform.go | 8 +- internal/exec/terraform_clean.go | 8 +- internal/exec/terraform_generate_backend.go | 4 +- internal/exec/terraform_generate_backends.go | 4 +- internal/exec/terraform_generate_varfile.go | 2 +- internal/exec/terraform_generate_varfiles.go | 6 +- internal/exec/terraform_outputs.go | 12 +- internal/exec/utils.go | 126 +++++++++--------- internal/exec/validate_stacks.go | 2 +- internal/exec/vendor_model.go | 2 +- internal/exec/vendor_utils.go | 1 - internal/exec/workflow_utils.go | 15 +-- internal/exec/yaml_func_exec.go | 1 - internal/exec/yaml_func_store.go | 1 - internal/exec/yaml_func_template.go | 1 - pkg/aws/aws_eks_update_kubeconfig.go | 1 - pkg/component/component_processor.go | 2 - pkg/config/cache.go | 2 +- pkg/config/config.go | 1 - pkg/config/utils.go | 5 +- pkg/spacelift/spacelift_stack_processor.go | 2 - pkg/utils/hcl_utils.go | 2 +- pkg/utils/log_utils.go | 1 - pkg/utils/yaml_utils.go | 18 ++- 38 files changed, 117 insertions(+), 170 deletions(-) diff --git a/cmd/cmd_utils.go b/cmd/cmd_utils.go index 155e4bf1e..7ebb3bf02 100644 --- a/cmd/cmd_utils.go +++ b/cmd/cmd_utils.go @@ -62,7 +62,7 @@ func processCustomCommands( if _, exist := existingTopLevelCommands[commandConfig.Name]; exist && topLevel { command = existingTopLevelCommands[commandConfig.Name] } else { - var customCommand = &cobra.Command{ + customCommand := &cobra.Command{ Use: commandConfig.Name, Short: commandConfig.Description, Long: commandConfig.Description, @@ -132,7 +132,7 @@ func processCommandAliases( aliasCmd := strings.TrimSpace(v) aliasFor := fmt.Sprintf("alias for '%s'", aliasCmd) - var aliasCommand = &cobra.Command{ + aliasCommand := &cobra.Command{ Use: alias, Short: aliasFor, Long: aliasFor, @@ -170,7 +170,7 @@ func preCustomCommand( ) { var sb strings.Builder - //checking for zero arguments in config + // checking for zero arguments in config if len(commandConfig.Arguments) == 0 { if len(commandConfig.Steps) > 0 { // do nothing here; let the code proceed @@ -193,7 +193,7 @@ func preCustomCommand( } } - //Check on many arguments required and have no default value + // Check on many arguments required and have no default value requiredNoDefaultCount := 0 for _, arg := range commandConfig.Arguments { if arg.Required && arg.Default == "" { @@ -310,7 +310,7 @@ func executeCustomCommand( } // Prepare template data - var data = map[string]any{ + data := map[string]any{ "Arguments": argumentsData, "Flags": flagsData, } @@ -536,7 +536,6 @@ func CheckForAtmosUpdateAndPrintMessage(atmosConfig schema.AtmosConfiguration) { cacheCfg.LastChecked = time.Now().Unix() if saveErr := cfg.SaveCache(cacheCfg); saveErr != nil { u.LogWarning(fmt.Sprintf("Unable to save cache: %s", saveErr)) - } } @@ -554,7 +553,6 @@ func handleHelpRequest(cmd *cobra.Command, args []string) { } func showUsageAndExit(cmd *cobra.Command, args []string) { - var suggestions []string unknownCommand := fmt.Sprintf("Error: Unknown command: %q\n\n", cmd.CommandPath()) @@ -593,7 +591,7 @@ func getConfigAndStacksInfo(commandName string, cmd *cobra.Command, args []strin checkAtmosConfig() var argsAfterDoubleDash []string - var finalArgs = args + finalArgs := args doubleDashIndex := lo.IndexOf(args, "--") if doubleDashIndex > 0 { diff --git a/cmd/describe_config.go b/cmd/describe_config.go index 885f6aeed..1a683f394 100644 --- a/cmd/describe_config.go +++ b/cmd/describe_config.go @@ -15,7 +15,6 @@ var describeConfigCmd = &cobra.Command{ FParseErrWhitelist: struct{ UnknownFlags bool }{UnknownFlags: false}, Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { - err := e.ExecuteDescribeConfigCmd(cmd, args) if err != nil { u.LogErrorAndExit(err) diff --git a/cmd/describe_stacks.go b/cmd/describe_stacks.go index 8a768e6fa..3c26eeb1d 100644 --- a/cmd/describe_stacks.go +++ b/cmd/describe_stacks.go @@ -15,7 +15,6 @@ var describeStacksCmd = &cobra.Command{ FParseErrWhitelist: struct{ UnknownFlags bool }{UnknownFlags: false}, Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { - // Check Atmos configuration checkAtmosConfig() diff --git a/cmd/root.go b/cmd/root.go index 28f1ebba4..1e883099d 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -102,7 +102,7 @@ func setupLogger(atmosConfig *schema.AtmosConfiguration) { } if atmosConfig.Logs.File != "/dev/stderr" { - logFile, err := os.OpenFile(atmosConfig.Logs.File, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + logFile, err := os.OpenFile(atmosConfig.Logs.File, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666) if err != nil { log.Fatal("Failed to open log file:", err) } @@ -207,7 +207,6 @@ func initCobraConfig() { return nil }) RootCmd.SetHelpFunc(func(command *cobra.Command, args []string) { - if !(Contains(os.Args, "help") || Contains(os.Args, "--help") || Contains(os.Args, "-h")) { arguments := os.Args[len(strings.Split(command.CommandPath(), " ")):] if len(command.Flags().Args()) > 0 { diff --git a/cmd/validate_editorconfig.go b/cmd/validate_editorconfig.go index 08d311d27..7b23717b1 100644 --- a/cmd/validate_editorconfig.go +++ b/cmd/validate_editorconfig.go @@ -49,7 +49,7 @@ var editorConfigCmd *cobra.Command = &cobra.Command{ func initializeConfig(cmd *cobra.Command) { replaceAtmosConfigInConfig(cmd, atmosConfig) - var configPaths = []string{} + configPaths := []string{} if configFilePath == "" { configPaths = append(configPaths, defaultConfigFileNames[:]...) } else { diff --git a/internal/exec/atlantis_generate_repo_config.go b/internal/exec/atlantis_generate_repo_config.go index 5bef86f85..b1a745053 100644 --- a/internal/exec/atlantis_generate_repo_config.go +++ b/internal/exec/atlantis_generate_repo_config.go @@ -227,7 +227,6 @@ func ExecuteAtlantisGenerateRepoConfig( stacks []string, components []string, ) error { - stacksMap, _, err := FindStacksMap(atmosConfig, false) if err != nil { return err @@ -507,7 +506,7 @@ func ExecuteAtlantisGenerateRepoConfig( return err } - err = u.WriteToFileAsYAML(fileAbsolutePath, atlantisYaml, 0644) + err = u.WriteToFileAsYAML(fileAbsolutePath, atlantisYaml, 0o644) if err != nil { return err } diff --git a/internal/exec/describe_affected_utils.go b/internal/exec/describe_affected_utils.go index c517c3931..9fd339db3 100644 --- a/internal/exec/describe_affected_utils.go +++ b/internal/exec/describe_affected_utils.go @@ -41,7 +41,6 @@ func ExecuteDescribeAffectedWithTargetRefClone( includeSettings bool, stack string, ) ([]schema.Affected, *plumbing.Reference, *plumbing.Reference, string, error) { - if verbose { atmosConfig.Logs.Level = u.LogLevelTrace } @@ -184,7 +183,6 @@ func ExecuteDescribeAffectedWithTargetRefCheckout( includeSettings bool, stack string, ) ([]schema.Affected, *plumbing.Reference, *plumbing.Reference, string, error) { - if verbose { atmosConfig.Logs.Level = u.LogLevelTrace } @@ -335,7 +333,6 @@ func ExecuteDescribeAffectedWithTargetRepoPath( includeSettings bool, stack string, ) ([]schema.Affected, *plumbing.Reference, *plumbing.Reference, string, error) { - localRepo, err := g.GetLocalRepo() if err != nil { return nil, nil, nil, "", err @@ -389,7 +386,6 @@ func executeDescribeAffected( includeSettings bool, stack string, ) ([]schema.Affected, *plumbing.Reference, *plumbing.Reference, error) { - if verbose { atmosConfig.Logs.Level = u.LogLevelTrace } @@ -529,7 +525,6 @@ func findAffected( includeSettings bool, stackToFilter string, ) ([]schema.Affected, error) { - res := []schema.Affected{} var err error @@ -741,7 +736,6 @@ func findAffected( changedFiles, stackComponentSettings.DependsOn, ) - if err != nil { return nil, err } @@ -955,7 +949,6 @@ func findAffected( changedFiles, stackComponentSettings.DependsOn, ) - if err != nil { return nil, err } @@ -1018,7 +1011,6 @@ func appendToAffected( stacks map[string]any, includeSettings bool, ) ([]schema.Affected, error) { - // If the affected component in the stack was already added to the result, don't add it again for _, v := range affectedList { if v.Component == affected.Component && v.Stack == affected.Stack && v.ComponentType == affected.ComponentType { @@ -1101,7 +1093,6 @@ func isEqual( localSection map[string]any, sectionName string, ) bool { - if remoteStackSection, ok := remoteStacks[localStackName].(map[string]any); ok { if remoteComponentsSection, ok := remoteStackSection["components"].(map[string]any); ok { if remoteComponentTypeSection, ok := remoteComponentsSection[componentType].(map[string]any); ok { @@ -1123,7 +1114,6 @@ func isComponentDependentFolderOrFileChanged( changedFiles []string, deps schema.DependsOn, ) (bool, string, string, error) { - hasDependencies := false isChanged := false changedType := "" @@ -1184,7 +1174,6 @@ func isComponentFolderChanged( atmosConfig schema.AtmosConfiguration, changedFiles []string, ) (bool, error) { - var componentPath string switch componentType { @@ -1226,7 +1215,6 @@ func areTerraformComponentModulesChanged( atmosConfig schema.AtmosConfiguration, changedFiles []string, ) (bool, error) { - componentPath := filepath.Join(atmosConfig.BasePath, atmosConfig.Components.Terraform.BasePath, component) componentPathAbs, err := filepath.Abs(componentPath) @@ -1282,7 +1270,6 @@ func addAffectedSpaceliftAdminStack( configAndStacksInfo schema.ConfigAndStacksInfo, includeSettings bool, ) ([]schema.Affected, error) { - // Convert the `settings` section to the `Settings` structure var componentSettings schema.Settings err := mapstructure.Decode(settingsSection, &componentSettings) diff --git a/internal/exec/describe_stacks.go b/internal/exec/describe_stacks.go index b478e0a0f..4fa4d79e3 100644 --- a/internal/exec/describe_stacks.go +++ b/internal/exec/describe_stacks.go @@ -143,7 +143,6 @@ func ExecuteDescribeStacks( processTemplates bool, includeEmptyStacks bool, ) (map[string]any, error) { - stacksMap, _, err := FindStacksMap(atmosConfig, ignoreMissingFiles) if err != nil { return nil, err diff --git a/internal/exec/file_utils.go b/internal/exec/file_utils.go index 6dd274045..5ad88912f 100644 --- a/internal/exec/file_utils.go +++ b/internal/exec/file_utils.go @@ -42,7 +42,7 @@ func printOrWriteToFile( return err } } else { - err := u.WriteToFileAsYAML(file, data, 0644) + err := u.WriteToFileAsYAML(file, data, 0o644) if err != nil { return err } @@ -55,7 +55,7 @@ func printOrWriteToFile( return err } } else { - err := u.WriteToFileAsJSON(file, data, 0644) + err := u.WriteToFileAsJSON(file, data, 0o644) if err != nil { return err } diff --git a/internal/exec/helmfile.go b/internal/exec/helmfile.go index 3b51e3b34..8991c71f4 100644 --- a/internal/exec/helmfile.go +++ b/internal/exec/helmfile.go @@ -117,7 +117,7 @@ func ExecuteHelmfile(info schema.ConfigAndStacksInfo) error { u.LogDebug(varFilePath) if !info.DryRun { - err = u.WriteToFileAsYAML(varFilePath, info.ComponentVarsSection, 0644) + err = u.WriteToFileAsYAML(varFilePath, info.ComponentVarsSection, 0o644) if err != nil { return err } diff --git a/internal/exec/helmfile_generate_varfile.go b/internal/exec/helmfile_generate_varfile.go index 0562df7ce..0213c73b4 100644 --- a/internal/exec/helmfile_generate_varfile.go +++ b/internal/exec/helmfile_generate_varfile.go @@ -73,7 +73,7 @@ func ExecuteHelmfileGenerateVarfileCmd(cmd *cobra.Command, args []string) error u.LogDebug(varFilePath) if !info.DryRun { - err = u.WriteToFileAsYAML(varFilePath, info.ComponentVarsSection, 0644) + err = u.WriteToFileAsYAML(varFilePath, info.ComponentVarsSection, 0o644) if err != nil { return err } diff --git a/internal/exec/shell_utils.go b/internal/exec/shell_utils.go index be06ceb4a..689703598 100644 --- a/internal/exec/shell_utils.go +++ b/internal/exec/shell_utils.go @@ -78,7 +78,7 @@ func ExecuteShellCommand( } else if redirectStdError == "" { cmd.Stderr = os.Stderr } else { - f, err := os.OpenFile(redirectStdError, os.O_WRONLY|os.O_CREATE, 0644) + f, err := os.OpenFile(redirectStdError, os.O_WRONLY|os.O_CREATE, 0o644) if err != nil { u.LogWarning(err.Error()) return err @@ -191,8 +191,8 @@ func execTerraformShellCommand( varFile string, workingDir string, workspaceName string, - componentPath string) error { - + componentPath string, +) error { atmosShellLvl := os.Getenv("ATMOS_SHLVL") atmosShellVal := 1 if atmosShellLvl != "" { diff --git a/internal/exec/template_funcs_component.go b/internal/exec/template_funcs_component.go index 16d86e00a..2245ecdb4 100644 --- a/internal/exec/template_funcs_component.go +++ b/internal/exec/template_funcs_component.go @@ -10,9 +10,7 @@ import ( u "github.com/cloudposse/atmos/pkg/utils" ) -var ( - componentFuncSyncMap = sync.Map{} -) +var componentFuncSyncMap = sync.Map{} func componentFunc(atmosConfig schema.AtmosConfiguration, component string, stack string) (any, error) { u.LogTrace(fmt.Sprintf("Executing template function 'atmos.Component(%s, %s)'", component, stack)) diff --git a/internal/exec/template_funcs_gomplate_datasource.go b/internal/exec/template_funcs_gomplate_datasource.go index ca3076969..14ac8ebd4 100644 --- a/internal/exec/template_funcs_gomplate_datasource.go +++ b/internal/exec/template_funcs_gomplate_datasource.go @@ -10,9 +10,7 @@ import ( "github.com/hairyhenderson/gomplate/v3/data" ) -var ( - gomplateDatasourceFuncSyncMap = sync.Map{} -) +var gomplateDatasourceFuncSyncMap = sync.Map{} func gomplateDatasourceFunc(atmosConfig schema.AtmosConfiguration, alias string, gomplateData *data.Data, args ...string) (any, error) { u.LogTrace(fmt.Sprintf("atmos.GomplateDatasource(): processing datasource alias '%s'", alias)) diff --git a/internal/exec/terraform.go b/internal/exec/terraform.go index 54545edcc..deceff0c5 100644 --- a/internal/exec/terraform.go +++ b/internal/exec/terraform.go @@ -61,7 +61,7 @@ func generateBackendConfig(atmosConfig *schema.AtmosConfiguration, info *schema. return err } - err = u.WriteToFileAsJSON(backendFileName, componentBackendConfig, 0644) + err = u.WriteToFileAsJSON(backendFileName, componentBackendConfig, 0o644) if err != nil { return err } @@ -80,8 +80,8 @@ func generateProviderOverrides(atmosConfig *schema.AtmosConfiguration, info *sch u.LogDebug(providerOverrideFileName) if !info.DryRun { - var providerOverrides = generateComponentProviderOverrides(info.ComponentProvidersSection) - err := u.WriteToFileAsJSON(providerOverrideFileName, providerOverrides, 0644) + providerOverrides := generateComponentProviderOverrides(info.ComponentProvidersSection) + err := u.WriteToFileAsJSON(providerOverrideFileName, providerOverrides, 0o644) return err } } @@ -208,7 +208,7 @@ func ExecuteTerraform(info schema.ConfigAndStacksInfo) error { u.LogDebug(varFilePath) if !info.DryRun { - err = u.WriteToFileAsJSON(varFilePath, info.ComponentVarsSection, 0644) + err = u.WriteToFileAsJSON(varFilePath, info.ComponentVarsSection, 0o644) if err != nil { return err } diff --git a/internal/exec/terraform_clean.go b/internal/exec/terraform_clean.go index 515842bcd..aa381960f 100644 --- a/internal/exec/terraform_clean.go +++ b/internal/exec/terraform_clean.go @@ -201,9 +201,7 @@ func getStackTerraformStateFolder(componentPath string, stack string, atmosConfi if directories[i].Files != nil { for j := range directories[i].Files { directories[i].Files[j].Name = folderName + "/" + directories[i].Files[j].Name - } - } } stackTfStateFolders = append(stackTfStateFolders, directories...) @@ -230,6 +228,7 @@ func getRelativePath(basePath, componentPath string) (string, error) { return filepath.Base(absBasePath) + "/" + relPath, nil } + func confirmDeleteTerraformLocal(message string) (confirm bool, err error) { confirm = false t := huh.ThemeCharm() @@ -324,12 +323,10 @@ func deleteFolders(folders []Directory, relativePath string, atmosConfig schema. } } } - } // handleTFDataDir handles the deletion of the TF_DATA_DIR if specified. func handleTFDataDir(componentPath string, relativePath string, atmosConfig schema.AtmosConfiguration) { - tfDataDir := os.Getenv("TF_DATA_DIR") if tfDataDir == "" { return @@ -345,8 +342,8 @@ func handleTFDataDir(componentPath string, relativePath string, atmosConfig sche if err := DeletePathTerraform(filepath.Join(componentPath, tfDataDir), filepath.Join(relativePath, tfDataDir)); err != nil { u.LogWarning(err.Error()) } - } + func initializeFilesToClear(info schema.ConfigAndStacksInfo, atmosConfig schema.AtmosConfiguration) []string { if info.ComponentFromArg == "" { return []string{".terraform", ".terraform.lock.hcl", "*.tfvar.json", "terraform.tfstate.d"} @@ -365,6 +362,7 @@ func initializeFilesToClear(info schema.ConfigAndStacksInfo, atmosConfig schema. return files } + func IsValidDataDir(tfDataDir string) error { if tfDataDir == "" { return fmt.Errorf("ENV TF_DATA_DIR is empty") diff --git a/internal/exec/terraform_generate_backend.go b/internal/exec/terraform_generate_backend.go index 13ee4bbfb..f185205ef 100644 --- a/internal/exec/terraform_generate_backend.go +++ b/internal/exec/terraform_generate_backend.go @@ -75,7 +75,7 @@ func ExecuteTerraformGenerateBackendCmd(cmd *cobra.Command, args []string) error } // Write backend config to file - var backendFilePath = filepath.Join( + backendFilePath := filepath.Join( atmosConfig.BasePath, atmosConfig.Components.Terraform.BasePath, info.ComponentFolderPrefix, @@ -87,7 +87,7 @@ func ExecuteTerraformGenerateBackendCmd(cmd *cobra.Command, args []string) error u.LogDebug(backendFilePath) if !info.DryRun { - err = u.WriteToFileAsJSON(backendFilePath, componentBackendConfig, 0644) + err = u.WriteToFileAsJSON(backendFilePath, componentBackendConfig, 0o644) if err != nil { return err } diff --git a/internal/exec/terraform_generate_backends.go b/internal/exec/terraform_generate_backends.go index 0404d1577..3ce0b4350 100644 --- a/internal/exec/terraform_generate_backends.go +++ b/internal/exec/terraform_generate_backends.go @@ -335,7 +335,7 @@ func ExecuteTerraformGenerateBackends( return err } - err = u.WriteToFileAsJSON(backendFileAbsolutePath, componentBackendConfig, 0644) + err = u.WriteToFileAsJSON(backendFileAbsolutePath, componentBackendConfig, 0o644) if err != nil { return err } @@ -345,7 +345,7 @@ func ExecuteTerraformGenerateBackends( return err } } else if format == "backend-config" { - err = u.WriteToFileAsHcl(atmosConfig, backendFileAbsolutePath, backendSection, 0644) + err = u.WriteToFileAsHcl(atmosConfig, backendFileAbsolutePath, backendSection, 0o644) if err != nil { return err } diff --git a/internal/exec/terraform_generate_varfile.go b/internal/exec/terraform_generate_varfile.go index d584a3372..b94a708a3 100644 --- a/internal/exec/terraform_generate_varfile.go +++ b/internal/exec/terraform_generate_varfile.go @@ -73,7 +73,7 @@ func ExecuteTerraformGenerateVarfileCmd(cmd *cobra.Command, args []string) error u.LogDebug(varFilePath) if !info.DryRun { - err = u.WriteToFileAsJSON(varFilePath, info.ComponentVarsSection, 0644) + err = u.WriteToFileAsJSON(varFilePath, info.ComponentVarsSection, 0o644) if err != nil { return err } diff --git a/internal/exec/terraform_generate_varfiles.go b/internal/exec/terraform_generate_varfiles.go index 6906e71bd..55e9452d1 100644 --- a/internal/exec/terraform_generate_varfiles.go +++ b/internal/exec/terraform_generate_varfiles.go @@ -305,17 +305,17 @@ func ExecuteTerraformGenerateVarfiles( // Write the varfile if format == "yaml" { - err = u.WriteToFileAsYAML(fileAbsolutePath, varsSection, 0644) + err = u.WriteToFileAsYAML(fileAbsolutePath, varsSection, 0o644) if err != nil { return err } } else if format == "json" { - err = u.WriteToFileAsJSON(fileAbsolutePath, varsSection, 0644) + err = u.WriteToFileAsJSON(fileAbsolutePath, varsSection, 0o644) if err != nil { return err } } else if format == "hcl" { - err = u.WriteToFileAsHcl(atmosConfig, fileAbsolutePath, varsSection, 0644) + err = u.WriteToFileAsHcl(atmosConfig, fileAbsolutePath, varsSection, 0o644) if err != nil { return err } diff --git a/internal/exec/terraform_outputs.go b/internal/exec/terraform_outputs.go index 14503f6af..00a7db892 100644 --- a/internal/exec/terraform_outputs.go +++ b/internal/exec/terraform_outputs.go @@ -19,9 +19,7 @@ import ( u "github.com/cloudposse/atmos/pkg/utils" ) -var ( - terraformOutputsCache = sync.Map{} -) +var terraformOutputsCache = sync.Map{} func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, component string, @@ -98,7 +96,7 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, return nil, err } - err = u.WriteToFileAsJSON(backendFileName, componentBackendConfig, 0644) + err = u.WriteToFileAsJSON(backendFileName, componentBackendConfig, 0o644) if err != nil { return nil, err } @@ -116,8 +114,8 @@ func execTerraformOutput(atmosConfig *schema.AtmosConfiguration, u.LogDebug("\nWriting the provider overrides to file:") u.LogDebug(providerOverrideFileName) - var providerOverrides = generateComponentProviderOverrides(providersSection) - err = u.WriteToFileAsJSON(providerOverrideFileName, providerOverrides, 0644) + providerOverrides := generateComponentProviderOverrides(providersSection) + err = u.WriteToFileAsJSON(providerOverrideFileName, providerOverrides, 0o644) if err != nil { return nil, err } @@ -315,7 +313,6 @@ func getTerraformOutputVariable( } res, err := u.EvaluateYqExpression(atmosConfig, outputs, val) - if err != nil { u.LogErrorAndExit(fmt.Errorf("error evaluating terrform output '%s' for the component '%s' in the stack '%s':\n%v", output, @@ -341,7 +338,6 @@ func getStaticRemoteStateOutput( } res, err := u.EvaluateYqExpression(atmosConfig, remoteStateSection, val) - if err != nil { u.LogErrorAndExit(fmt.Errorf("error evaluating the 'static' remote state backend output '%s' for the component '%s' in the stack '%s':\n%v", output, diff --git a/internal/exec/utils.go b/internal/exec/utils.go index 02a6352d1..88b4eb090 100644 --- a/internal/exec/utils.go +++ b/internal/exec/utils.go @@ -16,43 +16,41 @@ import ( u "github.com/cloudposse/atmos/pkg/utils" ) -var ( - // `commonFlags` are a list of flags that atmos understands but the underlying tools do not (e.g. terraform, helmfile, etc.). - // These flags get removed from the arg list after atmos uses them so the underlying tool does not get passed a flag it doesn't accept. - commonFlags = []string{ - "--stack", - "-s", - cfg.DryRunFlag, - cfg.SkipInitFlag, - cfg.KubeConfigConfigFlag, - cfg.TerraformCommandFlag, - cfg.TerraformDirFlag, - cfg.HelmfileCommandFlag, - cfg.HelmfileDirFlag, - cfg.CliConfigDirFlag, - cfg.StackDirFlag, - cfg.BasePathFlag, - cfg.VendorBasePathFlag, - cfg.GlobalOptionsFlag, - cfg.DeployRunInitFlag, - cfg.InitRunReconfigure, - cfg.AutoGenerateBackendFileFlag, - cfg.AppendUserAgentFlag, - cfg.FromPlanFlag, - cfg.PlanFileFlag, - cfg.HelpFlag1, - cfg.HelpFlag2, - cfg.WorkflowDirFlag, - cfg.JsonSchemaDirFlag, - cfg.OpaDirFlag, - cfg.CueDirFlag, - cfg.AtmosManifestJsonSchemaFlag, - cfg.RedirectStdErrFlag, - cfg.LogsLevelFlag, - cfg.LogsFileFlag, - cfg.QueryFlag, - } -) +// `commonFlags` are a list of flags that atmos understands but the underlying tools do not (e.g. terraform, helmfile, etc.). +// These flags get removed from the arg list after atmos uses them so the underlying tool does not get passed a flag it doesn't accept. +var commonFlags = []string{ + "--stack", + "-s", + cfg.DryRunFlag, + cfg.SkipInitFlag, + cfg.KubeConfigConfigFlag, + cfg.TerraformCommandFlag, + cfg.TerraformDirFlag, + cfg.HelmfileCommandFlag, + cfg.HelmfileDirFlag, + cfg.CliConfigDirFlag, + cfg.StackDirFlag, + cfg.BasePathFlag, + cfg.VendorBasePathFlag, + cfg.GlobalOptionsFlag, + cfg.DeployRunInitFlag, + cfg.InitRunReconfigure, + cfg.AutoGenerateBackendFileFlag, + cfg.AppendUserAgentFlag, + cfg.FromPlanFlag, + cfg.PlanFileFlag, + cfg.HelpFlag1, + cfg.HelpFlag2, + cfg.WorkflowDirFlag, + cfg.JsonSchemaDirFlag, + cfg.OpaDirFlag, + cfg.CueDirFlag, + cfg.AtmosManifestJsonSchemaFlag, + cfg.RedirectStdErrFlag, + cfg.LogsLevelFlag, + cfg.LogsFileFlag, + cfg.QueryFlag, +} // ProcessComponentConfig processes component config sections func ProcessComponentConfig( @@ -62,7 +60,6 @@ func ProcessComponentConfig( componentType string, component string, ) error { - var stackSection map[string]any var componentsSection map[string]any var componentTypeSection map[string]any @@ -272,7 +269,6 @@ func FindStacksMap(atmosConfig schema.AtmosConfiguration, ignoreMissingFiles boo true, ignoreMissingFiles, ) - if err != nil { return nil, nil, err } @@ -287,7 +283,6 @@ func ProcessStacks( checkStack bool, processTemplates bool, ) (schema.ConfigAndStacksInfo, error) { - // Check if stack was provided if checkStack && len(configAndStacksInfo.Stack) < 1 { message := fmt.Sprintf("'stack' is required. Usage: atmos %s -s ", configAndStacksInfo.ComponentType) @@ -331,7 +326,6 @@ func ProcessStacks( configAndStacksInfo.ComponentType, configAndStacksInfo.ComponentFromArg, ) - if err != nil { return configAndStacksInfo, err } @@ -719,7 +713,7 @@ func processArgsAndFlags( } info.TerraformCommand = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.TerraformCommandFlag) { - var terraformCommandFlagParts = strings.Split(arg, "=") + terraformCommandFlagParts := strings.Split(arg, "=") if len(terraformCommandFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -732,7 +726,7 @@ func processArgsAndFlags( } info.TerraformDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.TerraformDirFlag) { - var terraformDirFlagParts = strings.Split(arg, "=") + terraformDirFlagParts := strings.Split(arg, "=") if len(terraformDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -745,7 +739,7 @@ func processArgsAndFlags( } info.AppendUserAgent = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.AppendUserAgentFlag) { - var appendUserAgentFlagParts = strings.Split(arg, "=") + appendUserAgentFlagParts := strings.Split(arg, "=") if len(appendUserAgentFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -758,7 +752,7 @@ func processArgsAndFlags( } info.HelmfileCommand = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.HelmfileCommandFlag) { - var helmfileCommandFlagParts = strings.Split(arg, "=") + helmfileCommandFlagParts := strings.Split(arg, "=") if len(helmfileCommandFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -771,7 +765,7 @@ func processArgsAndFlags( } info.HelmfileDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.HelmfileDirFlag) { - var helmfileDirFlagParts = strings.Split(arg, "=") + helmfileDirFlagParts := strings.Split(arg, "=") if len(helmfileDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -784,7 +778,7 @@ func processArgsAndFlags( } info.ConfigDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.CliConfigDirFlag) { - var configDirFlagParts = strings.Split(arg, "=") + configDirFlagParts := strings.Split(arg, "=") if len(configDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -797,7 +791,7 @@ func processArgsAndFlags( } info.StacksDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.StackDirFlag) { - var stacksDirFlagParts = strings.Split(arg, "=") + stacksDirFlagParts := strings.Split(arg, "=") if len(stacksDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -810,7 +804,7 @@ func processArgsAndFlags( } info.BasePath = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.BasePathFlag) { - var stacksDirFlagParts = strings.Split(arg, "=") + stacksDirFlagParts := strings.Split(arg, "=") if len(stacksDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -823,7 +817,7 @@ func processArgsAndFlags( } info.VendorBasePath = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.VendorBasePathFlag) { - var vendorBasePathFlagParts = strings.Split(arg, "=") + vendorBasePathFlagParts := strings.Split(arg, "=") if len(vendorBasePathFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -836,7 +830,7 @@ func processArgsAndFlags( } info.DeployRunInit = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.DeployRunInitFlag) { - var deployRunInitFlagParts = strings.Split(arg, "=") + deployRunInitFlagParts := strings.Split(arg, "=") if len(deployRunInitFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -849,7 +843,7 @@ func processArgsAndFlags( } info.AutoGenerateBackendFile = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.AutoGenerateBackendFileFlag) { - var autoGenerateBackendFileFlagParts = strings.Split(arg, "=") + autoGenerateBackendFileFlagParts := strings.Split(arg, "=") if len(autoGenerateBackendFileFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -862,7 +856,7 @@ func processArgsAndFlags( } info.WorkflowsDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.WorkflowDirFlag) { - var workflowDirFlagParts = strings.Split(arg, "=") + workflowDirFlagParts := strings.Split(arg, "=") if len(workflowDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -875,7 +869,7 @@ func processArgsAndFlags( } info.InitRunReconfigure = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.InitRunReconfigure) { - var initRunReconfigureParts = strings.Split(arg, "=") + initRunReconfigureParts := strings.Split(arg, "=") if len(initRunReconfigureParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -888,7 +882,7 @@ func processArgsAndFlags( } info.JsonSchemaDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.JsonSchemaDirFlag) { - var jsonschemaDirFlagParts = strings.Split(arg, "=") + jsonschemaDirFlagParts := strings.Split(arg, "=") if len(jsonschemaDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -901,7 +895,7 @@ func processArgsAndFlags( } info.OpaDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.OpaDirFlag) { - var opaDirFlagParts = strings.Split(arg, "=") + opaDirFlagParts := strings.Split(arg, "=") if len(opaDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -914,7 +908,7 @@ func processArgsAndFlags( } info.CueDir = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.CueDirFlag) { - var cueDirFlagParts = strings.Split(arg, "=") + cueDirFlagParts := strings.Split(arg, "=") if len(cueDirFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -927,7 +921,7 @@ func processArgsAndFlags( } info.AtmosManifestJsonSchema = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.AtmosManifestJsonSchemaFlag) { - var atmosManifestJsonSchemaFlagParts = strings.Split(arg, "=") + atmosManifestJsonSchemaFlagParts := strings.Split(arg, "=") if len(atmosManifestJsonSchemaFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -940,7 +934,7 @@ func processArgsAndFlags( } info.RedirectStdErr = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.RedirectStdErrFlag) { - var redirectStderrParts = strings.Split(arg, "=") + redirectStderrParts := strings.Split(arg, "=") if len(redirectStderrParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -954,7 +948,7 @@ func processArgsAndFlags( info.PlanFile = inputArgsAndFlags[i+1] info.UseTerraformPlan = true } else if strings.HasPrefix(arg+"=", cfg.PlanFileFlag) { - var planFileFlagParts = strings.Split(arg, "=") + planFileFlagParts := strings.Split(arg, "=") if len(planFileFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -968,7 +962,7 @@ func processArgsAndFlags( } info.LogsLevel = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.LogsLevelFlag) { - var logsLevelFlagParts = strings.Split(arg, "=") + logsLevelFlagParts := strings.Split(arg, "=") if len(logsLevelFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -981,7 +975,7 @@ func processArgsAndFlags( } info.LogsFile = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.LogsFileFlag) { - var logsFileFlagParts = strings.Split(arg, "=") + logsFileFlagParts := strings.Split(arg, "=") if len(logsFileFlagParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -994,7 +988,7 @@ func processArgsAndFlags( } info.SettingsListMergeStrategy = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.SettingsListMergeStrategyFlag) { - var settingsListMergeStrategyParts = strings.Split(arg, "=") + settingsListMergeStrategyParts := strings.Split(arg, "=") if len(settingsListMergeStrategyParts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -1007,7 +1001,7 @@ func processArgsAndFlags( } info.Query = inputArgsAndFlags[i+1] } else if strings.HasPrefix(arg+"=", cfg.QueryFlag) { - var parts = strings.Split(arg, "=") + parts := strings.Split(arg, "=") if len(parts) != 2 { return info, fmt.Errorf("invalid flag: %s", arg) } @@ -1142,7 +1136,7 @@ func generateComponentBackendConfig(backendType string, backendConfig map[string // Generate backend config file for Terraform Cloud // https://developer.hashicorp.com/terraform/cli/cloud/settings if backendType == "cloud" { - var backendConfigFinal = backendConfig + backendConfigFinal := backendConfig if terraformWorkspace != "" { // Process template tokens in the backend config @@ -1216,7 +1210,7 @@ func FindComponentDependencies(currentStack string, sources schema.ConfigSources // getCliVars returns a map of variables provided on the command-line // atmos terraform apply template-functions-test -s tenant1-ue2-prod -var name=test2 -var stage=dev -var 'tags={"a":"value2", "Name":"test"}' func getCliVars(args []string) (map[string]any, error) { - var variables = make(map[string]any) + variables := make(map[string]any) for i := 0; i < len(args); i++ { if args[i] == "-var" && i+1 < len(args) { kv := args[i+1] diff --git a/internal/exec/validate_stacks.go b/internal/exec/validate_stacks.go index 74b3c40e1..7a7ff70c1 100644 --- a/internal/exec/validate_stacks.go +++ b/internal/exec/validate_stacks.go @@ -412,7 +412,7 @@ func getEmbeddedSchemaPath() (string, error) { return "", err } - err = os.WriteFile(atmosManifestJsonSchemaFilePath, embedded, 0644) + err = os.WriteFile(atmosManifestJsonSchemaFilePath, embedded, 0o644) if err != nil { return "", err } diff --git a/internal/exec/vendor_model.go b/internal/exec/vendor_model.go index 21ddf9932..2fb300f49 100644 --- a/internal/exec/vendor_model.go +++ b/internal/exec/vendor_model.go @@ -256,7 +256,7 @@ func downloadAndInstall(p *pkgAtmosVendor, dryRun bool, atmosConfig schema.Atmos } } // Ensure directory permissions are restricted - if err := os.Chmod(tempDir, 0700); err != nil { + if err := os.Chmod(tempDir, 0o700); err != nil { return installedPkgMsg{ err: fmt.Errorf("failed to set temp directory permissions: %w", err), name: p.name, diff --git a/internal/exec/vendor_utils.go b/internal/exec/vendor_utils.go index 4d537ed63..965538ba6 100644 --- a/internal/exec/vendor_utils.go +++ b/internal/exec/vendor_utils.go @@ -266,7 +266,6 @@ func ExecuteAtmosVendorInternal( tags []string, dryRun bool, ) error { - var err error vendorConfigFilePath := filepath.Dir(vendorConfigFileName) diff --git a/internal/exec/workflow_utils.go b/internal/exec/workflow_utils.go index 50238ea9e..568e878fe 100644 --- a/internal/exec/workflow_utils.go +++ b/internal/exec/workflow_utils.go @@ -26,7 +26,7 @@ func ExecuteWorkflow( commandLineStack string, fromStep string, ) error { - var steps = workflowDefinition.Steps + steps := workflowDefinition.Steps if len(steps) == 0 { return fmt.Errorf("workflow '%s' does not have any steps defined", workflow) @@ -61,8 +61,8 @@ func ExecuteWorkflow( } for stepIdx, step := range steps { - var command = strings.TrimSpace(step.Command) - var commandType = strings.TrimSpace(step.Type) + command := strings.TrimSpace(step.Command) + commandType := strings.TrimSpace(step.Type) logFunc(fmt.Sprintf("Executing workflow step: %s", command)) @@ -77,9 +77,9 @@ func ExecuteWorkflow( } else if commandType == "atmos" { args := strings.Fields(command) - var workflowStack = strings.TrimSpace(workflowDefinition.Stack) - var stepStack = strings.TrimSpace(step.Stack) - var finalStack = "" + workflowStack := strings.TrimSpace(workflowDefinition.Stack) + stepStack := strings.TrimSpace(step.Stack) + finalStack := "" // The workflow `stack` attribute overrides the stack in the `command` (if specified) // The step `stack` attribute overrides the stack in the `command` and the workflow `stack` attribute @@ -132,7 +132,6 @@ func ExecuteWorkflow( func ExecuteDescribeWorkflows( atmosConfig schema.AtmosConfiguration, ) ([]schema.DescribeWorkflowsItem, map[string][]string, map[string]schema.WorkflowManifest, error) { - listResult := []schema.DescribeWorkflowsItem{} mapResult := make(map[string][]string) allResult := make(map[string]schema.WorkflowManifest) @@ -209,7 +208,7 @@ func ExecuteDescribeWorkflows( } func checkAndGenerateWorkflowStepNames(workflowDefinition *schema.WorkflowDefinition) { - var steps = workflowDefinition.Steps + steps := workflowDefinition.Steps if steps == nil { return diff --git a/internal/exec/yaml_func_exec.go b/internal/exec/yaml_func_exec.go index 8725ec6b9..927535b26 100644 --- a/internal/exec/yaml_func_exec.go +++ b/internal/exec/yaml_func_exec.go @@ -17,7 +17,6 @@ func processTagExec( u.LogTrace(fmt.Sprintf("Executing Atmos YAML function: %s", input)) str, err := getStringAfterTag(input, config.AtmosYamlFuncExec) - if err != nil { u.LogErrorAndExit(err) } diff --git a/internal/exec/yaml_func_store.go b/internal/exec/yaml_func_store.go index f6cc7657d..3bd81639a 100644 --- a/internal/exec/yaml_func_store.go +++ b/internal/exec/yaml_func_store.go @@ -63,7 +63,6 @@ func processTagStore(atmosConfig schema.AtmosConfiguration, input string, curren value, err := store.Get(params.stack, params.component, params.key) if err != nil { - u.LogErrorAndExit(fmt.Errorf("an error occurred while looking up key %s in stack %s and component %s from store %s\n%v", params.key, params.stack, params.component, params.storeName, err)) } diff --git a/internal/exec/yaml_func_template.go b/internal/exec/yaml_func_template.go index 93b12ab96..9c6a216aa 100644 --- a/internal/exec/yaml_func_template.go +++ b/internal/exec/yaml_func_template.go @@ -17,7 +17,6 @@ func processTagTemplate( u.LogTrace(fmt.Sprintf("Executing Atmos YAML function: %s", input)) str, err := getStringAfterTag(input, config.AtmosYamlFuncTemplate) - if err != nil { u.LogErrorAndExit(err) } diff --git a/pkg/aws/aws_eks_update_kubeconfig.go b/pkg/aws/aws_eks_update_kubeconfig.go index 92cab6c1a..fbb4ab242 100644 --- a/pkg/aws/aws_eks_update_kubeconfig.go +++ b/pkg/aws/aws_eks_update_kubeconfig.go @@ -10,7 +10,6 @@ import ( // https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html func ExecuteAwsEksUpdateKubeconfig(kubeconfigContext schema.AwsEksUpdateKubeconfigContext) error { err := e.ExecuteAwsEksUpdateKubeconfig(kubeconfigContext) - if err != nil { u.LogError(err) return err diff --git a/pkg/component/component_processor.go b/pkg/component/component_processor.go index f06a19ee4..36083dd43 100644 --- a/pkg/component/component_processor.go +++ b/pkg/component/component_processor.go @@ -16,7 +16,6 @@ func ProcessComponentInStack( atmosCliConfigPath string, atmosBasePath string, ) (map[string]any, error) { - var configAndStacksInfo schema.ConfigAndStacksInfo configAndStacksInfo.ComponentFromArg = component configAndStacksInfo.Stack = stack @@ -53,7 +52,6 @@ func ProcessComponentFromContext( atmosCliConfigPath string, atmosBasePath string, ) (map[string]any, error) { - var configAndStacksInfo schema.ConfigAndStacksInfo configAndStacksInfo.ComponentFromArg = component configAndStacksInfo.AtmosCliConfigPath = atmosCliConfigPath diff --git a/pkg/config/cache.go b/pkg/config/cache.go index a6a86ab5e..f46b39a7b 100644 --- a/pkg/config/cache.go +++ b/pkg/config/cache.go @@ -28,7 +28,7 @@ func GetCacheFilePath() (string, error) { cacheDir = filepath.Join(xdgCacheHome, "atmos") } - if err := os.MkdirAll(cacheDir, 0755); err != nil { + if err := os.MkdirAll(cacheDir, 0o755); err != nil { return "", errors.Wrap(err, "error creating cache directory") } diff --git a/pkg/config/config.go b/pkg/config/config.go index 9778ca17c..f9f95147a 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -335,7 +335,6 @@ func InitCliConfig(configAndStacksInfo schema.ConfigAndStacksInfo, processStacks includeStackAbsPaths, excludeStackAbsPaths, ) - if err != nil { return atmosConfig, err } diff --git a/pkg/config/utils.go b/pkg/config/utils.go index 66be5dfb0..faa4a276f 100644 --- a/pkg/config/utils.go +++ b/pkg/config/utils.go @@ -22,10 +22,9 @@ func FindAllStackConfigsInPathsForStack( includeStackPaths []string, excludeStackPaths []string, ) ([]string, []string, bool, error) { - var absolutePaths []string var relativePaths []string - var stackIsDir = strings.IndexAny(stack, "/") > 0 + stackIsDir := strings.IndexAny(stack, "/") > 0 for _, p := range includeStackPaths { // Try both regular and template patterns @@ -120,7 +119,6 @@ func FindAllStackConfigsInPaths( includeStackPaths []string, excludeStackPaths []string, ) ([]string, []string, error) { - var absolutePaths []string var relativePaths []string @@ -647,7 +645,6 @@ func GetStackNameFromContextAndStackNamePattern( stage string, stackNamePattern string, ) (string, error) { - if len(stackNamePattern) == 0 { return "", fmt.Errorf("stack name pattern must be provided") diff --git a/pkg/spacelift/spacelift_stack_processor.go b/pkg/spacelift/spacelift_stack_processor.go index 7dc7cbeaa..243014269 100644 --- a/pkg/spacelift/spacelift_stack_processor.go +++ b/pkg/spacelift/spacelift_stack_processor.go @@ -27,7 +27,6 @@ func CreateSpaceliftStacks( processImports bool, stackConfigPathTemplate string, ) (map[string]any, error) { - atmosConfig, err := cfg.InitCliConfig(schema.ConfigAndStacksInfo{}, true) if err != nil { u.LogError(err) @@ -94,7 +93,6 @@ func TransformStackConfigToSpaceliftStacks( processImports bool, rawStackConfigs map[string]map[string]any, ) (map[string]any, error) { - var err error res := map[string]any{} diff --git a/pkg/utils/hcl_utils.go b/pkg/utils/hcl_utils.go index 5b4f6480a..aae6b1686 100644 --- a/pkg/utils/hcl_utils.go +++ b/pkg/utils/hcl_utils.go @@ -122,7 +122,7 @@ func WriteTerraformBackendConfigToFileAsHcl( } } - f, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0644) + f, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0o644) if err != nil { return err } diff --git a/pkg/utils/log_utils.go b/pkg/utils/log_utils.go index 699c6b1b1..39d5d1ed3 100644 --- a/pkg/utils/log_utils.go +++ b/pkg/utils/log_utils.go @@ -49,7 +49,6 @@ func LogErrorAndExit(err error) { // LogError logs errors to std.Error func LogError(err error) { - l.Error(err) // Print stack trace diff --git a/pkg/utils/yaml_utils.go b/pkg/utils/yaml_utils.go index b95c67729..2c740b939 100644 --- a/pkg/utils/yaml_utils.go +++ b/pkg/utils/yaml_utils.go @@ -25,16 +25,14 @@ const ( AtmosYamlFuncIncludeGoGetter = "!include-go-getter" ) -var ( - AtmosYamlTags = []string{ - AtmosYamlFuncExec, - AtmosYamlFuncStore, - AtmosYamlFuncTemplate, - AtmosYamlFuncTerraformOutput, - AtmosYamlFuncEnv, - AtmosYamlFuncInclude, - } -) +var AtmosYamlTags = []string{ + AtmosYamlFuncExec, + AtmosYamlFuncStore, + AtmosYamlFuncTemplate, + AtmosYamlFuncTerraformOutput, + AtmosYamlFuncEnv, + AtmosYamlFuncInclude, +} // PrintAsYAML prints the provided value as YAML document to the console func PrintAsYAML(data any) error { From 56bd52ca3802cd762a673e01bb08d3a0a96fa817 Mon Sep 17 00:00:00 2001 From: Erik Osterman Date: Thu, 30 Jan 2025 22:08:30 -0600 Subject: [PATCH 4/6] update snapshot --- ...ands_Invalid_Log_Level_in_Environment_Variable.stderr.golden | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/snapshots/TestCLICommands_Invalid_Log_Level_in_Environment_Variable.stderr.golden b/tests/snapshots/TestCLICommands_Invalid_Log_Level_in_Environment_Variable.stderr.golden index c7084f7b5..b7302c6c6 100644 --- a/tests/snapshots/TestCLICommands_Invalid_Log_Level_in_Environment_Variable.stderr.golden +++ b/tests/snapshots/TestCLICommands_Invalid_Log_Level_in_Environment_Variable.stderr.golden @@ -1 +1 @@ -ERRO Error: Invalid log level 'XTrace'. Valid options are: [Trace Debug Info Warning Off] +ERRO Error: Invalid log level 'XTrace'. Valid options are: [Trace Debug Info Warning Off] From c86e42d62c40078b2e5a65d53803cc8cfba82685 Mon Sep 17 00:00:00 2001 From: Erik Osterman Date: Thu, 30 Jan 2025 22:15:48 -0600 Subject: [PATCH 5/6] fix more tests --- ...s_atmos_vendor_pull_(no_tty).stderr.golden | 12 +++--- ...ck_atmos_--help_in_empty-dir.stdout.golden | 41 +++++++++++-------- tests/test-cases/complete.yaml | 3 +- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/tests/snapshots/TestCLICommands_atmos_vendor_pull_(no_tty).stderr.golden b/tests/snapshots/TestCLICommands_atmos_vendor_pull_(no_tty).stderr.golden index 65f8e91b6..3f526cd52 100644 --- a/tests/snapshots/TestCLICommands_atmos_vendor_pull_(no_tty).stderr.golden +++ b/tests/snapshots/TestCLICommands_atmos_vendor_pull_(no_tty).stderr.golden @@ -1,7 +1,7 @@ -INFO Vendoring from 'vendor.yaml' -WARN No TTY detected. Falling back to basic output. This can happen when no terminal is attached or when commands are pipelined. -INFO โœ“ github/stargazers (main) -INFO โœ“ weather (main) -INFO โœ“ ipinfo (main) -INFO Vendored 3 components. +INFO Vendoring from 'vendor.yaml' +WARN No TTY detected. Falling back to basic output. This can happen when no terminal is attached or when commands are pipelined. +INFO โœ“ github/stargazers (main) +INFO โœ“ weather (main) +INFO โœ“ ipinfo (main) +INFO Vendored 3 components. diff --git a/tests/snapshots/TestCLICommands_check_atmos_--help_in_empty-dir.stdout.golden b/tests/snapshots/TestCLICommands_check_atmos_--help_in_empty-dir.stdout.golden index aa9c3886f..ecf958ffd 100644 --- a/tests/snapshots/TestCLICommands_check_atmos_--help_in_empty-dir.stdout.golden +++ b/tests/snapshots/TestCLICommands_check_atmos_--help_in_empty-dir.stdout.golden @@ -8,27 +8,27 @@ Usage: Available Commands: - about  Learn about Atmos - atlantis  Generate and manage Atlantis configurations - aws  Run AWS-specific commands for interacting with cloud resources - completion Generate autocompletion scripts for Bash, Zsh, Fish, and PowerShell - describe  Show details about Atmos configurations and components - docs  Open Atmos documentation or display component-specific docs - helmfile  Manage Helmfile-based Kubernetes deployments - help  Display help information for Atmos commands - list  List available stacks and components - pro  Access premium features integrated with app.cloudposse.com - support  Show Atmos support options - terraform  Execute Terraform commands (e.g., plan, apply, destroy) using Atmos stack configurations - validate  Validate configurations against OPA policies and JSON schemas - vendor  Manage external dependencies for components or stacks - version  Display the version of Atmos you are running and check for updates - workflow  Run predefined tasks using workflows + about Learn about Atmos + atlantis Generate and manage Atlantis configurations + aws Run AWS-specific commands for interacting with cloud resources + completion Generate autocompletion scripts for Bash, Zsh, Fish, and PowerShell + describe Show details about Atmos configurations and components + docs Open Atmos documentation or display component-specific docs + helmfile Manage Helmfile-based Kubernetes deployments + help Display help information for Atmos commands + list List available stacks and components + pro Access premium features integrated with app.cloudposse.com + support Show Atmos support options + terraform Execute Terraform commands (e.g., plan, apply, destroy) using Atmos stack configurations + validate Validate configurations against OPA policies and JSON schemas + vendor Manage external dependencies for components or stacks + version Display the version of Atmos you are running and check for updates + workflow Run predefined tasks using workflows SubCommand Aliases: - hf Alias of "atmos helmfile" command - tf Alias of "atmos terraform" command + hf Alias of "atmos helmfile" command + tf Alias of "atmos terraform" command Flags: @@ -60,3 +60,8 @@ Example: Use "atmos [subcommand] --help" for more information about a command. +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ Update available! test ยป 1.157.0 โ”‚ +โ”‚ Atmos Releases: https://github.com/cloudposse/atmos/releases โ”‚ +โ”‚ Install Atmos: https://atmos.tools/install โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ diff --git a/tests/test-cases/complete.yaml b/tests/test-cases/complete.yaml index e60f25386..be9acae76 100644 --- a/tests/test-cases/complete.yaml +++ b/tests/test-cases/complete.yaml @@ -12,5 +12,6 @@ tests: expect: diff: [] stderr: - - "ATMOS_SHLVL.*exceeds maximum allowed depth.*(\r?\n)+exit status 1(\r?\n)+exit status 1.*" + - 'ERRO ATMOS_SHLVL \(11\) exceeds maximum allowed depth \(10\)' + - "ERRO exit status 1" exit_code: 1 From 03e2a27392327b683037a73d803763eaf226d85f Mon Sep 17 00:00:00 2001 From: Erik Osterman Date: Thu, 30 Jan 2025 22:34:45 -0600 Subject: [PATCH 6/6] disable snapshot --- tests/test-cases/empty-dir.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test-cases/empty-dir.yaml b/tests/test-cases/empty-dir.yaml index 29c051d51..21845e44a 100644 --- a/tests/test-cases/empty-dir.yaml +++ b/tests/test-cases/empty-dir.yaml @@ -32,7 +32,9 @@ tests: - name: check atmos --help in empty-dir enabled: true - snapshot: true + # Snapshots are temporarily disabled until PR #957 is merged which cleans workdirs + # of files which are not part of the git repo + snapshot: false description: "Check that atmos command outputs help even with no configuration" workdir: "fixtures/scenarios/empty-dir" command: "atmos"