-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrule_yue.yue
47 lines (36 loc) · 1 KB
/
rule_yue.yue
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
-- example rule for yuescript (moonscript improvement);
-- assumes files under `(repo-root)src/`
macro raw = (code) ->
{ :code, type: "lua" }
rule "yue"
do
set_extensions ".yue"
on_build_file (target, src, opt) ->
-- prevent conflict w/yue's import statement
$raw[[
import("core.project.depend")
import("utils.progress")
]]
reldir = path.directory (path.relative src, "src")
if reldir == "."
reldir = ""
dir = path.join target\targetdir!, reldir
file = path.join dir, (path.basename src) .. ".lua"
relpath = path.relative src, "src"
os.mkdir dir
depend.on_changed (() ->
absfile = path.absolute file
old = os.cd "src"
os.setenv "LUA_PATH", "./?.lua;./?/init.lua"
os.vrunv "yue", { "-l", "-s", "-o", absfile, relpath }
os.cd old
progress.show opt.progress, "${ color.build.object }yue %s", src
), { files: src }
--[[
example use:
target "build"
do
set_kind "object"
add_rules "yue"
add_files "src/**.yue"
]]