about summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/ccwl.skb9
-rw-r--r--doc/identity-construct.scm14
2 files changed, 22 insertions, 1 deletions
diff --git a/doc/ccwl.skb b/doc/ccwl.skb
index 726b405..cb78fd5 100644
--- a/doc/ccwl.skb
+++ b/doc/ccwl.skb
@@ -382,7 +382,14 @@ the external CWL workflow.]
          (scheme-source "doc/external-cwl-workflow.scm")
          [,(file "echo.cwl") is defined as]
          ;; TODO: Syntax highlight doc/external-cwl-workflow.cwl.
-         (prog :line #f (source :file "doc/echo.cwl")))))
+         (prog :line #f (source :file "doc/echo.cwl"))))
+    (section :title [The ,(code [identity]) construct]
+             :ident "identity-construct"
+      (p [Sometimes, it is helpful for a step to simply copy all input
+keys forward to the output. This is what the ,(code [identity])
+construct is for. An example follows.]
+         (scheme-source "doc/identity-construct.scm")
+         (image :file "doc/identity-construct.png"))))
 
   (chapter :title [Contributing]
            :ident "chapter-contributing"
diff --git a/doc/identity-construct.scm b/doc/identity-construct.scm
new file mode 100644
index 0000000..626568f
--- /dev/null
+++ b/doc/identity-construct.scm
@@ -0,0 +1,14 @@
+(define print-message
+  (command #:inputs (message #:type string)
+           #:run "echo" message
+           #:outputs (printed-message #:type stdout)))
+
+(define print-file
+  (command #:inputs (file #:type File)
+           #:run "cat" file
+           #:outputs (printed-file #:type stdout)))
+
+(workflow ((message #:type string))
+  (pipe (print-message #:message message)
+        (tee (print-file #:file printed-message)
+             (identity))))