X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=docs%2FGoalfile.pod;h=93ca2255bab0b2d8e800d812bb821dcbcc95c648;hb=0c83549ca2d42c26c0c9c2c5164247927d284adc;hp=d58993e968d13982ad37b141f69db60660e6f8a5;hpb=7c0f0662d00ba21743fdb2bc538e89065c0765ad;p=goals.git diff --git a/docs/Goalfile.pod b/docs/Goalfile.pod index d58993e..93ca225 100644 --- a/docs/Goalfile.pod +++ b/docs/Goalfile.pod @@ -12,8 +12,154 @@ Goalfile - introduction, tutorial, and reference for writing goal files =head1 REFERENCE +=head2 Standard Variables + +=head3 %stdlib + +The path to the standard library directory. This path is also +searched by default for C directives. + +=head3 %tmpdir + +The location of a temporary directory which is created by goals when +it starts and is deleted when it exits (either on success or failure). +You can use this to store any temporary files that you want +automatically cleaned up. + =head2 Standard Functions +=head3 basename (path) + +For example: + + basename ("dir/file.ext") ⇒ "file.ext" + +Returns the filename part of the path. + +=head3 dirname (path) + +For example: + + dirname ("dir/file.ext") ⇒ "dir" + +Returns the directory part of the path. + +=head3 error (msg) + +For example: + + error ("this should not happen") + +This prints the error message and causes goals to exit. + +=head3 extension (filename) + +For example: + + extension ("dir/file.ext") ⇒ "ext" + +Returns the filename extension. + +=head3 filter (pattern, list) + +For example: + + filter ("a+", ["a", "b", "ca"]) ⇒ ["a", "ca"] + +Filter a list returning only the elements that match the extended +regular expression C. + +=head3 filter-out (pattern, list) + +For example: + + filter-out ("a+", ["a", "b", "ca"]) ⇒ ["b"] + +Filter a list returning only the elements that I match the +extended regular expression C. + +=head3 head (list) + +For example: + + head (["a", "b", "c"]) ⇒ "a" + +Returns the head (first) element of the list. + +=head3 join (list1, list2) + +For example: + + join (["a", "b"], ["c", "d"]) ⇒ ["a", "b", "c", "d"] + +Concatenate C and C. It's not usually necessary to use +this function since goals automatically flattens lists within lists +into simple lists in many cases. + +=head3 last (list) + +For example: + + last (["a", "b", "c"]) ⇒ "c" + +Returns the last element of a list. + +=head3 nth (n, list) + +For example: + + nth (1, ["a", "b", "c"]) ⇒ "b" + +Returns the n’th element of a list (counting from 0). + +=head3 read (filename) + +For example: + + read ("filename") => "this is the content of filename" + +Read the contents of C and return it as a single string. +If there is a trailing C<\n> in the file it is truncated. + +=head3 readlines (filename) + +For example: + + readlines ("filename") => ["line1", "line2", "line3"] + +Read the lines in C returning a list of strings. + +=head3 realpath (filename) + +For example: + + realpath ("./tests") ⇒ "/home/user/tests" + +Run the L command to return the resolved absolute path of +the C parameter. + +=head3 sort (list) + +For example: + + sort (["c", "b", "b", "a"]) ⇒ ["a", "b", "c"] + +This takes a list of strings and sorts it, removing duplicates. + +=head3 split (string) + +For example: + + split ("-g -O2") ⇒ ["-g", "-O2"] + +Split a string using shell rules into a list of strings. This is +commonly used for splitting C provided by autoconf into a list +for use by goals: + + let CFLAGS = split ("@CFLAGS@") + goal compile (name) = + "%name.o" : "%name.c" { %CC %CFLAGS -c %< -o %@ } + =head3 subst (from, to, text) For example: @@ -25,6 +171,52 @@ This function works something like make’s C function, except that C is a regular expression, specifically a L extended regular expression. +=head3 tail (list) + +For example: + + tail (["a", "b", "c"]) ⇒ ["b", "c"] + +Returns the tail (all except first) elements of the list. + +=head3 wildcard (pattern) + +For example: + + wildcard ("*.c") ⇒ ["bar.c", "foo.c"] + +The single parameter is a wildcard which is expanded into a list of +files using ordinary globbing rules. + +=head3 wrap (wrapper, list) + +For example: + + wrap ("is-file", ["bar.c", "foo.c"]) ⇒ [is-file("bar.c"), is-file("foo.c")] + +Each element in C is wrapped into a call to C. +There are two common uses for this: either to add explicit predicates +(such as C) to a plain list of strings as in the example above; +or to turn a list of strings into a list of goal or function calls. + +=head2 Standard Shell Functions + +=head3 quoted_string + +Quote a string which will be consumed as a goal expression. This is +typically used from within goal functions which return expressions +(ie. ones which do I have an explicit C declaration). +You must not use this shell function with functions that are marked as +C or C. + +=head3 print_green + +Echo a string in green. Useful for success/OK messages. + +=head3 print_red + +Echo a string in red. Useful for error messages. + =head1 SEE ALSO L.