code / bp

Lines4.3K C3.3K Markdown541 YAML273 make110 Shell77 Lua54
(25 lines)
1 #!/bin/sh
2 # Run a small tutorial on basic bp functionality
4 tmpfile="$(mktemp /tmp/bp-tutorial.XXXXXX)"
5 trap 'rm "$tmpfile"' EXIT
7 for t in $([ $# -gt 0 ] && echo "$@" || ls -v tests/*.sh); do
8 echo
9 printf "\033[1m"
10 sed -n 's/^# //p' "$t"
11 printf "\033[m"
12 printf "\033[33;1mGiven these lines: Give this output:\033[m\n"
13 diff -y -W60 --color=always "${t/.sh/.in}" "${t/.sh/.out}"
14 while true; do
15 printf "\n\033[1m$ bp \033[m"
16 read -r pat
17 pat="${pat%\'}"
18 printf "\033[0;2mRunning: \033[32m%s\033[m\n\n" "bp '$pat'"
19 printf "\033[33;1mExpected output: Your pattern's output:\033[m\n"
20 bp "$pat" < "${t/.sh/.in}" 2>"$tmpfile" | diff -y -W60 --color=always "${t/.sh/.out}" - && break
21 cat "$tmpfile"
22 printf "\n\033[0;1;31mSorry, try again!\033[m\n"
23 done
24 printf "\n\033[0;1;32mCorrect!\033[m\n"
25 done