Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package opentofu for openSUSE:Factory checked in at 2026-10-27 17:00:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/opentofu (Old) and /work/SRC/openSUSE:Factory/.opentofu.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opentofu" Tue Oct 27 17:00:56 2026 rev:57 rq:1392879 version:1.13.2 Changes: -------- --- /work/SRC/openSUSE:Factory/opentofu/opentofu.changes 2026-10-02 23:05:42.726239531 +0200 +++ /work/SRC/openSUSE:Factory/.opentofu.new.2252680/opentofu.changes 2026-10-27 17:02:06.325505455 +0100 @@ -1,0 +2,24 @@ +Fri Oct 23 15:57:32 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 1.13.2: + * SECURITY ADVISORIES: + - Previous versions of OpenTofu could potentially experience + excessive CPU usage if connecting to an attacker-controlled + HTTP2 server while installing dependencies in tofu init. + (#4681) + - [Govulncheck][GO-2026-6809][v1.13] Upgrade go version to + include filtering of the compromised intermediate + certificates (#4750) + * BUG FIXES: + - Lifecycle destroy will no longer crash when given an + expression with references (#4648) + - tofu workspace select and tofu workspace delete + autocompletion predicts from the existing workspaces. This + restores the behavior pre-v1.13 (#4706) + - Combined usage of -chdir and -version flags does not show an + error anymore but instead shows the version of the tofu + binary (#4707) + - Symbol libraries are now saved in plan files and no-longer + prevent applying of plan files (#4734) + +------------------------------------------------------------------- Old: ---- opentofu-1.13.1.obscpio New: ---- opentofu-1.13.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ opentofu.spec ++++++ --- /var/tmp/diff_new_pack.D5o2JD/_old 2026-10-27 17:02:11.183708905 +0100 +++ /var/tmp/diff_new_pack.D5o2JD/_new 2026-10-27 17:02:11.184708946 +0100 @@ -19,7 +19,7 @@ %define executable_name tofu Name: opentofu -Version: 1.13.1 +Version: 1.13.2 Release: 0 Summary: Declaratively manage your cloud infrastructure License: MPL-2.0 @@ -29,7 +29,7 @@ Source1: vendor.tar.gz Source99: opentofu-rpmlintrc BuildRequires: bash-completion -BuildRequires: go1.27 >= 1.27.1 +BuildRequires: go1.27 >= 1.27.3 BuildRequires: golang-packaging # See: https://github.com/hashicorp/opentofu/issues/22807 ExcludeArch: %{ix86} %{arm} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.D5o2JD/_old 2026-10-27 17:02:11.254711878 +0100 +++ /var/tmp/diff_new_pack.D5o2JD/_new 2026-10-27 17:02:11.259712087 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/opentofu/opentofu.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">refs/tags/v1.13.1</param> + <param name="revision">refs/tags/v1.13.2</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.D5o2JD/_old 2026-10-27 17:02:11.304713972 +0100 +++ /var/tmp/diff_new_pack.D5o2JD/_new 2026-10-27 17:02:11.311714265 +0100 @@ -3,6 +3,6 @@ <param name="url">https://github.com/opentofu/opentofu/</param> <param name="changesrevision">bdcbf091aab886499ed7718d7f558b428fffce39</param></service><service name="tar_scm"> <param name="url">https://github.com/opentofu/opentofu.git</param> - <param name="changesrevision">233700b795b6d2372f1c56ed57a4abaec9d36475</param></service></servicedata> + <param name="changesrevision">765062032c46cacab116b36d714db098b806dede</param></service></servicedata> (No newline at EOF) ++++++ opentofu-1.13.1.obscpio -> opentofu-1.13.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/CHANGELOG.md new/opentofu-1.13.2/CHANGELOG.md --- old/opentofu-1.13.1/CHANGELOG.md 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/CHANGELOG.md 2026-10-21 15:25:34.000000000 +0200 @@ -1,10 +1,26 @@ The v1.13.x release series is supported until **August 1 2027**. +## 1.13.3 (Unreleased) + +## 1.13.2 + +SECURITY ADVISORIES: + +- Previous versions of OpenTofu could potentially experience excessive CPU usage if connecting to an attacker-controlled HTTP2 server while installing dependencies in `tofu init`. ([#4681](https://github.com/opentofu/opentofu/pull/4681)) +- Filter out compromised intermediate certificates ([#4750](https://github.com/opentofu/opentofu/pull/4750)) + +BUG FIXES: + +- Lifecycle destroy will no longer crash when given an expression with references ([#4648](https://github.com/opentofu/opentofu/pull/4648)) +- `tofu workspace select` and `tofu workspace delete` autocompletion predicts from the existing workspaces. This restores the behavior pre-v1.13 ([#4706](https://github.com/opentofu/opentofu/pull/4706)) +- Combined usage of `-chdir` and `-version` flags does not show an error anymore but instead shows the version of the `tofu` binary ([#4707](https://github.com/opentofu/opentofu/pull/4707)) +- Symbol libraries are now saved in plan files and no-longer prevent applying of plan files ([#4734](https://github.com/opentofu/opentofu/pull/4734)) + ## 1.13.1 BUG FIXES: -- `tofu show -json <planfile>` now works again when ephemeral resources are present in the configuration. ([4623](https://github.com/opentofu/opentofu/pull/4623)). +- `tofu show -json <planfile>` now works again when ephemeral resources are present in the configuration. ([#4623](https://github.com/opentofu/opentofu/pull/4623)) - Ephemeral output values are now always re-evaluated during the apply phase, instead of sometimes using stale values from the planning phase. ([#4582](https://github.com/opentofu/opentofu/issues/4582)) ## 1.13.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/Makefile new/opentofu-1.13.2/Makefile --- old/opentofu-1.13.1/Makefile 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/Makefile 2026-10-21 15:25:34.000000000 +0200 @@ -60,7 +60,7 @@ # Golangci-lint is installed first and then run twice to cover all platforms. .PHONY: golangci-lint golangci-lint: - GOBIN=$(PWD)/tools go install github.com/golangci/golangci-lint/v2/cmd/[email protected] + GOBIN=$(PWD)/tools go install github.com/golangci/golangci-lint/v2/cmd/[email protected] GOOS=windows tools/golangci-lint${EXT} run --timeout 60m ./... GOOS=linux tools/golangci-lint${EXT} run --timeout 60m ./... diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/cmd/tofu/command_main.go new/opentofu-1.13.2/cmd/tofu/command_main.go --- old/opentofu-1.13.1/cmd/tofu/command_main.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/cmd/tofu/command_main.go 2026-10-21 15:25:34.000000000 +0200 @@ -62,7 +62,8 @@ subcommand := detectSubcommand(command.RootCommander(&help, &version, &chdirArg)) if version { // Inject the version subcommand, this is a - // odd legacy hack to match the old cli. + // odd legacy hack to match the old cli. This hack bleeds also into arguments/version.go where the root flags + // are also defined to not add more heavy processing here to reorder the flags. subcommand = "version" args = append([]string{subcommand}, args...) } @@ -121,7 +122,9 @@ } root := command.RootCommander(&help, &version, &chdirArg) - setupCompletion(&root) + if checkAndRunCompletion(&root, meta) { + return 0 + } rootCmd := commandToCli("", root, meta) @@ -272,7 +275,7 @@ return subcommand } -// setupCompletion uses the same auto-completion that mitchellh/cli does (posener/complete) +// checkAndRunCompletion uses the same auto-completion that mitchellh/cli does (posener/complete) // This keeps parity with the "status-quo" for tofu, though in practice it's a very // outdated library that is missing a lot of more modern features and shell support. // @@ -283,7 +286,7 @@ // Additionally, moving away from the `command -C` approach used by posener/complete is complicated // by the bash-complete project shipping a fallback for "tofu" that uses `command -C`. Moving away from // that and not breaking userspace is going to be quite tricky in the long term. -func setupCompletion(root *command.Command) { +func checkAndRunCompletion(root *command.Command, meta func() (command.Meta, int)) bool { compLine := os.Getenv("COMP_LINE") compPoint := os.Getenv("COMP_POINT") completingSingleDash := true @@ -321,6 +324,15 @@ for _, sub := range cmd.Commands { comp.Sub[sub.Name] = builder(sub) } + if cmd.AutocompleteArgs != nil { + comp.Args = complete.PredictFunc(func(args complete.Args) []string { + m, ec := meta() + if ec != 0 { + return nil + } + return cmd.AutocompleteArgs(m)(len(args.Completed)) + }) + } return comp } @@ -353,6 +365,7 @@ } if compLine != "" { completer.Complete() - os.Exit(0) + return true } + return false } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/go.mod new/opentofu-1.13.2/go.mod --- old/opentofu-1.13.1/go.mod 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/go.mod 2026-10-21 15:25:34.000000000 +0200 @@ -1,6 +1,6 @@ module github.com/opentofu/opentofu -go 1.27.1 +go 1.27.3 // At the time of adding this configuration, the new Go feature introduced here https://github.com/golang/go/issues/67061, // was having a good amount of issues linked to, affecting AWS Firewall, GCP various services and a lot more. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/arguments/version.go new/opentofu-1.13.2/internal/command/arguments/version.go --- old/opentofu-1.13.1/internal/command/arguments/version.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/arguments/version.go 2026-10-21 15:25:34.000000000 +0200 @@ -22,12 +22,14 @@ } // Enable but ignore the global version cli. In main.go, if any of the - // arguments are -v, -version, or --version, this command will be called + // arguments are -v, -version, --version, or -chdir, this command will be called // with the rest of the arguments, so we need to be able to cope with // those. var nop bool + var noopChdir string cli.BoolVar(&nop, "v", true, "version").SetHidden(true) cli.BoolVar(&nop, "version", true, "version").SetHidden(true) + cli.StringVar(&noopChdir, "chdir", "", "chdir").SetHidden(true) return &ret } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/autocomplete.go new/opentofu-1.13.2/internal/command/autocomplete.go --- old/opentofu-1.13.1/internal/command/autocomplete.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/autocomplete.go 2026-10-21 15:25:34.000000000 +0200 @@ -7,8 +7,6 @@ import ( "context" - - "github.com/posener/complete" ) // This file contains some re-usable predictors for auto-complete. The @@ -16,61 +14,40 @@ // own source file, as AutocompleteArgs and AutocompleteFlags methods on each // Command implementation. -// For completing the value of boolean flags like -foo false -var completePredictBoolean = complete.PredictSet("true", "false") +func (m *Meta) completePredictWorkspaceName(ctx context.Context) []string { + // There are lot of things that can fail in here, so if we encounter + // any error then we'll just return nothing and not support autocomplete + // until whatever error is fixed. (The user can't actually see the error + // here, but other commands should produce a user-visible error before + // too long.) + + // We assume here that we want to autocomplete for the current working + // directory, since we don't have enough context to know where to + // find any config path argument, and it might be _after_ the argument + // we're trying to complete here anyway. + configPath, err := modulePath(nil) + if err != nil { + return nil + } -// We don't currently have a real predictor for module sources, but -// we'll probably add one later. -var completePredictModuleSource = complete.PredictAnything - -type completePredictSequence []complete.Predictor - -func (s completePredictSequence) Predict(a complete.Args) []string { - // Nested subcommands do not require any placeholder entry for their subcommand name. - idx := len(a.Completed) - if idx >= len(s) { + backendConfig, diags := m.loadBackendConfig(ctx, configPath) + if diags.HasErrors() { return nil } - return s[idx].Predict(a) -} + // Load the encryption configuration + enc, encDiags := m.Encryption(ctx) + if encDiags.HasErrors() { + return nil + } + + b, diags := m.Backend(ctx, &BackendOpts{ + Config: backendConfig, + }, enc.State()) + if diags.HasErrors() { + return nil + } -func (m *Meta) completePredictWorkspaceName(ctx context.Context) complete.Predictor { - return complete.PredictFunc(func(a complete.Args) []string { - // There are lot of things that can fail in here, so if we encounter - // any error then we'll just return nothing and not support autocomplete - // until whatever error is fixed. (The user can't actually see the error - // here, but other commands should produce a user-visible error before - // too long.) - - // We assume here that we want to autocomplete for the current working - // directory, since we don't have enough context to know where to - // find any config path argument, and it might be _after_ the argument - // we're trying to complete here anyway. - configPath, err := modulePath(nil) - if err != nil { - return nil - } - - backendConfig, diags := m.loadBackendConfig(ctx, configPath) - if diags.HasErrors() { - return nil - } - - // Load the encryption configuration - enc, encDiags := m.Encryption(ctx) - if encDiags.HasErrors() { - return nil - } - - b, diags := m.Backend(ctx, &BackendOpts{ - Config: backendConfig, - }, enc.State()) - if diags.HasErrors() { - return nil - } - - names, _ := b.Workspaces(ctx) - return names - }) + names, _ := b.Workspaces(ctx) + return names } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/autocomplete_test.go new/opentofu-1.13.2/internal/command/autocomplete_test.go --- old/opentofu-1.13.1/internal/command/autocomplete_test.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/autocomplete_test.go 2026-10-21 15:25:34.000000000 +0200 @@ -11,7 +11,6 @@ "testing" "github.com/opentofu/opentofu/internal/command/workdir" - "github.com/posener/complete" ) func TestMetaCompletePredictWorkspaceName(t *testing.T) { @@ -32,11 +31,8 @@ View: view, } - predictor := meta.completePredictWorkspaceName(t.Context()) + got := meta.completePredictWorkspaceName(t.Context()) - got := predictor.Predict(complete.Args{ - Last: "", - }) want := []string{"default"} if !reflect.DeepEqual(got, want) { t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, want) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/command.go new/opentofu-1.13.2/internal/command/command.go --- old/opentofu-1.13.1/internal/command/command.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/command.go 2026-10-21 15:25:34.000000000 +0200 @@ -122,7 +122,8 @@ // CommandLine defines what flags and arguments are available to this command. CommandLine arguments.CommandLine // Run is the action that will be executed if this command is selected. - Run func(Meta) int + Run func(Meta) int + AutocompleteArgs func(Meta) func(nargs int) []string // A legacy option that will be removed at some point // This was introduced during the migration to proper diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/e2etest/symbols_test.go new/opentofu-1.13.2/internal/command/e2etest/symbols_test.go --- old/opentofu-1.13.1/internal/command/e2etest/symbols_test.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/e2etest/symbols_test.go 2026-10-21 15:25:34.000000000 +0200 @@ -24,4 +24,6 @@ run("init").Success() run("plan", `-var=my_items=[""]`, `-var=my_items_unchecked=[""]`).Failure().StderrContains("One or more elements is empty").StderrContains("One or more of the elements in") run("plan", `-var=my_items=["foo"]`, `-var=my_items_unchecked=["bar"]`).Success() + run("plan", `-out`, `planfile`, `-var=my_items=["foo"]`, `-var=my_items_unchecked=["bar"]`).Success() + run("apply", `-auto-approve`, `planfile`).Success() } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/init.go new/opentofu-1.13.2/internal/command/init.go --- old/opentofu-1.13.1/internal/command/init.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/init.go 2026-10-21 15:25:34.000000000 +0200 @@ -16,7 +16,6 @@ "github.com/hashicorp/hcl/v2" "github.com/opentofu/svchost" - "github.com/posener/complete" "github.com/zclconf/go-cty/cty" "github.com/opentofu/opentofu/internal/addrs" @@ -1194,10 +1193,6 @@ return ret, diags } -func (c *InitCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictDirs("") -} - func (c *InitCommand) platformSupportWarnings() tfdiags.Diagnostics { var diags tfdiags.Diagnostics if !tfversion.IsOfficialBuild() { @@ -1219,25 +1214,6 @@ return diags } -func (c *InitCommand) AutocompleteFlags() complete.Flags { - return complete.Flags{ - "-backend": completePredictBoolean, - "-cloud": completePredictBoolean, - "-backend-config": complete.PredictFiles("*.tfvars"), // can also be key=value, but we can't "predict" that - "-force-copy": complete.PredictNothing, - "-from-module": completePredictModuleSource, - "-get": completePredictBoolean, - "-input": completePredictBoolean, - "-lock": completePredictBoolean, - "-lock-timeout": complete.PredictAnything, - "-no-color": complete.PredictNothing, - "-plugin-dir": complete.PredictDirs(""), - "-reconfigure": complete.PredictNothing, - "-migrate-state": complete.PredictNothing, - "-upgrade": completePredictBoolean, - } -} - func (c *InitCommand) Help() string { helpText := ` Usage: tofu [global options] init [options] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/workspace_delete.go new/opentofu-1.13.2/internal/command/workspace_delete.go --- old/opentofu-1.13.1/internal/command/workspace_delete.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/workspace_delete.go 2026-10-21 15:25:34.000000000 +0200 @@ -11,8 +11,6 @@ "slices" "strings" - "github.com/posener/complete" - "github.com/opentofu/opentofu/internal/command/arguments" "github.com/opentofu/opentofu/internal/command/clistate" "github.com/opentofu/opentofu/internal/command/views" @@ -33,6 +31,14 @@ cmd.Run = func(meta Meta) int { return WorkspaceDeleteCommand{meta, legacyName}.Execute(args, views.NewWorkspace(args.View, meta.View)) } + cmd.AutocompleteArgs = func(meta Meta) func(int) []string { + return func(nargs int) []string { + if nargs > 0 { + return []string{} + } + return WorkspaceDeleteCommand{meta, legacyName}.AutocompleteArgs() + } + } return cmd } @@ -207,17 +213,8 @@ return 0 } -func (c *WorkspaceDeleteCommand) AutocompleteArgs() complete.Predictor { - return completePredictSequence{ - c.completePredictWorkspaceName(c.CommandContext()), - complete.PredictDirs(""), - } -} - -func (c *WorkspaceDeleteCommand) AutocompleteFlags() complete.Flags { - return complete.Flags{ - "-force": complete.PredictNothing, - } +func (c WorkspaceDeleteCommand) AutocompleteArgs() []string { + return c.completePredictWorkspaceName(c.CommandContext()) } func (c *WorkspaceDeleteCommand) Help() string { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/workspace_list.go new/opentofu-1.13.2/internal/command/workspace_list.go --- old/opentofu-1.13.1/internal/command/workspace_list.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/workspace_list.go 2026-10-21 15:25:34.000000000 +0200 @@ -11,8 +11,6 @@ "github.com/opentofu/opentofu/internal/command/arguments" "github.com/opentofu/opentofu/internal/command/views" - "github.com/posener/complete" - "github.com/opentofu/opentofu/internal/tfdiags" ) @@ -98,14 +96,6 @@ return 0 } -func (c *WorkspaceListCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictDirs("") -} - -func (c *WorkspaceListCommand) AutocompleteFlags() complete.Flags { - return nil -} - func (c *WorkspaceListCommand) Help() string { helpText := ` Usage: tofu [global options] workspace list [options] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/workspace_new.go new/opentofu-1.13.2/internal/command/workspace_new.go --- old/opentofu-1.13.1/internal/command/workspace_new.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/workspace_new.go 2026-10-21 15:25:34.000000000 +0200 @@ -12,14 +12,12 @@ "slices" "strings" - "github.com/opentofu/opentofu/internal/tfdiags" - "github.com/posener/complete" - "github.com/opentofu/opentofu/internal/command/arguments" "github.com/opentofu/opentofu/internal/command/clistate" "github.com/opentofu/opentofu/internal/command/views" "github.com/opentofu/opentofu/internal/encryption" "github.com/opentofu/opentofu/internal/states/statefile" + "github.com/opentofu/opentofu/internal/tfdiags" ) func WorkspaceNewCommander(legacyName bool) Command { @@ -210,19 +208,6 @@ return 0 } -func (c *WorkspaceNewCommand) AutocompleteArgs() complete.Predictor { - return completePredictSequence{ - complete.PredictAnything, - complete.PredictDirs(""), - } -} - -func (c *WorkspaceNewCommand) AutocompleteFlags() complete.Flags { - return complete.Flags{ - "-state": complete.PredictFiles("*.tfstate"), - } -} - func (c *WorkspaceNewCommand) Help() string { helpText := ` Usage: tofu [global options] workspace new [OPTIONS] NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/workspace_select.go new/opentofu-1.13.2/internal/command/workspace_select.go --- old/opentofu-1.13.1/internal/command/workspace_select.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/workspace_select.go 2026-10-21 15:25:34.000000000 +0200 @@ -12,8 +12,6 @@ "github.com/opentofu/opentofu/internal/command/arguments" "github.com/opentofu/opentofu/internal/command/views" - "github.com/posener/complete" - "github.com/opentofu/opentofu/internal/tfdiags" ) @@ -30,6 +28,14 @@ cmd.Run = func(meta Meta) int { return WorkspaceSelectCommand{meta, legacyName}.Execute(args, views.NewWorkspace(args.View, meta.View)) } + cmd.AutocompleteArgs = func(meta Meta) func(int) []string { + return func(nargs int) []string { + if nargs > 0 { + return []string{} + } + return WorkspaceSelectCommand{meta, legacyName}.AutocompleteArgs() + } + } return cmd } @@ -147,15 +153,8 @@ return 0 } -func (c *WorkspaceSelectCommand) AutocompleteArgs() complete.Predictor { - return completePredictSequence{ - c.completePredictWorkspaceName(c.CommandContext()), - complete.PredictDirs(""), - } -} - -func (c *WorkspaceSelectCommand) AutocompleteFlags() complete.Flags { - return nil +func (c WorkspaceSelectCommand) AutocompleteArgs() []string { + return c.completePredictWorkspaceName(c.CommandContext()) } func (c *WorkspaceSelectCommand) Help() string { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/command/workspace_show.go new/opentofu-1.13.2/internal/command/workspace_show.go --- old/opentofu-1.13.1/internal/command/workspace_show.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/command/workspace_show.go 2026-10-21 15:25:34.000000000 +0200 @@ -12,7 +12,6 @@ "github.com/opentofu/opentofu/internal/command/arguments" "github.com/opentofu/opentofu/internal/command/views" "github.com/opentofu/opentofu/internal/tfdiags" - "github.com/posener/complete" ) func WorkspaceShowCommander() Command { @@ -56,14 +55,6 @@ return 0 } -func (c *WorkspaceShowCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing -} - -func (c *WorkspaceShowCommand) AutocompleteFlags() complete.Flags { - return nil -} - func (c *WorkspaceShowCommand) Help() string { helpText := ` Usage: tofu [global options] workspace show diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/configs/configload/loader_snapshot.go new/opentofu-1.13.2/internal/configs/configload/loader_snapshot.go --- old/opentofu-1.13.1/internal/configs/configload/loader_snapshot.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/configs/configload/loader_snapshot.go 2026-10-21 15:25:34.000000000 +0200 @@ -165,7 +165,7 @@ func (l *loader) addModuleToSnapshot(snap *Snapshot, key string, dir string, sourceAddr string, v *version.Version) hcl.Diagnostics { var diags hcl.Diagnostics - primaryFiles, overrideFiles, moreDiags := l.parser.ConfigDirFiles(dir) + primaryFiles, overrideFiles, symbolFiles, moreDiags := l.parser.ConfigDirFiles(dir) if moreDiags.HasErrors() { // Any diagnostics we get here should be already present // in diags, so it's weird if we get here but we'll allow it @@ -185,9 +185,10 @@ Version: v, } - files := make([]string, 0, len(primaryFiles)+len(overrideFiles)) + files := make([]string, 0, len(primaryFiles)+len(overrideFiles)+len(symbolFiles)) files = append(files, primaryFiles...) files = append(files, overrideFiles...) + files = append(files, symbolFiles...) sources := l.Sources() // should be populated with all the files we need by now for _, filePath := range files { filename := filepath.Base(filePath) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/configs/parser_config_dir.go new/opentofu-1.13.2/internal/configs/parser_config_dir.go --- old/opentofu-1.13.1/internal/configs/parser_config_dir.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/configs/parser_config_dir.go 2026-10-21 15:25:34.000000000 +0200 @@ -101,9 +101,9 @@ // // If the given directory does not exist or cannot be read, error diagnostics // are returned. If errors are returned, the resulting lists may be incomplete. -func (p Parser) ConfigDirFiles(dir string) (primary, override []string, diags hcl.Diagnostics) { - primary, override, _, _, diags = p.dirFiles(dir, "") - return primary, override, diags +func (p Parser) ConfigDirFiles(dir string) (primary, override []string, symbols []string, diags hcl.Diagnostics) { + primary, override, _, symbols, diags = p.dirFiles(dir, "") + return primary, override, symbols, diags } // ConfigDirFilesWithTests matches ConfigDirFiles except it also returns the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/tofu/node_resource_abstract.go new/opentofu-1.13.2/internal/tofu/node_resource_abstract.go --- old/opentofu-1.13.1/internal/tofu/node_resource_abstract.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/tofu/node_resource_abstract.go 2026-10-21 15:25:34.000000000 +0200 @@ -783,6 +783,7 @@ } destroyVal, valDiags := destroyExpr.Value(nil) + diags = diags.Extend(valDiags) if diags.HasErrors() { return false, valDiags } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/internal/tofu/skip_destroy_test.go new/opentofu-1.13.2/internal/tofu/skip_destroy_test.go --- old/opentofu-1.13.1/internal/tofu/skip_destroy_test.go 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/internal/tofu/skip_destroy_test.go 2026-10-21 15:25:34.000000000 +0200 @@ -233,6 +233,21 @@ {addr: "aws_instance.foo", action: plans.Delete}, }, }, + { + name: "InvalidConfigFlag", + config: ` + variable "input" { + default = false + } + resource "aws_instance" "foo" { + lifecycle { + destroy = var.input + } + } + `, + planMode: plans.DestroyMode, + expectPlanError: true, + }, } for _, tc := range tests { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentofu-1.13.1/version/VERSION new/opentofu-1.13.2/version/VERSION --- old/opentofu-1.13.1/version/VERSION 2026-10-01 18:03:40.000000000 +0200 +++ new/opentofu-1.13.2/version/VERSION 2026-10-21 15:25:34.000000000 +0200 @@ -1 +1 @@ -1.13.1 +1.13.2 ++++++ opentofu.obsinfo ++++++ --- /var/tmp/diff_new_pack.D5o2JD/_old 2026-10-27 17:02:15.478888776 +0100 +++ /var/tmp/diff_new_pack.D5o2JD/_new 2026-10-27 17:02:15.493889404 +0100 @@ -1,5 +1,5 @@ name: opentofu -version: 1.13.1 -mtime: 1790870620 -commit: 233700b795b6d2372f1c56ed57a4abaec9d36475 +version: 1.13.2 +mtime: 1792589134 +commit: 765062032c46cacab116b36d714db098b806dede ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/opentofu/vendor.tar.gz /work/SRC/openSUSE:Factory/.opentofu.new.2252680/vendor.tar.gz differ: char 133, line 3
