From fbc73922e9853d7e344e388f3fdfedb8fa323682 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Fri, 28 Nov 2025 16:34:28 +0100 Subject: doc: improve comments, pass lint Also improve the setup of golangci-lint. --- main.go | 43 +++++++++++-------------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index b0ca700..0e95bd4 100644 --- a/main.go +++ b/main.go @@ -1,12 +1,11 @@ +// The parscan command interprets programs. package main import ( "flag" "fmt" - "io" "log" "os" - "strings" "github.com/mvertes/parscan/interpreter" "github.com/mvertes/parscan/lang/golang" @@ -19,7 +18,7 @@ func main() { } } -func run(arg []string) (err error) { +func run(arg []string) error { var str string rflag := flag.NewFlagSet("run", flag.ContinueOnError) rflag.Usage = func() { @@ -28,46 +27,26 @@ func run(arg []string) (err error) { rflag.PrintDefaults() } rflag.StringVar(&str, "e", "", "string to eval") - if err = rflag.Parse(arg); err != nil { + if err := rflag.Parse(arg); err != nil { return err } args := rflag.Args() interp := interpreter.NewInterpreter(golang.GoSpec) - - 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 - } - if i2, ok := in.(io.ReadCloser); ok { - defer i2.Close() - } + return evalStr(interp, str) } - - if isatty(in) { - return interp.Repl(in) + if len(args) == 0 { + return interp.Repl(os.Stdin) } - - buf, err := io.ReadAll(in) + buf, err := os.ReadFile(arg[0]) if err != nil { return err } - _, err = interp.Eval(string(buf)) - return err + return evalStr(interp, string(buf)) } -// isatty returns true if the input stream is a tty (i.e. a character device). -func isatty(in io.Reader) bool { - s, ok := in.(interface{ Stat() (os.FileInfo, error) }) - if !ok { - return false - } - stat, err := s.Stat() - return err == nil && stat.Mode()&os.ModeCharDevice != 0 +func evalStr(i *interpreter.Interp, s string) error { + _, err := i.Eval(s) + return err } -- cgit v1.2.3