Large architecture refactor of the scripting system. Previous implementation required Lua scripts to return "action tables" which were interpreted by a large and not very flexible at all if-else ladder in C++. While fine for the initial implementation, it's not scalable, and it makes it impossible for players to write their own meaningful tools.
26 lines
545 B
Lua
26 lines
545 B
Lua
-- /bin/echo - Display contents of a text file.
|
|
local content_parts = {}
|
|
local filename = nil
|
|
local found_redirect = false
|
|
|
|
for i, v in ipairs(arg) do
|
|
if v == ">" then
|
|
found_redirect = true
|
|
filename = arg[i+1]
|
|
break
|
|
else
|
|
table.insert(content_parts, v)
|
|
end
|
|
end
|
|
|
|
if found_redirect then
|
|
if not filename then
|
|
return "echo: syntax error: expected filename after '>'"
|
|
end
|
|
local content = table.concat(content_parts, " ")
|
|
return bettola.write_file(context, filename, content)
|
|
else
|
|
return table.concat(arg, " ")
|
|
end
|
|
|