diff --git a/env.sh b/env.sh new file mode 100644 index 0000000..e9cb04a --- /dev/null +++ b/env.sh @@ -0,0 +1 @@ +export GOPATH=$(pwd):$(pwd)/vendor diff --git a/scream.ini b/scream.ini new file mode 100644 index 0000000..c9fdd69 --- /dev/null +++ b/scream.ini @@ -0,0 +1,21 @@ +[info] +port = 5000 +locked = true +ircv3 = false + +[network "LocalHost"] +host = "127.0.0.1" +ssl = false +port = 6667 + +[user "Xena"] +authmethod = password # hard-coded as "memes" +id = amusement +numeric = 69 +gecos = Xena Xena Xena +autojoin = "#foo,#bar" + +[database] +driver = sqlite3 +connection = "./var/scream.db" +# Ignore for now \ No newline at end of file diff --git a/src/shuo-irc.com/config/conf.go b/src/shuo-irc.com/config/conf.go index 33683aa..98c84a5 100644 --- a/src/shuo-irc.com/config/conf.go +++ b/src/shuo-irc.com/config/conf.go @@ -2,10 +2,10 @@ package config // Config is the main configuration type. type Config struct { - Info Info // Basic information - DefaultNetworks map[string]*Network // List of "default" networks to choose from - Users map[string]*User // For now hardcoded list of users XXX fix this - Database Database // Database Config + Info Info // Basic information + Network map[string]*Network // List of "default" networks to choose from + User map[string]*User // For now hardcoded list of users XXX fix this + Database Database // Database Config } // Info is basic information. diff --git a/src/shuo-irc.com/config/load.go b/src/shuo-irc.com/config/load.go new file mode 100644 index 0000000..79ff442 --- /dev/null +++ b/src/shuo-irc.com/config/load.go @@ -0,0 +1,31 @@ +package config + +import ( + "os" + + "github.com/scalingdata/gcfg" +) + +// Load loads the configuration by the given filename, throwing an error if it fails. +func Load(fname string) (c *Config, err error) { + fin, err := os.Open(fname) + if err != nil { + return nil, err + } + defer fin.Close() + + c = new(Config) + c.Network = make(map[string]*Network) + c.User = make(map[string]*User) + + err = gcfg.ReadInto(c, fin) + if err != nil { + return nil, err + } + + for k, user := range c.User { + user.Username = k + } + + return c, nil +} diff --git a/src/shuo-irc.com/config/load_test.go b/src/shuo-irc.com/config/load_test.go new file mode 100644 index 0000000..90e09e8 --- /dev/null +++ b/src/shuo-irc.com/config/load_test.go @@ -0,0 +1,12 @@ +package config + +import "testing" + +func TestLoadConfig(t *testing.T) { + c, err := Load("../../../scream.ini") + if err != nil { + t.Fatal(err) + } + + t.Log(c) +} diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..7c99232 --- /dev/null +++ b/test.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source ./env.sh + +gt ./...