package main

import (
	"flag"
	_ "net/http/pprof"
	"os"

	"github.com/juju/errors"
	"github.com/ngaut/log"
	"github.com/pingcap/wormhole/config"
	"github.com/pingcap/wormhole/framework"
	"github.com/pingcap/wormhole/pkg/util"
	"github.com/pingcap/wormhole/pkg/whpb"
)

func main() {
	cfg := config.NewConfig(config.CmdStargate)
	err := cfg.Parse(os.Args[1:])

	switch errors.Cause(err) {
	case nil:
	case flag.ErrHelp:
		os.Exit(0)
	default:
		log.Fatalf("[stargate] Parse cmd line fail: %s", errors.ErrorStack(err))
		return
	}

	if cfg.Version {
		util.PrintInfo()
		os.Exit(0)
	}

	log.SetLevelByString(cfg.LogLevel)
	if len(cfg.LogFile) > 0 {
		log.SetOutputByName(cfg.LogFile)
		if cfg.LogRotate == "hour" {
			log.SetRotateByHour()
		} else {
			log.SetRotateByDay()
		}
	} else {
		log.SetHighlighting(true)
	}

	log.Infof("[stargate] git_hash %s, build_time %s", util.GitHash, util.BuildTS)
	s, err := framework.New(cfg, whpb.WorkerType_Stargate)
	if err != nil {
		log.Fatalf("[stargate] create server err:%s", errors.ErrorStack(err))
	}
	log.Debugf("[stargate] print cfg=%+v", cfg)
	s.Run()
}
