Sat, 25 Jul 2009 03:11:08 +0100
squishy: Add some comments
0
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 | #!/usr/bin/env lua |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 | local short_opts = { v = "verbose", vv = "very_verbose", o = "output", q = "quiet", qq = "very_quiet" } |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 | opts = {}; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 | for _, opt in ipairs(arg) do |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 | if opt:match("^%-") then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 | local name = opt:match("^%-%-?([^%s=]+)()") |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 | name = (short_opts[name] or name):gsub("%-+", "_"); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 | if name:match("^no_") then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 | name = name:sub(4, -1); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 | opts[name] = false; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 | else |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 | opts[name] = opt:match("=(.*)$") or true; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 | else |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 | base_path = opt; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | if opts.very_verbose then opts.verbose = true; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | if opts.very_quiet then opts.quiet = true; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | local noprint = function () end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 | local print_err, print_info, print_verbose, print_debug = noprint, noprint, noprint, noprint; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 | if not opts.very_quiet then print_err = print; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 | if not opts.quiet then print_info = print; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 | if opts.verbose or opts.very_verbose then print_verbose = print; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 | if opts.very_verbose then print_debug = print; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 | local enable_debug = true; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 | local modules, main_files = {}, {}; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 | -- Functions to be called from squishy file -- |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 | function Module(name) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 | local i = #modules+1; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 | modules[i] = { name = name, url = ___fetch_url }; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 | return function (path) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 | modules[i].path = path; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 | function AutoFetchURL(url) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 | ___fetch_url = url; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 | function Main(fn) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 | table.insert(main_files, fn); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 | function Output(fn) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 | out_fn = fn; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 | function Option(name) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 | if opts[name] == nil then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 | opts[name] = true; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 | return function (value) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 | opts[name] = value; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 | else |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 | return function () end; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 | -- -- -- -- -- -- -- --- -- -- -- -- -- -- -- -- |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 | base_path = (base_path or "."):gsub("/$", "").."/" |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 | squishy_file = base_path .. "squishy"; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 | out_fn = opts.output or "squished.out.lua"; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 | local ok, err = pcall(dofile, squishy_file); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 | if not ok then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 | print_err("Couldn't read squishy file: "..err); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 | os.exit(1); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 | local fetch = {}; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 | function fetch.filesystem(path) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 | local f, err = io.open(path); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 | if not f then return false, err; end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 | local data = f:read("*a"); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 | f:close(); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 | return data; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 | function fetch.http(url) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 | local http = require "socket.http"; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 | local body, status = http.request(url); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 | if status == 200 then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
98 | return body; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 | return false, "HTTP status code: "..tostring(status); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 | print_info("Writing "..out_fn.."..."); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 | local f = io.open(out_fn, "w+"); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 | if opts.executable then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 | f:write("#!/usr/bin/env lua\n"); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
108 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
110 | if enable_debug then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 | f:write [[ |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 | local function ___rename_chunk(chunk, name) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 | if type(chunk) == "function" then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 | chunk = string.dump(chunk); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
115 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
116 | local intsize = chunk:sub(8,8):byte(); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
117 | local b = { chunk:sub(13, 13+intsize-1):byte(1, intsize) }; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
118 | local oldlen = 0; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 | for i = 1, #b do |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 | oldlen = oldlen + b[i] * 2^((i-1)*8); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
122 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 | local newname = name.."\0"; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
124 | local newlen = #newname; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
125 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
126 | local b = { }; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
127 | for i=1,intsize do |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
128 | b[i] = string.char(math.floor(newlen / 2^((i-1)*8)) % (2^(i*8))); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
129 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
130 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
131 | return loadstring(chunk:sub(1, 12)..table.concat(b)..newname |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
132 | ..chunk:sub(13+intsize+oldlen, -1)); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
133 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
134 | ]]; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
135 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
136 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
137 | for _, module in ipairs(modules) do |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
138 | local modulename, path = module.name, base_path..module.path; |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
139 | print_verbose("Packing "..modulename.." ("..path..")..."); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
140 | local data, err = fetch.filesystem(path); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
141 | if (not data) and module.url then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 | print_debug("Fetching: ".. module.url:gsub("%?", module.path)) |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 | data, err = fetch.http(module.url:gsub("%?", module.path)); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
144 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
145 | if data then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
146 | f:write("package.preload['", modulename, "'] = (function ()\n"); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
147 | f:write(data); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
148 | f:write("end)\n"); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
149 | if enable_debug then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
150 | f:write(string.format("package.preload[%q] = ___rename_chunk(package.preload[%q], %q);\n\n", |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
151 | modulename, modulename, "@"..path)); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
152 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
153 | else |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
154 | print_err("Couldn't pack module '"..modulename.."': "..err); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
155 | os.exit(1); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
156 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
157 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
158 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 | print_debug("Finalising...") |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
160 | for _, fn in pairs(main_files) do |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 | local fin, err = io.open(base_path..fn); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
162 | if not fin then |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
163 | print_err("Failed to open "..fn..": "..err); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
164 | os.exit(1); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
165 | else |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
166 | f:write((fin:read("*a"):gsub("^#.-\n", ""))); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
167 | fin:close(); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
168 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
169 | end |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
170 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
171 | f:close(); |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
172 | |
b119b560ca3d
squish, because libraries don't have to be tricky to package!
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
173 | print_info("OK!"); |