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)
--[==========================================================================[
Copyright (C) 2010 the VideoLAN team
Copyright (C) 2010 Antoine Cellerier
$Id$
Authors: Antoine Cellerier <dionoea at videolan dot org>
......@@ -22,27 +22,46 @@
--]==========================================================================]
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"}'
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 "io"
vlc.msg.info("About to compile lua file")
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
function compile()
vlc.msg.info("About to compile lua file")
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
vlc.msg.err("Input and output config options must be set")
for line in string.gmatch(usage,"([^\n]+)\n*") do
vlc.msg.err(line)
return false
end
else
local bytecode = loadfile(config.input)
local output = io.open(config.output, "wb")
local bytecode, msg = loadfile(config.input)
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))
return true
end
end
if not compile() then
for line in string.gmatch(usage,"([^\n]+)\n*") do
vlc.msg.err(line)
end
end
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