Implement (getenv)

This commit is contained in:
HAYAMA_Kaoru
2024-11-30 11:22:19 +09:00
parent eceaa0bfbc
commit cf747dcac7
2 changed files with 14 additions and 0 deletions
+13
View File
@@ -3,6 +3,7 @@ package main
import (
"context"
"io"
"os"
"time"
"github.com/hymkor/gmnlisp"
@@ -138,3 +139,15 @@ func (g *Global) expectX(ctx context.Context, w *gmnlisp.World, node gmnlisp.Nod
return gmnlisp.Progn(ctx, w, timeoutAct)
}
}
func (g *Global) getenv(ctx context.Context, w *gmnlisp.World, arg gmnlisp.Node) (gmnlisp.Node, error) {
name, err := gmnlisp.ExpectClass[gmnlisp.String](ctx, w, arg)
if err != nil {
return nil, err
}
value, ok := os.LookupEnv(string(name))
if !ok {
return gmnlisp.Null, nil
}
return gmnlisp.String(value), nil
}
+1
View File
@@ -33,6 +33,7 @@ func mains(args []string) error {
gmnlisp.NewSymbol("spawn"): &gmnlisp.Function{Min: 1, F: g.spawn},
gmnlisp.NewSymbol("expect*"): gmnlisp.SpecialF(g.expectX),
gmnlisp.NewSymbol("expect"): gmnlisp.SpecialF(g.expect),
gmnlisp.NewSymbol("getenv"): gmnlisp.Function1(g.getenv),
})
if len(args) <= 0 {