main.go (1283B)
1 package main 2 3 import ( 4 "context" 5 "flag" 6 "fmt" 7 "os" 8 9 "git.defalsify.org/vise.git/engine" 10 ) 11 12 func main() { 13 var dir string 14 var root string 15 var size uint 16 var sessionId string 17 var persist bool 18 flag.StringVar(&dir, "d", ".", "resource dir to read from") 19 flag.UintVar(&size, "s", 0, "max size of output") 20 flag.StringVar(&root, "root", "root", "entry point symbol") 21 flag.StringVar(&sessionId, "session-id", "default", "session id") 22 flag.BoolVar(&persist, "persist", false, "use state persistence") 23 flag.Parse() 24 fmt.Fprintf(os.Stderr, "starting session at symbol '%s' using resource dir: %s\n", root, dir) 25 26 ctx := context.Background() 27 en, err := engine.NewSizedEngine(dir, uint32(size), persist, &sessionId) 28 if err != nil { 29 fmt.Fprintf(os.Stderr, "engine create error: %v", err) 30 os.Exit(1) 31 } 32 cont, err := en.Init(ctx) 33 if err != nil { 34 fmt.Fprintf(os.Stderr, "engine init exited with error: %v\n", err) 35 os.Exit(1) 36 } 37 if !cont { 38 _, err = en.WriteResult(ctx, os.Stdout) 39 if err != nil { 40 fmt.Fprintf(os.Stderr, "dead init write error: %v\n", err) 41 os.Exit(1) 42 } 43 os.Stdout.Write([]byte{0x0a}) 44 os.Exit(0) 45 } 46 err = engine.Loop(ctx, en, os.Stdin, os.Stdout) 47 if err != nil { 48 fmt.Fprintf(os.Stderr, "loop exited with error: %v\n", err) 49 os.Exit(1) 50 } 51 }