32 lines
1.2 KiB
Go
32 lines
1.2 KiB
Go
package ckprompt
|
|
|
|
import commandkit "go.maximumdirect.net/commandkit"
|
|
|
|
type requestBinding[I any] struct {
|
|
flag commandkit.Flag[I]
|
|
definition requestFlagDefinition
|
|
}
|
|
|
|
// appendRequestBindings installs the selected handles and, when requested,
|
|
// records their convenience aliases for the exact owning command.
|
|
func appendRequestBindings[I any](flags []commandkit.Flag[I], path string, aliases *[]commandkit.Declaration, bindings ...requestBinding[I]) []commandkit.Flag[I] {
|
|
for _, binding := range bindings {
|
|
flags = append(flags, binding.flag)
|
|
if aliases != nil {
|
|
for _, name := range binding.definition.aliases {
|
|
*aliases = append(*aliases, commandkit.FlagAliasFor(path, "--"+name, "--"+binding.definition.meta.Name))
|
|
}
|
|
}
|
|
}
|
|
return flags
|
|
}
|
|
|
|
// Declarations returns the canonical PromptKit command family and scoped
|
|
// convenience aliases for the operations and flags enabled by suite. Command
|
|
// remains available for installations that want only canonical spellings.
|
|
func Declarations[I, S any](suite Suite[I, S]) []commandkit.Declaration {
|
|
var aliases []commandkit.Declaration
|
|
command := buildCommand(suite, &aliases)
|
|
return append([]commandkit.Declaration{command}, aliases...)
|
|
}
|