package main
import (
"github.com/spf13/cobra"
)
func init() {
// File extension hints for positional args
convertCmd.ValidArgsFunction = completeMarkdownFiles
embedCmd.ValidArgsFunction = completeMarkdownFiles
fmtCmd.ValidArgsFunction = completeXMLFiles
extractCmd.ValidArgsFunction = completeXMLFiles
pullCmd.ValidArgsFunction = cobra.NoFileCompletions
pushCmd.ValidArgsFunction = completePushArgs
// Flag file completions
_ = convertCmd.RegisterFlagCompletionFunc("output", completeXMLFilesFlag)
_ = embedCmd.RegisterFlagCompletionFunc("output", completeXMLFilesFlag)
_ = embedCmd.RegisterFlagCompletionFunc("template", completeXMLFilesFlag)
_ = extractCmd.RegisterFlagCompletionFunc("output", completeMarkdownFilesFlag)
_ = fmtCmd.RegisterFlagCompletionFunc("output", completeXMLFilesFlag)
_ = pullCmd.RegisterFlagCompletionFunc("output", completeMarkdownFilesFlag)
// Marker flag completions
for _, cmd := range []*cobra.Command{embedCmd, extractCmd, pushCmd} {
_ = cmd.RegisterFlagCompletionFunc("marker-start", cobra.NoFileCompletions)
_ = cmd.RegisterFlagCompletionFunc("marker-end", cobra.NoFileCompletions)
}
}
func completeMarkdownFiles(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return []string{"md"}, cobra.ShellCompDirectiveFilterFileExt
}
func completeXMLFiles(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return []string{"xml"}, cobra.ShellCompDirectiveFilterFileExt
}
func completePushArgs(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
if len(args) == 0 {
// First arg is URL — no file completion
return nil, cobra.ShellCompDirectiveNoFileComp
}
// Second arg is input file
return []string{"md"}, cobra.ShellCompDirectiveFilterFileExt
}
func completeMarkdownFilesFlag(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return []string{"md"}, cobra.ShellCompDirectiveFilterFileExt
}
func completeXMLFilesFlag(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return []string{"xml"}, cobra.ShellCompDirectiveFilterFileExt
}