diff --git a/CHANGELOG.md b/CHANGELOG.md index 50d147a8289..849a869b413 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # 📦 Changelog +## 1.16.3 (Unreleased) + +### BUG FIXES: + +* command: restore file and directory completion for commands that accept paths + ## 1.16.2 (October 22, 2026) ### BUG FIXES: diff --git a/command/build.go b/command/build.go index 1e9af7b701b..b943c20a0a3 100644 --- a/command/build.go +++ b/command/build.go @@ -487,7 +487,7 @@ func (*BuildCommand) Synopsis() string { } func (*BuildCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*BuildCommand) AutocompleteFlags() complete.Flags { diff --git a/command/command_test.go b/command/command_test.go index 3027c2d1598..810c3eeb22a 100644 --- a/command/command_test.go +++ b/command/command_test.go @@ -11,10 +11,37 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer/packer" + "github.com/posener/complete" + "github.com/stretchr/testify/require" ) const fixturesDir = "./test-fixtures" +func TestAutocompleteArgs(t *testing.T) { + t.Chdir(t.TempDir()) + require.NoError(t, os.WriteFile("template.pkr.hcl", nil, 0600)) + require.NoError(t, os.WriteFile("template.json", nil, 0600)) + require.NoError(t, os.Mkdir("templates", 0700)) + + for name, predictor := range map[string]complete.Predictor{ + "build": (&BuildCommand{}).AutocompleteArgs(), + "console": (&ConsoleCommand{}).AutocompleteArgs(), + "fix": (&FixCommand{}).AutocompleteArgs(), + "fmt": (&FormatCommand{}).AutocompleteArgs(), + "hcl2_upgrade": (&HCL2UpgradeCommand{}).AutocompleteArgs(), + "init": (&InitCommand{}).AutocompleteArgs(), + "inspect": (&InspectCommand{}).AutocompleteArgs(), + "validate": (&ValidateCommand{}).AutocompleteArgs(), + "verify-attestation": (&VerifyAttestationCommand{}).AutocompleteArgs(), + } { + t.Run(name, func(t *testing.T) { + require.NotNil(t, predictor) + got := predictor.Predict(complete.Args{Last: "templ"}) + require.ElementsMatch(t, []string{"template.pkr.hcl", "template.json", "templates/"}, got) + }) + } +} + func fatalCommand(t *testing.T, m Meta) { ui := m.Ui.(*packersdk.BasicUi) out := ui.Writer.(*bytes.Buffer) diff --git a/command/console.go b/command/console.go index d3eb4f2a19f..923ceb7ca65 100644 --- a/command/console.go +++ b/command/console.go @@ -100,7 +100,7 @@ func (*ConsoleCommand) Synopsis() string { } func (*ConsoleCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*ConsoleCommand) AutocompleteFlags() complete.Flags { diff --git a/command/fix.go b/command/fix.go index d40a7d687e9..518e90880b5 100644 --- a/command/fix.go +++ b/command/fix.go @@ -169,7 +169,7 @@ func (c *FixCommand) Synopsis() string { } func (c *FixCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (c *FixCommand) AutocompleteFlags() complete.Flags { diff --git a/command/fmt.go b/command/fmt.go index e2b3e5aba98..7c3652b83ef 100644 --- a/command/fmt.go +++ b/command/fmt.go @@ -106,7 +106,7 @@ func (*FormatCommand) Synopsis() string { } func (*FormatCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*FormatCommand) AutocompleteFlags() complete.Flags { diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index a2f50d26591..b020a186cba 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -803,7 +803,7 @@ func (*HCL2UpgradeCommand) Synopsis() string { } func (*HCL2UpgradeCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*HCL2UpgradeCommand) AutocompleteFlags() complete.Flags { diff --git a/command/init.go b/command/init.go index 513192ef42a..2896a23a73c 100644 --- a/command/init.go +++ b/command/init.go @@ -218,7 +218,7 @@ func (*InitCommand) Synopsis() string { } func (*InitCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*InitCommand) AutocompleteFlags() complete.Flags { diff --git a/command/inspect.go b/command/inspect.go index 0a5dd7bc770..b0e25a152d1 100644 --- a/command/inspect.go +++ b/command/inspect.go @@ -80,7 +80,7 @@ func (c *InspectCommand) Synopsis() string { } func (c *InspectCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (c *InspectCommand) AutocompleteFlags() complete.Flags { diff --git a/command/validate.go b/command/validate.go index f4d3ae3f072..0eb4a718c15 100644 --- a/command/validate.go +++ b/command/validate.go @@ -141,7 +141,7 @@ func (*ValidateCommand) Synopsis() string { } func (*ValidateCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*ValidateCommand) AutocompleteFlags() complete.Flags { diff --git a/command/verify_attestation.go b/command/verify_attestation.go index 755fc465f33..cbd92dd650e 100644 --- a/command/verify_attestation.go +++ b/command/verify_attestation.go @@ -133,7 +133,7 @@ func (*VerifyAttestationCommand) Synopsis() string { } func (*VerifyAttestationCommand) AutocompleteArgs() complete.Predictor { - return complete.PredictNothing + return complete.PredictFiles("*") } func (*VerifyAttestationCommand) AutocompleteFlags() complete.Flags {