|
|
|
SOURCES_MOON = wildcard 'moonbuild/**.moon'
|
|
|
|
BINARY = 'bin/moonbuild.moon'
|
|
|
|
OUT_LUA = patsubst SOURCES_MOON, '%.moon', '%.lua'
|
|
|
|
BINARY_LUA = patsubst BINARY, '%.moon', '%.lua'
|
|
|
|
OUT_AMALG = 'moonbuild.lua'
|
|
|
|
|
|
|
|
public target 'clean', fn: =>
|
|
|
|
-rm '-f', OUT_LUA, BINARY_LUA
|
|
|
|
|
|
|
|
public target 'info', fn: =>
|
|
|
|
#echo "Moonscript sources:", SOURCES_MOON
|
|
|
|
#echo "Compiled lua:", OUT_LUA
|
|
|
|
|
|
|
|
public target 'compile', deps: OUT_AMALG
|
|
|
|
|
|
|
|
public target 'install', from: OUT_AMALG, out: '/usr/local/bin/moonbuild', fn: =>
|
|
|
|
dfd, err = io.open @outfile, 'w'
|
|
|
|
error err unless dfd
|
|
|
|
ifd, err = io.open @infile, 'r'
|
|
|
|
error err unless ifd
|
|
|
|
dfd\write '#!/usr/bin/env lua5.3\n'
|
|
|
|
for line in ifd\lines!
|
|
|
|
dfd\write line, '\n'
|
|
|
|
ifd\close!
|
|
|
|
dfd\close!
|
|
|
|
#echo "Installed at:", @outfile
|
|
|
|
|
|
|
|
default target OUT_AMALG, from: {BINARY_LUA, OUT_LUA}, out: OUT_AMALG, fn: =>
|
|
|
|
modules = foreach (patsubst OUT_LUA, '%.lua', '%'), => @gsub '/', '.'
|
|
|
|
-Command 'amalg.lua', '-o', @outfile, '-s', 'bin/moonbuild.lua', modules
|
|
|
|
|
|
|
|
target '%.lua', in: '%.moon', out: '%.lua', fn: =>
|
|
|
|
-moonc @infile
|