From e1476287df18e00d8d1142c76e6119936b7d27ff Mon Sep 17 00:00:00 2001 From: n0m1s Date: Sun, 23 Jun 2019 10:50:56 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9A=97=20Gorilla=20mux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.go | 61 +++++++++++++++++++++++++++++++++++++++++++ jdr/character.go | 4 +++ jdr/dungeonmaster.go | 4 +++ jdr/game.go | 5 ++++ main.go | 31 ++++++++++++++++++++++ templates/login.html | 9 +++++++ templates/player.html | 16 ++++++++++++ 7 files changed, 130 insertions(+) create mode 100644 config.go create mode 100644 jdr/character.go create mode 100644 jdr/dungeonmaster.go create mode 100644 jdr/game.go create mode 100644 templates/login.html create mode 100644 templates/player.html diff --git a/config.go b/config.go new file mode 100644 index 0000000..87fa68c --- /dev/null +++ b/config.go @@ -0,0 +1,61 @@ +package main + +import ( + "log" + "flag" + "os" + "path/filepath" + + "github.com/BurntSushi/toml" +) + +type Config struct { + Database DatabaseConfig +} + +type DatabaseConfig struct { + Type string +} + +var ConfigFolder string +var ConfigFilename string + +var Configuration Config + +func init() { + const baseFolder string = "jdr" + + dir, varSet := os.LookupEnv("XDG_CONFIG_HOME") + if varSet { + ConfigFolder = filepath.Join(dir, baseFolder) + } else { + dir, varSet = os.LookupEnv("HOME") + if !varSet { + log.Fatal("Cannot find a config folder") + } + + ConfigFolder = filepath.Join(dir, "." + baseFolder) + } +} + +func ParseArguments() { + log.Println("Parsing arguments") + + flag.StringVar(&ConfigFilename, "config", filepath.Join(ConfigFolder, "config.toml"), "configuration file") + flag.Parse() +} + +func LoadConfig() { + configFilename, err := filepath.Abs(ConfigFilename) + if err != nil { + log.Fatal(err) + } + + log.Println("Loading config from", configFilename) + _, err = toml.DecodeFile(configFilename, &Configuration) + if err != nil { + log.Fatal(err) + } + + log.Println(Configuration.Database.Type) +} diff --git a/jdr/character.go b/jdr/character.go new file mode 100644 index 0000000..e611d53 --- /dev/null +++ b/jdr/character.go @@ -0,0 +1,4 @@ +package jdr + +type Character struct { +} diff --git a/jdr/dungeonmaster.go b/jdr/dungeonmaster.go new file mode 100644 index 0000000..c822be2 --- /dev/null +++ b/jdr/dungeonmaster.go @@ -0,0 +1,4 @@ +package jdr + +type DungeonMaster struct { +} diff --git a/jdr/game.go b/jdr/game.go new file mode 100644 index 0000000..52269ca --- /dev/null +++ b/jdr/game.go @@ -0,0 +1,5 @@ +package jdr + +type Game struct { + +} diff --git a/main.go b/main.go index da29a2c..ce056bf 100644 --- a/main.go +++ b/main.go @@ -1,4 +1,35 @@ package main +import ( + //"fmt" + "log" + "net/http" + "html/template" + "github.com/gorilla/mux" +) + +var templates = template.Must(template.ParseGlob("templates/*.html")) + +func mainPageHandler(w http.ResponseWriter, r *http.Request) { + err := templates.ExecuteTemplate(w, "login.html", nil) + if err != nil { + log.Println(err) + } +} + +func playerPageHandler(w http.ResponseWriter, r *http.Request) { + err := templates.ExecuteTemplate(w, "player.html", nil) + if err != nil { + log.Println(err) + } +} + func main() { + ParseArguments() + LoadConfig() + + r := mux.NewRouter() + r.HandleFunc("/", mainPageHandler) + r.HandleFunc("/player", playerPageHandler) + log.Fatal(http.ListenAndServe(":8080", r)) } diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..327ff3b --- /dev/null +++ b/templates/login.html @@ -0,0 +1,9 @@ + + + + login + + +

Login

+ + diff --git a/templates/player.html b/templates/player.html new file mode 100644 index 0000000..c17f73c --- /dev/null +++ b/templates/player.html @@ -0,0 +1,16 @@ + + + + + +
+ + + + + + + +
+ +