X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=TODO;h=3f3257184644beb72cd8446f339b663bf3f2817d;hb=ca19d10dfd7e3e3c690f5d618d5fc24a0d14accc;hp=5db7e8d0da1fe225db5412ffcab803ddcd8a3eda;hpb=976bb1b35d77f3058df3c25c1e2a4767147d606b;p=goals.git diff --git a/TODO b/TODO index 5db7e8d..3f32571 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,5 @@ -'let :=' for immediate evaluation in assignment. Does this work -for included files? +'let :=' for immediate evaluation in assignment. Does this work for +included files? Also ?= to only override if not already defined. Default parameters, ie: goal foo (name, release = true) = ... @@ -8,6 +8,34 @@ might allow goals to be called with labelled parameters. Fix: You must use 'all ()' on the command line. -"Quiet" code. Generally {CODE} sections in user files should be -echos, and those in stdlib should run silently (except if debugging). -Maybe we should have a quiet keyword to indicate this? +Deleting target files if goals is interrupted, but only if the +timestamp changes (what about non-*files?). Also: atomic code. This +will delete the target if the code doesn't run to completion. (make +doesn't do this, but probably it should). + +Parallel builds: On failure, wait for other jobs to finish. + +Conditional sections (same as "ifeq" etc in make). + +Let within functions and goals, eg: + function foo () = + let temp = "%bar%baz"; + { .... } +Unclear if this would be helpful or not. + +Implement more make functions, see: +https://www.gnu.org/software/make/manual/html_node/Functions.html#Functions + +Make re-execs itself if the Makefile (or any include) changes, and +goals should do something similar. See: +https://www.gnu.org/software/make/manual/html_node/Remaking-Makefiles.html + +Code should be an expression, eg this ought to work: +let foo = { echo "hello" } +and/or anonymous functions: +let foo = function (arg) { ... } + +Infinite loop when you have this goal: +goal pod2man (page, section) = "docs/%page.%section" : "docs/%page.pod" { ... } +This is caused by %section matching "pod" so the rule is called +again, even if the local file docs/%page.pod actually exists.