lua/pure/pure.go
Rama main · réplica de lectura del repositorio original.
// Package pure provides Lua functions for running commands and listing files
package pure
import (
"github.com/sirupsen/logrus"
lua "github.com/xyproto/gopher-lua"
)
// Extra Lua functions
const luacode = `
-- Given the name of a python script in the same directory,
-- return the outputted lines as a table
function py(filename)
if filename == nil then
return {}
end
local cmd = "python " .. scriptdir() .. "/" .. filename
local f = assert(io.popen(cmd, 'r'))
local a = {}
for line in f:lines() do
table.insert(a, line)
end
f:close()
return a
end
-- Given the name of an executable (or executable script) in the same directory,
-- return the outputted lines as a table
function run(given_command)
if given_command == nil then
return {}
end
local cmd = "cd " .. scriptdir() .. "; " .. given_command
local f = assert(io.popen(cmd, 'r'))
local a = {}
for line in f:lines() do
table.insert(a, line)
end
f:close()
return a
end
-- List a table
function dir(t)
if t == nil then
t = _G
end
local output = {}
for k, v in pairs(t) do
table.insert(output, string.format("%-16s\t->\t%s", tostring(k), tostring(v)))
end
return table.concat(output, "\n")
end
`
// Load makes functions for running commands, python code or listing files to
// the given Lua state struct: py, run and dir
func Load(L *lua.LState) {
if err := L.DoString(luacode); err != nil {
logrus.Errorf("Could not load extra Lua functions: %s", err)
}
}