squish.lua

Sat, 25 Jul 2009 03:11:35 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Sat, 25 Jul 2009 03:11:35 +0100
changeset 4
9806107f59ea
parent 0
b119b560ca3d
child 10
d5a4aabb104b
permissions
-rwxr-xr-x

squish.lua: Use --enable-debug flag to decide whether to enable debug options

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
4
9806107f59ea squish.lua: Use --enable-debug flag to decide whether to enable debug options
Matthew Wild <mwild1@gmail.com>
parents: 0
diff changeset
32 local enable_debug = opts.enable_debug;
0
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!");

mercurial