[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Lua 5.2 beta: default module path incompatibility
- From: Wesley Smith <wesley.hoke@...>
- Date: Wed, 21 Sep 2011 19:05:01 -0700
Here's what I use with scripts running from the lua command line
interpreter. This has worked quite well for me so far on OSX.
local
function exec(cmd, echo)
echo = echo or true
if(echo) then
print(cmd)
print("")
end
local res = io.popen(cmd):read("*a")
return res:sub(1, res:len()-1)
end
local
function stripfilename(filename)
return string.match(filename, "(.+)/[^/]*%.%w+$")
end
local
function strippath(filename)
return string.match(filename, ".+/([^/]*%.%w+)$")
end
local
function stripextension(filename)
local idx = filename:match(".+()%.%w+$")
if(idx) then
return filename:sub(1, idx-1)
else
return filename
end
end
function addmodulepath(path)
-- add to package paths (if not already present)
if not string.find(package.path, path, 0, true) then
package.path = string.format("%s/?.lua;%s", path, package.path)
package.path = string.format("%s/?/init.lua;%s", path, package.path)
package.cpath = string.format("%s/?.so;%s", path, package.cpath)
end
end
local
function setup_path()
local pwd = exec("pwd")
local root = arg[0]
if(root and stripfilename(root)) then
root = stripfilename(root) .. "/"
else
root = ""
end
local script_path
local path
if(root:sub(1, 1) == "/") then
script_path = root
path = string.format("%s%s", root, "modules")
else
script_path = string.format("%s/%s", pwd, root)
path = string.format("%s/%s%s", pwd, root, "modules")
end
return script_path:sub(1, script_path:len()-1)
end
---------------------------------------------------------------
-- Script Initialization
script = {}
script.path = setup_path()