You might only allow defaults to be added to the end, or you
might allow goals to be called with labelled parameters.
-Fix: You must use 'all ()' on the command line.
-
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.
+timestamp changes (what about things which are not is-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).
Conditional sections (same as "ifeq" etc in make).
{ .... }
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
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.
+
+Implement make-like “eval” function (similar to include directive,
+but it evaluates the output of a function as Goalfile syntax).
+
+Implement make-like “origin” function. This is easy but it requires
+us to track to the origin of definitions which we do not do at
+the moment.
+
+Some kind of “source” directive. If goals sees this then
+it automatically sources the parameter (a shell script) into
+every shell command.