-- Run this explicitly through -*- Lua -*- local lua_bin, inst_share_path, inst_bin_path, inst_mod_path, input_name, output_name = ... local input_fh = assert(io.open(input_name, "r")) local output_fh = assert(io.open(output_name, "w")) local line = input_fh:read "*l" if not inst_mod_path:match("%?") then inst_mod_path = inst_mod_path .. "/?.lua" inst_mod_path = inst_mod_path:gsub("/+", "/") end local mod_path_present = false for path_elem in package.path:gmatch("([^;]+)") do if path_elem == inst_mod_path then mod_path_present = true break end end while line do local token = line:match("^%-%- @@(.+)$") if token then if token == "SHEBANG" then output_fh:write(("#!%s\n"):format(lua_bin)) elseif token == "GITANO_LUA_PATH" then if not mod_path_present then output_fh:write(("package.path = ('%%s;%%s'):" .. "format(%q, package.path)" .. "\n"):format(inst_mod_path)) else output_fh:write("-- Gitano modules installed into " .. inst_mod_path .. "\n") end elseif token == "GITANO_BIN_PATH" then output_fh:write(("gitano.config.lib_bin_path(%q)\n"):format(inst_bin_path)) elseif token == "GITANO_SHARE_PATH" then output_fh:write(("gitano.config.share_path(%q)\n"):format(inst_share_path)) else output_fh:write("-- Unknown token: " .. token .. "\n") end else output_fh:write(line .. "\n") end line = input_fh:read "*l" end