main.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package main
  2. import (
  3. "context"
  4. "github.com/vladimirok5959/golang-ctrlc/ctrlc"
  5. "github.com/vladimirok5959/golang-ip2location/internal/client"
  6. "github.com/vladimirok5959/golang-ip2location/internal/consts"
  7. "github.com/vladimirok5959/golang-ip2location/internal/server"
  8. "github.com/vladimirok5959/golang-utils/utils/http/logger"
  9. "github.com/vladimirok5959/golang-utils/utils/penv"
  10. )
  11. func init() {
  12. if err := penv.ProcessConfig(&consts.Config); err != nil {
  13. panic(err)
  14. }
  15. var err error
  16. if consts.Config.DataDir == "" {
  17. consts.Config.DataDir, err = consts.DataPath()
  18. if err != nil {
  19. panic(err)
  20. }
  21. }
  22. }
  23. func main() {
  24. logger.AccessLogFile = consts.Config.AccessLogFile
  25. logger.ErrorLogFile = consts.Config.ErrorLogFile
  26. ctrlc.App(func(ctx context.Context, shutdown context.CancelFunc) *[]ctrlc.Iface {
  27. cl, err := client.New(ctx, shutdown)
  28. if err != nil {
  29. return ctrlc.MakeError(shutdown, ctrlc.AppError(err))
  30. }
  31. sv, err := server.New(ctx, shutdown, cl)
  32. if err != nil {
  33. return ctrlc.MakeError(shutdown, ctrlc.AppError(err), cl)
  34. }
  35. return &[]ctrlc.Iface{
  36. sv,
  37. cl,
  38. }
  39. })
  40. }