package cmd import ( "os" "github.com/alecthomas/kong" ) // Структура CLI type CLI struct { parser *kong.Kong cmd CMD } // Создания экземпляра CLI func NewCLI() *CLI { c := &CLI{} c.parser = kong.Must( &c.cmd, kong.Name("mftecmd"), kong.Description("Utility for processing $MFT, $J, $LogFile, $Boot, $SDS, $I30"), ) return c } // Метод запуска CLI func (c *CLI) Run() *CMD { // Парсинг флагов и аргументов ctx, err := c.parser.Parse(os.Args[1:]) if err != nil { c.parser.FatalIfErrorf(err) } // Валидируем команды err = ValidateLeaf(c) if err != nil { c.parser.FatalIfErrorf(err) } // Валидируем путь вывода err = ValidateOutput(c) if err != nil { c.parser.FatalIfErrorf(err) } _ = ctx return &c.cmd }