-
Notifications
You must be signed in to change notification settings - Fork 0
/
LoadGen.lua
65 lines (49 loc) · 1.69 KB
/
LoadGen.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
assert(arg and arg[0], "You ran this script incorrectly.")
--Get the location of our modules relative to here.
local baseDir = arg[0]:match("^(.*[\\/])")
baseDir = baseDir or "./"
assert(baseDir, arg[0] .. " No directory")
--Fixup the package path to be relative to this directory.
package.path = baseDir .. "modules/?.lua;" .. package.path
--Make a function to get the correct directory name.
function SysRelPath(relativePath)
return baseDir .. relativePath
end
FixupPath = SysRelPath --Older name.
local opts = require "GetOptions"
local Specs = require "Specs"
local Styles = require "Styles"
local LoadSpec = require "LoadLuaSpec"
local util = require "util"
--Get the options.
local status, options = pcall(opts.GetOptions, arg)
if(not status) then
io.stdout:write(options, "\n")
return
end
--Load the spec data.
local spec = Specs.GetSpec(options.spec)
local specData = spec.LoadSpec()
--Verify that every extension in `options.extensions` is a real extension.
local badExts = {}
for _, extName in ipairs(options.extensions) do
if(not specData.extdefs[extName]) then
badExts[#badExts + 1] = extName
end
end
if(#badExts > 0) then
io.stdout:write("The following extensions are not in the spec ", options.spec, ":\n")
for _, extName in ipairs(badExts) do
io.stdout:write("\t", extName, "\n")
end
return
end
--Extract the path and base-filename from the filename.
local simplename, dir = util.ParsePath("GLLoader")
dir = dir or "./"
assert(simplename,
"There is no filename in the path 'GLLoader'")
local style, structure = Styles.GetStyle(options.style)
--Compute the filename, minus style-specific suffix.
local basename = dir .. simplename
structure.Proc(basename, style, specData, spec, options)