From 9a9c640b91525cd6ae43b8e0fc9fed74795aead1 Mon Sep 17 00:00:00 2001 From: raylu Date: Wed, 13 Oct 2010 20:09:48 -0400 Subject: [PATCH] Add configuration parsing --- .gitignore | 1 + Makefile | 9 +++++++++ rbot.conf.example | 7 +++++++ rbot.go | 49 ++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 rbot.conf.example diff --git a/.gitignore b/.gitignore index b3472a3..8523e9e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ _test/ *.swp *~ *.out +rbot.conf diff --git a/Makefile b/Makefile index e34f6e3..8751f02 100644 --- a/Makefile +++ b/Makefile @@ -10,3 +10,12 @@ GOFILES=\ include $(GOROOT)/src/Make.cmd +all: rbot.conf + +rbot.conf: rbot.conf.example + @if [ -f $@ ] ; then \ + echo "rbot.conf exists, but rbot.conf.example is newer." ; \ + else \ + echo cp $< $@ ; \ + cp $< $@ ; \ + fi diff --git a/rbot.conf.example b/rbot.conf.example new file mode 100644 index 0000000..923440c --- /dev/null +++ b/rbot.conf.example @@ -0,0 +1,7 @@ +[DEFAULT] +server: irc.rizon.net +nick: rbot +user: rbot +ssl: false + +[#raylu] diff --git a/rbot.go b/rbot.go index d80cece..1e78a2f 100644 --- a/rbot.go +++ b/rbot.go @@ -3,17 +3,24 @@ package main import ( "irc" "fmt" + "os" + "github.com/kless/goconfig/config" ) -func main() { - server := "irc.rizon.net" - channel := "#vn-meta" - ssl := false +var nick, server, user string +var ssl bool +var channels []string - c := irc.New("raylu[BOT]", "rayluBOT", "rayluBOT") +func main() { + parseConfig("rbot.conf") + + c := irc.New(nick, user, user) c.AddHandler("connected", func(conn *irc.Conn, line *irc.Line) { - conn.Join(channel) + fmt.Println("Connected!") + for _, c := range channels { + conn.Join(c) + } }) for { @@ -22,9 +29,37 @@ func main() { fmt.Printf("Connection error: %s\n", err) break } - fmt.Println("Connected!") for err := range c.Err { fmt.Printf("goirc error: %s\n", err) } } } + +func parseConfig(confFile string) { + conf, err := config.ReadDefault(confFile) + if (err != nil) { + fmt.Printf("Config error: %s\n", err); os.Exit(1) + } + + server, err = conf.String("DEFAULT", "server") + if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) } + + nick, err = conf.String("DEFAULT", "nick") + if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) } + + user, err = conf.String("DEFAULT", "user") + if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) } + + ssl, err = conf.Bool("DEFAULT", "ssl") + if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) } + + sections := conf.Sections() + channels = make([]string, len(sections)-1) + i := 0 + for _, s := range sections { + if (s != "DEFAULT") { + channels[i] = s + i++ + } + } +}