From 1714aeac368f14ede6813206743e8291292d1709 Mon Sep 17 00:00:00 2001 From: TorchedSammy <38820196+TorchedSammy@users.noreply.github.com> Date: Fri, 22 Apr 2022 23:35:26 -0400 Subject: [PATCH] feat: add fs.abs --- golibs/fs/fs.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/golibs/fs/fs.go b/golibs/fs/fs.go index 042f2a8..eda1671 100644 --- a/golibs/fs/fs.go +++ b/golibs/fs/fs.go @@ -1,6 +1,7 @@ package fs import ( + "path/filepath" "strconv" "os" "strings" @@ -22,6 +23,7 @@ func loaderFunc(rtm *rt.Runtime) (rt.Value, func()) { "mkdir": util.LuaExport{fmkdir, 2, false}, "stat": util.LuaExport{fstat, 1, false}, "readdir": util.LuaExport{freaddir, 1, false}, + "abs": util.LuaExport{fabs, 1, false}, } mod := rt.NewTable() util.SetExports(rtm, mod, exports) @@ -132,3 +134,20 @@ func freaddir(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) { return c.PushingNext1(t.Runtime, rt.TableValue(names)), nil } + +// abs(path) +// Gives an absolute version of `path`. +// --- @param path string +func fabs(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) { + path, err := c.StringArg(0) + if err != nil { + return nil, err + } + + abspath, err := filepath.Abs(path) + if err != nil { + return nil, err + } + + return c.PushingNext1(t.Runtime, rt.StringValue(abspath)), nil +}