package main

import (
	"context"
	"flag"

	log "github.com/sirupsen/logrus"
)

var serviceconfigpath string

func main() {

	flag.StringVar(&serviceconfigpath, "serviceconfig", "./configs/serviceconfig.yaml", "service info.")
	flag.Parse()

	serviceConfig, err := LoadConfig(serviceconfigpath)

	if err != nil {
		log.Panicf("load service config failed. %s", err.Error())
	}
	if serviceConfig.Phase == PreparePhase {
		s := NewSource(serviceConfig)
		if serviceConfig.SourceMysql != "" {
			err := s.LoadMeteringFromMysql(context.TODO())
			if err != nil {
				log.Panicf("load metering from mysql failed. %s", err.Error())
			}
		} else {
			err := s.LoadMeteringFromObjectStorage(context.TODO())
			if err != nil {
				log.Panicf("load metering from object storages failed. %s", err.Error())
			}
		}
	} else if serviceConfig.Phase == RepushPhase {
		d := NewDest(serviceConfig)
		err := d.Repush(context.TODO())
		if err != nil {
			log.Panicf("repush failed. %s", err.Error())
		}

	} else {
		log.Panicf("invalid phase %s", serviceConfig.Phase)
	}

}
