mirror of
https://github.com/airstruck/luigi.git
synced 2025-12-19 02:16:43 +00:00
Launcher for the LuaJIT backend.
Looks for main.lua. Launch it like this:
luajit myapp/lib/luigi/launch.lua
If luigi isn't inside the project directory, pass
the path containing main.lua as the second argument.
The path must end with a directory separator.
luajit /opt/luigi/launch.lua ./myapp/
If the app prefixes luigi modules with something
other then 'luigi', pass that prefix as the third
argument.
luajit /opt/luigi/launch.lua ./myapp/ lib.luigi
This commit is contained in:
54
luigi/launch.lua
Normal file
54
luigi/launch.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
--[[--
|
||||
Launcher for the LuaJIT backend.
|
||||
|
||||
Looks for main.lua. Launch it like this:
|
||||
|
||||
luajit myapp/lib/luigi/launch.lua
|
||||
|
||||
If luigi isn't inside the project directory, pass
|
||||
the path containing main.lua as the second argument.
|
||||
The path must end with a directory separator.
|
||||
|
||||
luajit /opt/luigi/launch.lua ./myapp/
|
||||
|
||||
If the app prefixes luigi modules with something
|
||||
other then 'luigi', pass that prefix as the third
|
||||
argument.
|
||||
|
||||
luajit /opt/luigi/launch.lua ./myapp/ lib.luigi
|
||||
|
||||
--]]--
|
||||
local packagePath = package.path
|
||||
local libRoot = arg[0]:gsub('[^/\\]*%.lua$', '')
|
||||
local appRoot, modPath = ...
|
||||
|
||||
local function run (appRoot, modPath)
|
||||
package.path = packagePath .. ';' .. appRoot .. '?.lua'
|
||||
rawset(_G, 'LUIGI_APP_ROOT', appRoot)
|
||||
require 'main'
|
||||
require (modPath .. '.backend').run()
|
||||
end
|
||||
|
||||
-- expect to find main.lua in appRoot if specified
|
||||
if appRoot then
|
||||
return run(appRoot, modPath or 'luigi')
|
||||
end
|
||||
|
||||
-- try to find main.lua in a parent of this library, recursively.
|
||||
local lastLibRoot = libRoot
|
||||
repeat
|
||||
if io.open(libRoot .. 'main.lua') then
|
||||
return run(libRoot, modPath)
|
||||
end
|
||||
lastLibRoot = libRoot
|
||||
libRoot = libRoot:gsub('([^/\\]*).$', function (m)
|
||||
modPath = modPath and (m .. '.' .. modPath) or m
|
||||
return ''
|
||||
end)
|
||||
until libRoot == lastLibRoot
|
||||
|
||||
error 'main.lua not found'
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user