package main import ( "bufio" "flag" "fmt" "os" "rubric/catalog" "rubric/modules/gomodules" "rubric/modules/linuxmodules" "rubric/utils" ) func main() { book := flag.String("book", "", "открыть справочник напрямую (go, linux)") topic := flag.String("topic", "", "открыть раздел (используется вместе с -book)") list := flag.Bool("list", false, "список всех справочников и разделов") help := flag.Bool("help", false, "справка по использованию") flag.Parse() scanner := bufio.NewScanner(os.Stdin) if *help { catalog.ShowHelp() return } if *list { catalog.ListAll() return } // -book X -topic Y if *book != "" && *topic != "" { switch *book { case "go", "g", "golang": m, ok := gomodules.Find(*topic) if !ok { fmt.Printf("\n %s%sРаздел '%s' не найден в справочнике Go.%s\n", utils.ColorBold, utils.ColorRed, *topic, utils.ColorReset) gomodules.ListModules() os.Exit(1) } m.Run() case "linux", "l", "lnx": m, ok := linuxmodules.Find(*topic) if !ok { fmt.Printf("\n %s%sРаздел '%s' не найден в справочнике Linux.%s\n", utils.ColorBold, utils.ColorRed, *topic, utils.ColorReset) linuxmodules.ListModules() os.Exit(1) } m.Run() default: fmt.Printf("\n %s%sСправочник '%s' не найден.%s\n", utils.ColorBold, utils.ColorRed, *book, utils.ColorReset) catalog.ListAll() os.Exit(1) } return } // -book X if *book != "" { b, ok := catalog.Find(*book) if !ok { fmt.Printf("\n %s%sСправочник '%s' не найден.%s\n", utils.ColorBold, utils.ColorRed, *book, utils.ColorReset) catalog.ListAll() os.Exit(1) } b.Run(scanner) return } // Интерактивный режим catalog.RunInteractive(scanner) }