コード例 #1
0
ファイル: main.go プロジェクト: jerryz1982/Hound
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)
	}
}