M6: shell completions with dynamic alias lookup

Add ValidArgsFunction to mount and unmount commands that reads config
aliases for tab completion. Install zsh, bash, and fish completion
scripts via flake postInstall. Update PLAN.md with post-1.0 roadmap.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 08:35:19 -07:00
parent 410a766bbe
commit e44dd382dd
5 changed files with 175 additions and 144 deletions

25
cmd/completion.go Normal file
View File

@@ -0,0 +1,25 @@
package cmd
import (
"sort"
"git.wntrmute.dev/kyle/arca/internal/config"
"github.com/spf13/cobra"
)
// completeDeviceOrAlias provides dynamic completion for device aliases
// and device paths from the config file.
func completeDeviceOrAlias(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
if len(args) > 0 {
return nil, cobra.ShellCompDirectiveNoFileComp
}
cfg := config.Load()
var completions []string
for alias := range cfg.Devices {
completions = append(completions, alias)
}
sort.Strings(completions)
return completions, cobra.ShellCompDirectiveNoFileComp
}