func main() { flag.Parse() err := godotenv.Load(fmt.Sprintf("config/%s.env", *env)) if err != nil { log.Fatal(err) return } goth.UseProviders( github.New(os.Getenv("GITHUB_CLIENT_KEY"), os.Getenv("GITHUB_SECRET"), os.Getenv("GITHUB_CALLBACK")), ) p := pat.New() r := newRoom() r.tracer = trace.New(os.Stdout) p.Add("GET", "/chat", MustAuth(&templateHandler{filename: "chat.html"})) p.Add("GET", "/login", &templateHandler{filename: "login.html"}) p.Get("/auth/{action}/{provider}", loginHandler) p.Add("GET", "/room", r) // チャットルームの開始 go r.run() // Webサーバの起動 log.Println("Webサーバーを開始します。ポート: ", *addr) if err := http.ListenAndServe(*addr, p); err != nil { log.Fatal("ListenAndServe:", err) } }
func main() { flag.Parse() // 本番環境実行時はバイナリのあるディレクトリへと移動する if *env == "production" { dir := path.Dir(os.Args[0]) os.Chdir(dir) } err := godotenv.Load(fmt.Sprintf("config/%s.env", *env)) if err != nil { log.Fatal(err) return } goth.UseProviders( github.New(os.Getenv("GITHUB_CLIENT_KEY"), os.Getenv("GITHUB_SECRET"), os.Getenv("GITHUB_CALLBACK")), ) p := pat.New() r := newRoom() r.tracer = trace.New(os.Stdout) p.Add("GET", "/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("./public")))) p.Add("GET", "/chat", MustAuth(&templateHandler{filename: "chat.html"})) p.Add("GET", "/login", &templateHandler{filename: "login.html"}) p.Add("GET", "/index", &templateHandler{filename: "index.html"}) p.Get("/auth/{action}/{provider}", loginHandler) p.Add("GET", "/room", r) // チャットルームの開始 go r.run() // Webサーバの起動 log.Println("Webサーバーを開始します。ポート: ", *addr) if err := http.ListenAndServe(*addr, p); err != nil { log.Fatal("ListenAndServe:", err) } }