From a94054fe9f75553a5399c96e62483546e214e6a5 Mon Sep 17 00:00:00 2001 From: Sean Hinchee Date: Mon, 29 Jan 2018 18:55:25 +0000 Subject: [PATCH] config support added; g!dump works --- TODO | 7 ++++++ config.go | 66 ++++++++++++++++++++++++++++++++++++++++--------------- main.go | 1 + 3 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 TODO diff --git a/TODO b/TODO new file mode 100644 index 0000000000000000000000000000000000000000..865b2845fd86645522beddaf73a57b6effa10c14 --- /dev/null +++ b/TODO @@ -0,0 +1,7 @@ +* g!sum acid(1) +* g!man acid(1) or g!man 1 acid +* rss feed subscription (tracking commits) +* Server greeting +* 9front/plan9 source searching +* various cat-v fetches (harmful, page search [get lucky]) + diff --git a/config.go b/config.go index 8184f8c34fc4bb0e49846623ef775ebbd1633f61..c586b1a20508015ce08fbafc5efc3be4db19efcc 100644 --- a/config.go +++ b/config.go @@ -6,6 +6,7 @@ import ( "encoding/json" "os" "fmt" + "strings" ) // Stores config for current state @@ -13,44 +14,73 @@ type Configuration struct { LastChange string } -// Initializes current config (called once at start) +// Initializes current config (called once at start) ­ just .Read()? func (c *Configuration) Init() { + c.Read() } // Writes current config func (c *Configuration) Write() (rerr error) { + WRT: rerr = nil - f, err := os.Open("./cfg/glenda.cfg") + f, err := os.OpenFile("./cfg/glenda.cfg", os.O_RDWR, 0666) defer f.Close() if err != nil { - fmt.Println("Error opening config, see: config.go") + if strings.Contains(err.Error(), "no such file or directory") { + Config.Setup() + goto WRT + return + } else { + fmt.Println("Error opening config (w), see: config.go") + fmt.Printf("%s\n", err) + rerr = err + } + } else { + e := json.NewEncoder(f) + err = e.Encode(Config) + if err != nil { + fmt.Println("Error writing config, see: config.go") + fmt.Printf("%s\n", err) + rerr = err + } + } + + return +} + +// Reads current config into memory +func (c *Configuration) Read() (rerr error) { + f, err := os.Open("./cfg/glenda.cfg") + if err != nil { + fmt.Println("Error opening config (r), see: config.go") fmt.Printf("%s\n", err) rerr = err } - - e := json.NewEncoder(f) - err = e.Encode(Config) + + d := json.NewDecoder(f) + err = d.Decode(&Config) if err != nil { - fmt.Println("Error writing config, see: config.go") + fmt.Println("Error reading config, see: config.go") fmt.Printf("%s\n", err) rerr = err } + return } -// Reads current config into memory -func (c *Configuration) Read() { - -} - // Set up config for the first time (if one doesn't exist) func (c *Configuration) Setup() { - // Test/make cfg folder - - - // Test/make cfg - - + err := os.Mkdir("./cfg", 0774) + if err != nil { + fmt.Println("Error in making cfg dir, see: config.go") + fmt.Println(err) + } + + _, err = os.Create("cfg/glenda.cfg") + if err != nil { + fmt.Println("Error in making cfg file, see: config.go") + fmt.Println(err) + } } // Global variables are bad diff --git a/main.go b/main.go index 0763db3a5fc0c68e993a03ff6c4996b79209235d..80e9a10d91df0062c9e47dcc4c65b115673e8282 100644 --- a/main.go +++ b/main.go @@ -80,6 +80,7 @@ func main() { go mux.Listener() go mux.CommMux() go CommMux() + Config.Init() Session.UpdateStatus(0, "with #cat-v")