From 06eef500251ca15d93271102c3daeeae78025fd2 Mon Sep 17 00:00:00 2001 From: Ethan Burns Date: Sun, 15 May 2016 14:13:34 -0400 Subject: [PATCH] Add zork plugin. --- AUTHORS | 1 + main.go | 4 +- plugins/zork/ZORK1.DAT | Bin 0 -> 92160 bytes plugins/zork/zork.go | 124 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 plugins/zork/ZORK1.DAT create mode 100644 plugins/zork/zork.go diff --git a/AUTHORS b/AUTHORS index 94139bc..49036db 100755 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1,2 @@ Chris Sexton +Ethan Burns \ No newline at end of file diff --git a/main.go b/main.go index 9b9b5e3..6d8f86d 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "github.com/velour/catbase/config" "github.com/velour/catbase/irc" "github.com/velour/catbase/plugins/admin" + "github.com/velour/catbase/plugins/babbler" "github.com/velour/catbase/plugins/beers" "github.com/velour/catbase/plugins/counter" "github.com/velour/catbase/plugins/dice" @@ -17,9 +18,9 @@ import ( "github.com/velour/catbase/plugins/fact" "github.com/velour/catbase/plugins/leftpad" "github.com/velour/catbase/plugins/reminder" - "github.com/velour/catbase/plugins/babbler" "github.com/velour/catbase/plugins/talker" "github.com/velour/catbase/plugins/your" + "github.com/velour/catbase/plugins/zork" "github.com/velour/catbase/slack" ) @@ -55,6 +56,7 @@ func main() { b.AddHandler("counter", counter.New(b)) b.AddHandler("reminder", reminder.New(b)) b.AddHandler("babbler", babbler.New(b)) + b.AddHandler("zork", zork.New(b)) // catches anything left, will always return true b.AddHandler("factoid", fact.New(b)) diff --git a/plugins/zork/ZORK1.DAT b/plugins/zork/ZORK1.DAT new file mode 100644 index 0000000000000000000000000000000000000000..5b79e24fd2ecd39fdfd680da5a9b5b668e5b21e9 GIT binary patch literal 92160 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⪙DESKAXb`Mn*#)A*?J$>uxq+{21u#A<)Fp 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 literal 0 HcmV?d00001 diff --git a/plugins/zork/zork.go b/plugins/zork/zork.go new file mode 100644 index 0000000..7bd97bd --- /dev/null +++ b/plugins/zork/zork.go @@ -0,0 +1,124 @@ +// © 2016 the CatBase Authors under the WTFPL license. See AUTHORS for the list of authors. + +// Package zork implements a zork plugin for catbase. +package zork + +import ( + "bufio" + "bytes" + "go/build" + "io" + "log" + "os/exec" + "path/filepath" + "strings" + "sync" + + "github.com/velour/catbase/bot" + "github.com/velour/catbase/bot/msg" +) + +// ZorkPlugin is a catbase plugin for playing zork. +type ZorkPlugin struct { + bot bot.Bot + sync.Mutex + // zorks is a map from channels to their corresponding zork instances. + zorks map[string]io.WriteCloser +} + +func New(b bot.Bot) bot.Handler { + return &ZorkPlugin{ + bot: b, + zorks: make(map[string]io.WriteCloser), + } +} + +func (p *ZorkPlugin) runZork(ch string) error { + const importString = "github.com/velour/catbase/plugins/zork" + pkg, err := build.Import(importString, "", build.FindOnly) + if err != nil { + return err + } + zorkdat := filepath.Join(pkg.Dir, "ZORK1.DAT") + cmd := exec.Command("dfrotz", zorkdat) + + var r io.ReadCloser + r, cmd.Stdout = io.Pipe() + cmd.Stderr = cmd.Stdout + + var w io.WriteCloser + cmd.Stdin, w = io.Pipe() + + log.Printf("zork running %s\n", cmd) + if err := cmd.Start(); err != nil { + w.Close() + return err + } + go func() { + defer r.Close() + s := bufio.NewScanner(r) + // Scan until the next prompt. + s.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + if i := bytes.Index(data, []byte{'\n', '>'}); i > 0 { + return i + 1, data[:i], nil + } + if atEOF { + return len(data), data, nil + } + return 0, nil, nil + }) + for s.Scan() { + // Remove > and quote the whole thing. + m := strings.Replace(s.Text(), ">", "", -1) + m = strings.Replace(m, "\n", "\n>", -1) + m = ">" + m + "\n" + p.bot.SendMessage(ch, m) + } + }() + go func() { + if err := cmd.Wait(); err != nil { + log.Printf("zork exited: %v\n", err) + } + p.Lock() + p.zorks[ch] = nil + p.Unlock() + }() + log.Printf("zork is running in %s\n", ch) + p.zorks[ch] = w + return nil +} + +func (p *ZorkPlugin) Message(message msg.Message) bool { + m := strings.ToLower(message.Body) + log.Printf("got message [%s]\n", m) + if ts := strings.Fields(m); len(ts) < 1 || ts[0] != "zork" { + return false + } + m = strings.TrimSpace(strings.TrimPrefix(m, "zork")) + ch := message.Channel + + p.Lock() + defer p.Unlock() + if p.zorks[ch] == nil { + if err := p.runZork(ch); err != nil { + p.bot.SendMessage(ch, "failed to run zork: "+err.Error()) + return true + } + } + log.Printf("zorking, [%s]\n", m) + io.WriteString(p.zorks[ch], m+"\n") + return true +} + +func (p *ZorkPlugin) Event(_ string, _ msg.Message) bool { return false } + +func (p *ZorkPlugin) BotMessage(_ msg.Message) bool { return false } + +func (p *ZorkPlugin) Help(ch string, _ []string) { + p.bot.SendMessage(ch, "Play zork using 'zork '.") +} + +func (p *ZorkPlugin) RegisterWeb() *string { return nil }