Login
7 branches 0 tags
Ben (Win10) Bytecode! aa877f1 3 years ago 537 Commits
nujel / tools / bootstrap.nuj
#!/usr/bin/env nujel
; In here we use our bootstrap runtime to load, eval and finally precompile
; the Nujel standard library, the eval is necessary so we can make use of macros
; that are not within our bootstrap runtime (which is just using an old
; precompiled stdlib).

[def environment [ω]]
[def ext-nuj? [path/ext?! "nuj"]]
[def stdlib-files [-> [directory/read-recursive "stdlib"]
                      [append [directory/read-recursive "binlib"]]
                      [flatten]
                      [filter ext-nuj?]
                      [sort]]]

; If something happens, we just print the responsible error and exit immediately,
; since we can't really fix things, we could only make things worse.
[try [\ [err]
        [println "Exception during stdlib compilation"]
        [display/error err]
        [exit 2]]
     [for-in [cur-path stdlib-files]
             [println [cat [ansi-green " [NUJ]  "] cur-path]]
             [file/compile cur-path #f environment]]]