I've been using #Knitfile for a while and it's pretty good.
https://zyedidia.github.io/blog/posts/3-knit-better-make/
But now I get annoyed with Lua `require()` which doesn't allow arbitrary path. I think replacing Lua with #Rhai script should solve the problem. Unlike gopher-lua, rhai provide a way to customize the syntax. However, the whole project (:knit) need to be rewritten in Rust 😅