diff --git a/hello b/hello index e157515..493588d 100755 Binary files a/hello and b/hello differ diff --git a/main.go b/main.go index df1f938..78d20b2 100644 --- a/main.go +++ b/main.go @@ -344,9 +344,32 @@ func main() { execFlag := flag.String("exec", "", "Execution parameter") flag.Parse() // Парсим аргументы - // Инициализация главного меню с использованием флага -c - // По умолчанию "menu.yml", что с учетом resolvePath превратится в "menu/menu.yml" - menu := NewMenu(*configFile) + var yamlPath string + + // Проверяем, был ли явно задан флаг -c + isConfigSet := false + flag.Visit(func(f *flag.Flag) { + if f.Name == "c" { + isConfigSet = true + } + }) + + if isConfigSet { + // Если флаг задан, используем путь относительно текущей директории + // делаем его абсолютным, чтобы resolvePath не добавлял "menu" + if filepath.IsAbs(*configFile) { + yamlPath = *configFile + } else { + currDir, _ := os.Getwd() + yamlPath = filepath.Join(currDir, *configFile) + } + } else { + // Если флаг не задан, используем стандартное поведение (добавится "menu") + yamlPath = *configFile + } + + // Инициализация главного меню + menu := NewMenu(yamlPath) if *execFlag != "" { // Проверяем, задан ли флаг --exec items := strings.Split(*execFlag, "-") // Разделяем строку по "-"