~kris/9p

glenda

a94054fe9f75553a5399c96e62483546e214e6a5 — Sean Hinchee 8 years ago 2e156f5
config support added; g!dump works
3 files changed, 56 insertions(+), 18 deletions(-)

A TODO
M config.go
M main.go
A TODO => TODO +7 -0
@@ 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])


M config.go => config.go +48 -18
@@ 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

M main.go => main.go +1 -0
@@ 80,6 80,7 @@ func main() {
	go mux.Listener()
	go mux.CommMux()
	go CommMux()
	Config.Init()

	Session.UpdateStatus(0, "with #cat-v")