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