add very basic build step
parent
a432b1396b
commit
ed2ef6974c
@ -0,0 +1,82 @@
|
|||||||
|
local fs, cwd = (function()
|
||||||
|
local ok, ocfs = pcall(require, 'filesystem')
|
||||||
|
if ok then
|
||||||
|
return ocfs, require('shell').getWorkingDirectory()
|
||||||
|
end
|
||||||
|
|
||||||
|
--otherwise, implement the functions we need on top of LuaFileSystem
|
||||||
|
local lfs = require('lfs')
|
||||||
|
local fs = {}
|
||||||
|
function fs.list(path)
|
||||||
|
local entries = {}
|
||||||
|
for name in lfs.dir(path) do
|
||||||
|
if name ~= '.' and name ~= '..' then
|
||||||
|
if lfs.attributes(path .. '/' .. name, 'mode') == 'directory' then
|
||||||
|
name = name .. '/'
|
||||||
|
end
|
||||||
|
table.insert(entries, name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return entries
|
||||||
|
end
|
||||||
|
function fs.makeDirectory(path)
|
||||||
|
--drop the third return on error
|
||||||
|
local ok, err, code = lfs.mkdir(path)
|
||||||
|
if ok then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return nil, string.format('%s (error %d)', err, code)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return fs, '.' --lfs will handle this properly
|
||||||
|
end)()
|
||||||
|
|
||||||
|
local stderr = io.stderr or io.error() --openos does this weirdly
|
||||||
|
|
||||||
|
--configuration
|
||||||
|
local outdir = 'dist/'
|
||||||
|
|
||||||
|
--argument parsing
|
||||||
|
do
|
||||||
|
local args = {...}
|
||||||
|
for i, arg in ipairs(args) do
|
||||||
|
if arg == '-h' or arg == '--help' then
|
||||||
|
print('usage: lua build.lua [-h|--help]')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--for now, error on any arguments (after parsing -h/--help)
|
||||||
|
if args[1] then
|
||||||
|
stderr:write(string.format('error: unexpected argument %q\n', args[1]))
|
||||||
|
os.exit(64)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function exportFile(srcpath, dstpath)
|
||||||
|
if not dstpath then
|
||||||
|
dstpath = outdir .. srcpath
|
||||||
|
end
|
||||||
|
local srcf = assert(io.open(srcpath))
|
||||||
|
local dstf = assert(io.open(dstpath, 'w'))
|
||||||
|
|
||||||
|
--for now, run a very minimal minifier
|
||||||
|
for line in srcf:lines() do
|
||||||
|
local comment = line:find('--', nil, true)
|
||||||
|
if comment then
|
||||||
|
assert(line:sub(comment, comment + 3) ~= '--[', 'TODO block comments')
|
||||||
|
line = line:sub(1, comment-1)
|
||||||
|
end
|
||||||
|
line = assert(line:match('^%s*(.-)%s*$'))
|
||||||
|
if #line > 0 then
|
||||||
|
dstf:write(line, '\n')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
fs.makeDirectory(cwd .. '/' .. outdir)
|
||||||
|
exportFile('boot.lua')
|
||||||
|
|
||||||
|
-- vi: set ts=2:
|
Loading…
Reference in New Issue