From aed20c1c453e50f716c454c0bd7e4995a0f5d898 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Wed, 26 Nov 2025 15:42:21 +0100 Subject: Chore: improve tracing of code emits --- main.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 232e122..1293bd6 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( "log" "os" "reflect" + "strings" "github.com/mvertes/parscan/lang/golang" "github.com/mvertes/parscan/parser" @@ -62,12 +63,14 @@ func repl(interp Interpreter, in io.Reader) (err error) { } func run(arg []string) (err error) { + var str string rflag := flag.NewFlagSet("run", flag.ContinueOnError) rflag.Usage = func() { fmt.Println("Usage: parscan run [options] [path] [args]") - // fmt.Println("Options:") - // rflag.PrintDefaults() + fmt.Println("Options:") + rflag.PrintDefaults() } + rflag.StringVar(&str, "e", "", "string to eval") if err = rflag.Parse(arg); err != nil { return err } @@ -75,12 +78,19 @@ func run(arg []string) (err error) { interp := parser.NewInterpreter(scanner.NewScanner(golang.GoSpec)) - in := os.Stdin + var in io.Reader + if str != "" { + in = strings.NewReader(str) + } else { + in = os.Stdin + } if len(args) > 0 { if in, err = os.Open(arg[0]); err != nil { return err } - defer in.Close() + if i2, ok := in.(io.ReadCloser); ok { + defer i2.Close() + } } if isatty(in) { -- cgit v1.2.3