diff options
author | Arun Isaac | 2023-10-15 12:13:58 +0100 |
---|---|---|
committer | Arun Isaac | 2023-10-15 12:41:39 +0100 |
commit | cb66af826596b7bfba0fa45f8eb25fcf1613bc13 (patch) | |
tree | 15631d090f37869319f3f30bd875a3af6f1a7237 /doc | |
parent | 3063c33634d4a25ba99a2c884dd8bf04e519f914 (diff) | |
download | ccwl-cb66af826596b7bfba0fa45f8eb25fcf1613bc13.tar.gz ccwl-cb66af826596b7bfba0fa45f8eb25fcf1613bc13.tar.lz ccwl-cb66af826596b7bfba0fa45f8eb25fcf1613bc13.zip |
ccwl: Make #:stderr and #:stdout first class parameters.
#:stderr and #:stdout, especially #:stdout, are commonly
required. They ought to be first class parameters and not tucked away
into #:other.
* ccwl/ccwl.scm (<command>)[stderr, stdout]: New fields.
* ccwl/ccwl.scm (command): Accept #:stderr and #:stdout as first class
parameters.
* ccwl/cwl.scm (command->cwl-scm): Serialize stderr and stdout fields.
* doc/capture-stdout.scm (print),
doc/decompress-compile-run.scm (run), doc/checksum.scm (md5sum,
sha1sum, sha256sum), doc/spell-check.scm (find-misspellings): Capture
stdout in file.
* doc/checksum.scm, doc/decompress-compile-run.scm:
* doc/ccwl.skb (Tutorial)[Capturing the standard output stream of a
command]: Document #:stdout first class parameter.
* doc/ccwl.skb (Tutorial)[Workflow with multiple steps]: Capture
stdout in explicitly named files.
* tests/ccwl.scm ("commands with non-string #:stderr parameters must
raise a &ccwl-violation condition", "commands with non-string #:stdout
parameters must raise a &ccwl-violation condition"): New tests.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/capture-stdout.scm | 3 | ||||
-rw-r--r-- | doc/ccwl.skb | 18 | ||||
-rw-r--r-- | doc/checksum.scm | 9 | ||||
-rw-r--r-- | doc/decompress-compile-run.scm | 3 | ||||
-rw-r--r-- | doc/spell-check.scm | 3 |
5 files changed, 20 insertions, 16 deletions
diff --git a/doc/capture-stdout.scm b/doc/capture-stdout.scm index b9b6774..9eb19ca 100644 --- a/doc/capture-stdout.scm +++ b/doc/capture-stdout.scm @@ -1,7 +1,8 @@ (define print (command #:inputs (message #:type string) #:run "echo" message - #:outputs (printed-message #:type stdout))) + #:outputs (printed-message #:type stdout) + #:stdout "printed-message-output.txt")) (workflow ((message #:type string)) (print #:message message)) diff --git a/doc/ccwl.skb b/doc/ccwl.skb index e910452..39116ee 100644 --- a/doc/ccwl.skb +++ b/doc/ccwl.skb @@ -1,5 +1,5 @@ ;;; ccwl --- Concise Common Workflow Language -;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2021, 2023 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of ccwl. ;;; @@ -116,8 +116,9 @@ as follows. The expected output is also shown.]) (p [Let us return to the ,(emph "Hello World") example in the previous section. But now, let us capture the standard output of the ,(code "print") command in an output object. The ccwl code is the same -as earlier with only the addition of an ,(code "stdout") type output -object to the command definition.]) +as earlier with the addition of an ,(code "stdout") type output object +and an ,(code "#:stdout") parameter specifying the name of the file to +capture standard output in.]) (scheme-source "doc/capture-stdout.scm") @@ -126,7 +127,7 @@ object to the command definition.]) ,(file "capture-stdout.cwl"), and run it using ,(code "cwltool"). We might expect something like the output below. Notice how the standard output of the ,(code "print") command has been captured in the file -,(file "51fe79d15e7790a9ded795304220d7a44aa84b48").]) +,(file "printed-message-output.txt").]) (prog :line #f (source :file "doc/capture-stdout.out"))) @@ -220,8 +221,7 @@ following output.]) (prog :line #f (source :file "doc/decompress-compile-run.out")) (p [The steps run in succession, and the stdout of the -compiled executable is in -,(file "c32c587f7afbdf87cf991c14a43edecf09cd93bf"). Success!])) +compiled executable is in ,(file "run-output.txt"). Success!])) (subsection :title [tee] (p [Next, the tee topology. The following workflow computes @@ -245,10 +245,8 @@ following output.]) (prog :line #f (source :file "doc/checksum.out")) - (p [The MD5, SHA1 and SHA256 checksums are in the files -,(file "112be1054505027982e64d56b0879049c12737c6"), -,(file "d2f19c786fcd3feb329004c8747803fba581a02d") and -,(file "0d2eaa5619c14b43326101200d0f27b0d8a1a4b1") respectively.]))) + (p [The MD5, SHA1 and SHA256 checksums are in the files ,(file +"md5"), ,(file "sha1") and ,(file "sha256") respectively.]))) (section :title [Let's write a spell check workflow] (p [Finally, let's put together a complex workflow to understand diff --git a/doc/checksum.scm b/doc/checksum.scm index 297ac14..9474964 100644 --- a/doc/checksum.scm +++ b/doc/checksum.scm @@ -1,17 +1,20 @@ (define md5sum (command #:inputs (file #:type File) #:run "md5sum" file - #:outputs (md5 #:type stdout))) + #:outputs (md5 #:type stdout) + #:stdout "md5")) (define sha1sum (command #:inputs (file #:type File) #:run "sha1sum" file - #:outputs (sha1 #:type stdout))) + #:outputs (sha1 #:type stdout) + #:stdout "sha1")) (define sha256sum (command #:inputs (file #:type File) #:run "sha256sum" file - #:outputs (sha256 #:type stdout))) + #:outputs (sha256 #:type stdout) + #:stdout "sha256")) (workflow ((file #:type File)) (tee (md5sum #:file file) diff --git a/doc/decompress-compile-run.scm b/doc/decompress-compile-run.scm index 00ad392..3513fd6 100644 --- a/doc/decompress-compile-run.scm +++ b/doc/decompress-compile-run.scm @@ -13,7 +13,8 @@ (define run (command #:inputs executable #:run executable - #:outputs (stdout #:type stdout))) + #:outputs (stdout #:type stdout) + #:stdout "run-output.txt")) (workflow ((compressed-source #:type File)) (pipe (decompress #:compressed compressed-source) diff --git a/doc/spell-check.scm b/doc/spell-check.scm index 1f05154..d5ccebb 100644 --- a/doc/spell-check.scm +++ b/doc/spell-check.scm @@ -19,7 +19,8 @@ (define find-misspellings (command #:inputs words dictionary #:run "comm" "-23" words dictionary - #:outputs (misspellings #:type stdout))) + #:outputs (misspellings #:type stdout) + #:stdout "misspelt-words")) (workflow (text-file dictionary) (pipe (tee (pipe (split-words #:text text-file) |