Files
reg/cmd/flags.go
2026-11-05 06:40:24 +03:00

48 lines
1.7 KiB
Go
Raw Permalink 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.
package cmd
import (
"flag"
"strings"
reg "reg/internal/reg"
)
// parseFlags парсит флаги команды.
//
// Встроенная обработка флагов -h/-help/--help отключена: при попытке их
// использовать возвращается сообщение "нет такой опции: <flag>". Справка
// доступна через команду `reg help <command>`.
//
// Возвращает (code, ok): при ok=true флаги успешно разобраны,
// code игнорируется; при ok=false команда должна немедленно
// вернуть code.
func parseFlags(fs *flag.FlagSet, args []string) (int, bool) {
if err := fs.Parse(args); err != nil {
if err == flag.ErrHelp {
reg.PrintError(MsgNoSuchOption.F(FindHelpFlag(args)))
return 1, false
}
reg.PrintError(err.Error())
return 1, false
}
return 0, true
}
// FindHelpFlag возвращает первый флаг из args, который flag-пакет
// распознаёт как флаг справки (-h, -help, --help и формы с '=').
// Если ничего не найдено — возвращает "-h".
func FindHelpFlag(args []string) string {
for _, a := range args {
switch {
case a == "-h", a == "-help", a == "--help":
return a
case strings.HasPrefix(a, "-h="), strings.HasPrefix(a, "-help="), strings.HasPrefix(a, "--help="):
if i := strings.IndexByte(a, '='); i >= 0 {
return a[:i]
}
return a
}
}
return "-h"
}