futriis/internal/cli/commands.go
2026-02-27 22:04:04 +03:00

49 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /futriis/internal/cli/commands.go
// Пакет cli определяет структуру команд и систему их регистрации в СУБД.
// Command представляет собой описание команды с именем, описанием, синтаксисом использования и функцией-обработчиком.
// CommandRegistry служит центральным реестром для всех доступных команд, позволяя регистрировать новые, получать команды по имени и формировать список для справки.
// Обеспечивает расширяемость интерфейса командной строки.
package cli
// Command представляет команду СУБД
type Command struct {
Name string
Description string
Usage string
Handler func(args []string) (string, error)
}
// CommandRegistry реестр всех доступных команд
type CommandRegistry struct {
commands map[string]*Command
}
// NewCommandRegistry создаёт новый реестр команд
func NewCommandRegistry() *CommandRegistry {
return &CommandRegistry{
commands: make(map[string]*Command),
}
}
// Register регистрирует новую команду
func (cr *CommandRegistry) Register(cmd *Command) {
cr.commands[cmd.Name] = cmd
}
// Get возвращает команду по имени
func (cr *CommandRegistry) Get(name string) (*Command, bool) {
cmd, ok := cr.commands[name]
return cmd, ok
}
// List возвращает список всех команд
func (cr *CommandRegistry) List() []*Command {
cmds := make([]*Command, 0, len(cr.commands))
for _, cmd := range cr.commands {
cmds = append(cmds, cmd)
}
return cmds
}