From d62491c4dc5c56d16162ed234f0774c65ebf145f Mon Sep 17 00:00:00 2001 From: Matt Calhoun Date: Tue, 21 Jan 2025 11:00:19 -0500 Subject: [PATCH] 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) }