Commit bf92daa5 authored by Antoine Cellerier's avatar Antoine Cellerier

Add error handling to luac intf.

parent b8d7defe
--[==========================================================================[ --[==========================================================================[
luac.lua: lua compilation module for VLC (duplicates luac) luac.lua: lua compilation module for VLC (duplicates luac)
--[==========================================================================[ --[==========================================================================[
Copyright (C) 2010 the VideoLAN team Copyright (C) 2010 Antoine Cellerier
$Id$ $Id$
Authors: Antoine Cellerier <dionoea at videolan dot org> Authors: Antoine Cellerier <dionoea at videolan dot org>
...@@ -22,27 +22,46 @@ ...@@ -22,27 +22,46 @@
--]==========================================================================] --]==========================================================================]
usage = usage =
[[ To compile a lua script to luac run: [[
To compile a lua script to bytecode (luac) run:
vlc -I lua --lua-intf --lua-config 'luac={input="file.lua",output="file.luac"}' vlc -I lua --lua-intf --lua-config 'luac={input="file.lua",output="file.luac"}'
Output will be similar to that of the luac command line tool provided with lua with the following arguments:
luac -o file.luac file.lua
]] ]]
require "string" require "string"
require "io" require "io"
vlc.msg.info("About to compile lua file") function compile()
vlc.msg.info(" Input is '"..tostring(config.input).."'") vlc.msg.info("About to compile lua file")
vlc.msg.info(" Output is '"..tostring(config.output).."'") vlc.msg.info(" Input is '"..tostring(config.input).."'")
vlc.msg.info(" Output is '"..tostring(config.output).."'")
if not config.input or not config.output then if not config.input or not config.output then
vlc.msg.err("Input and output config options must be set") vlc.msg.err("Input and output config options must be set")
for line in string.gmatch(usage,"([^\n]+)\n*") do return false
vlc.msg.err(line)
end end
else
local bytecode = loadfile(config.input) local bytecode, msg = loadfile(config.input)
local output = io.open(config.output, "wb") if not bytecode then
vlc.msg.err("Error while loading file '"..config.input.."': "..msg)
return false
end
local output, msg = io.open(config.output, "wb")
if not output then
vlc.msg.err("Error while opening file '"..config.output.."' for output: "..msg)
return false
else
output:write(string.dump(bytecode)) output:write(string.dump(bytecode))
return true
end
end end
if not compile() then
for line in string.gmatch(usage,"([^\n]+)\n*") do
vlc.msg.err(line)
end
end
vlc.misc.quit() vlc.misc.quit()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment