main.go 898 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net/http"
  6. "os"
  7. "time"
  8. "github.com/tylerb/graceful"
  9. "git.lattuga.net/boyska/megauploader"
  10. )
  11. func main() {
  12. dump := flag.Bool("dump", false, "Do not run; dump the configuration as it is loaded instead")
  13. cfgfile := flag.String("cfg", "/etc/megauploader/config.yaml", "Location of the configuration file")
  14. addr := flag.String("addr", "localhost:8000", "Listen address")
  15. flag.Parse()
  16. cfg, err := megauploader.ParseConf(*cfgfile)
  17. if err != nil {
  18. fmt.Fprintln(os.Stderr, err)
  19. os.Exit(1)
  20. }
  21. if errs := cfg.Validate(); len(errs) > 0 {
  22. fmt.Fprintln(os.Stderr, "Configuration errors:")
  23. for _, e := range errs {
  24. fmt.Fprintln(os.Stderr, " -", e)
  25. }
  26. os.Exit(1)
  27. }
  28. if *dump {
  29. fmt.Println(cfg.Pretty())
  30. os.Exit(0)
  31. }
  32. mu := megauploader.MegaUploader{Conf: cfg}
  33. mu.SetupRoutes()
  34. graceful.Run(*addr, 15*time.Second, http.DefaultServeMux)
  35. }