From 1540549e720eb2804cc0fb3891a4cb0fca2dfb46 Mon Sep 17 00:00:00 2001 From: HAYAMA_Kaoru Date: Sat, 3 May 2025 12:05:37 +0900 Subject: [PATCH] Refactor: split core functionality into separate package --- cmd/lispect/main.go | 28 ++++++++++++++++++++++++++++ global.go | 2 +- main.go | 36 ++++++++++-------------------------- term.go | 2 +- watcher.go | 2 +- 5 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 cmd/lispect/main.go diff --git a/cmd/lispect/main.go b/cmd/lispect/main.go new file mode 100644 index 0000000..2e30890 --- /dev/null +++ b/cmd/lispect/main.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "os" + "runtime" + + "github.com/hymkor/lispect" +) + +var version string + +func mains(args []string) error { + if len(args) < 1 { + return fmt.Errorf("%s %s-%s-%s: script path required", + os.Args[0], + version, + runtime.GOOS, + runtime.GOARCH) + } + return lispect.RunFile(args[0], args) +} +func main() { + if err := mains(os.Args[1:]); err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } +} diff --git a/global.go b/global.go index 93f07bb..cfc99e3 100644 --- a/global.go +++ b/global.go @@ -1,4 +1,4 @@ -package main +package lispect import ( "context" diff --git a/main.go b/main.go index 635f1df..a410796 100644 --- a/main.go +++ b/main.go @@ -1,17 +1,21 @@ -package main +package lispect import ( "context" - "fmt" "os" - "runtime" "github.com/hymkor/gmnlisp" ) -var version string +func RunFile(fname string, args []string) error { + script, err := os.ReadFile(fname) + if err != nil { + return err + } + return RunString(string(script), args) +} -func mains(args []string) error { +func RunString(script string, args []string) error { term, err := NewTerm() if err != nil { return err @@ -41,19 +45,6 @@ func mains(args []string) error { gmnlisp.NewSymbol("setenv"): gmnlisp.Function2(g.setenv), gmnlisp.NewSymbol("wait"): gmnlisp.Function1(g.wait), }) - - if len(args) <= 0 { - return fmt.Errorf("%s %s-%s-%s: script path required", - os.Args[0], - version, - runtime.GOOS, - runtime.GOARCH) - } - script, err := os.ReadFile(args[0]) - if err != nil { - return err - } - posixArgv := []gmnlisp.Node{} for _, s := range args[1:] { posixArgv = append(posixArgv, gmnlisp.String(s)) @@ -69,14 +60,7 @@ func mains(args []string) error { }) ctx, cancel := context.WithCancel(context.Background()) - _, err = lisp.Interpret(ctx, string(script)) + _, err = lisp.Interpret(ctx, script) cancel() return err } - -func main() { - if err := mains(os.Args[1:]); err != nil { - fmt.Fprintln(os.Stderr, err.Error()) - os.Exit(1) - } -} diff --git a/term.go b/term.go index e580d94..75dc9ea 100644 --- a/term.go +++ b/term.go @@ -1,4 +1,4 @@ -package main +package lispect import ( "os" diff --git a/watcher.go b/watcher.go index 5027a46..bf20555 100644 --- a/watcher.go +++ b/watcher.go @@ -1,4 +1,4 @@ -package main +package lispect import ( "io"