func main() { runtime.GOMAXPROCS(runtime.NumCPU()) info_log = log.New(os.Stdout, "", log.LstdFlags) error_log = log.New(os.Stderr, "", log.LstdFlags) flagConf := flag.String("conf", "config.json", "") flagAddr := flag.String("addr", ":6080", "") flagRoot := flag.String("root", "", "") flagProd := flag.Bool("prod", false, "") flagStale := flag.Bool("use-existing-stale-index", false, "DEV: Do not talk to git via pull or clone (requires an existing index)") flag.Parse() // In prod mode, we will need jsx. if *flagProd { if err := checkForJsx(); err != nil { panic("You need to install jsx. (npm install -g react-tools)") } } if err := findRoot(flagRoot); err != nil { panic(err) } var cfg config.Config if err := cfg.LoadFromFile(*flagConf); err != nil { panic(err) } idx, err := makeSearchers(&cfg, *flagStale) if err != nil { info_log.Println("Some repos failed to index, see output above") } else { info_log.Println("All indexes built!") } formattedAddress := *flagAddr if 0 == strings.Index(*flagAddr, ":") { formattedAddress = "localhost" + *flagAddr } info_log.Printf("running server at http://%s...\n", formattedAddress) if err := runHttp(*flagAddr, *flagRoot, *flagProd, &cfg, idx); err != nil { panic(err) } }