aboutsummaryrefslogtreecommitdiff
path: root/gen-examples.sh
diff options
context:
space:
mode:
Diffstat (limited to 'gen-examples.sh')
-rw-r--r--gen-examples.sh55
1 files changed, 55 insertions, 0 deletions
diff --git a/gen-examples.sh b/gen-examples.sh
new file mode 100644
index 00000000..d053c95b
--- /dev/null
+++ b/gen-examples.sh
@@ -0,0 +1,55 @@
+# Converts the examples in the `examples` directory into documentation in the
+# `examples` module (`src/examples/*.rs`)
+
+set -ex
+
+main() {
+ local examples=(
+ zero-tasks
+ one-task
+ two-tasks
+ preemption
+ nested
+ generics
+ full-syntax
+ )
+
+ rm -rf src/examples
+
+ mkdir src/examples
+
+ cat >src/examples/mod.rs <<'EOF'
+//! Examples
+// Auto-generated. Do not modify.
+EOF
+
+ local i=0 out=
+ for ex in ${examples[@]}; do
+ name=_${i}_${ex//-/_}
+ out=src/examples/${name}.rs
+
+ echo "pub mod $name;" >> src/examples/mod.rs
+
+ grep '//!' examples/$ex.rs > $out
+ echo '//!' >> $out
+ echo '//! ```' >> $out
+ grep -v '//!' examples/$ex.rs | (
+ IFS=''
+
+ while read line; do
+ echo "//! $line" >> $out;
+ done
+ )
+ echo '//! ```' >> $out
+ echo '// Auto-generated. Do not modify.' >> $out
+
+
+ chmod -x $out
+
+ i=$(( i + 1 ))
+ done
+
+ chmod -x src/examples/mod.rs
+}
+
+main