Generate ocamldoc, multiple documentation fixes.
[goaljobs.git] / NOTES
diff --git a/NOTES b/NOTES
index 14afc95..28ca33d 100644 (file)
--- a/NOTES
+++ b/NOTES
@@ -1,3 +1,11 @@
+## NB ##
+
+These notes reflect earlier thinking about the language and may not
+necessarily accurately describe the current goaljobs language.  Please
+read the documentation instead.
+
+## NB ##
+
 Like 'make' except:
  - Predicates can be based on arbitrary expressions, not just
    "file X is older than file Y".
@@ -10,21 +18,11 @@ Differences from 'whenjobs':
  - Goals instead of variables.
  - Persistent (across session) variables exist, but are not central.
  - Doesn't use <<..>> for shell scripts (has a function 'sh' instead).
+ - No daemon.
 
 Similarities to 'whenjobs':
  - Each shell script runs in its own temporary directory.
 
-Example Makefile rule and translation to goaljobs language:
-
-  %.o: %.c
-    cc -c $< -o $@
-
-  let goal compile c_file =
-    require (file_exists c_file);
-    let o_file = replace_substring ".c" ".o" c_file in
-    target (file_exists o_file && file_newer o_file c_file);
-    sh "cc -c %s -o %s" c_file o_file
-
 Example program:
 
   let package = "foo"
@@ -78,3 +76,16 @@ Example program:
     " package in
     require (website_updated version)
 
+This compiles down to a command line program that can be used like this:
+
+  ./compile [-flags] [goals]
+
+The goals are not enabled automatically.  You have to do something
+(simple) to publish a goal and specify how command line arguments get
+mapped to goal arguments, since the mapping is not likely to be 1-1
+strings.  In the end you can do stuff like:
+
+  ./compile all
+  ./compile clean
+  ./compile build program  # program is a parameter
+  ./compile -my-flag       # custom flags can be defined