code-preloader/misc/record-output.sh

373 lines
6.7 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# shellcheck disable=SC2317
set -u
# parameters
konsole=org.kde.konsole-2913641
session=2
SLEEP_LONG_READ="3"
SLEEP_SHORT_READ="2"
SLEEP_TRANSITION="0.4"
SLEEP_COMMAND_BEFORE="0.4"
SLEEP_COMMAND_AFTER="0.65"
SLEEP_MICROPAUSE="0.25"
SLEEP_TYPESPEED="0.10"
qtype() {
qdbus "$konsole" "/Sessions/$session" sendText "$1"
}
qrun() {
qdbus "$konsole" "/Sessions/$session" runCommand "$1"
}
qctrlb() {
qdbus "$konsole" "/Sessions/$session" sendText $'\002'
}
qctrlc() {
qdbus "$konsole" "/Sessions/$session" sendText $'\003'
}
qtype_slow() {
echo -n "$1" \
| sed 's/\(.\)/\1\n/g' \
| while IFS="" read -r X ; do qtype "$X" ; sleep "$SLEEP_TYPESPEED" ; done
}
tmux_key() {
qctrlb
sleep 0.5
qtype "$1"
}
qtype_arrow_up() {
qtype $'\033'
qtype "[A"
}
qtype_arrow_down() {
qtype $'\033'
qtype "[B"
}
qtype_arrow_left() {
qtype $'\033'
qtype "[D"
}
qtype_arrow_right() {
qtype $'\033'
qtype "[C"
}
## cleanup
qctrlc
tmux_key "d"
qctrlc
qrun "clear"
sleep "$SLEEP_MICROPAUSE"
qrun "cd ~/src/mfm"
sleep "$SLEEP_MICROPAUSE"
qrun "cp doc/demo.mfm.yml ~/.config/mfm.yml"
sleep "$SLEEP_MICROPAUSE"
qrun "rm -f output.rec"
sleep "$SLEEP_MICROPAUSE"
qrun "tmux kill-session -t demo"
sleep "$SLEEP_MICROPAUSE"
qrun "mkdir -p /home/vagrant/mnt"
sleep "$SLEEP_MICROPAUSE"
qrun "fusermount -u \"/home/vagrant/mnt/Public - Remote Debian Repository\""
sleep "$SLEEP_MICROPAUSE"
qrun "rm -fr \"/home/vagrant/mnt/Public - Remote Debian Repository\""
sleep "$SLEEP_MICROPAUSE"
qrun "# cleanup done"
sleep "$SLEEP_LONG_READ"
## reset demo environment
qrun "tmux new -s demo"
sleep "$SLEEP_MICROPAUSE"
tmux_key "c"
qrun "cd ~/src/mfm"
sleep "$SLEEP_MICROPAUSE"
qrun "mdp --noslidenum doc/SCRIPT.md"
sleep "$SLEEP_MICROPAUSE"
tmux_key "c"
qrun "export PATH=\$PATH:~/src/mfm/bin"
sleep "$SLEEP_MICROPAUSE"
qrun "export FZF_DEFAULT_OPTS=\"--height 40% --layout=reverse --border\""
sleep "$SLEEP_MICROPAUSE"
qrun "alias cat=\"batcat -p\""
sleep "$SLEEP_MICROPAUSE"
qrun "cd ~/src/mfm"
sleep "$SLEEP_MICROPAUSE"
qrun "clear"
sleep "$SLEEP_MICROPAUSE"
tmux_key "1"
tmux_key ":"
qrun "set -g status off"
sleep "$SLEEP_MICROPAUSE"
tmux_key "d"
## record
qrun "asciinema rec --cols 80 --rows 24 -c 'tmux attach' output.rec"
# slide 1 (title)
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 2 (config file)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# cmd 2 (show config file)
qtype " "
sleep "$SLEEP_TRANSITION"
tmux_key "2"
qtype_slow "cat "
sleep "$SLEEP_MICROPAUSE"
qtype_slow "~/.config"
sleep "$SLEEP_MICROPAUSE"
qtype_slow "/mfm.yml"
sleep "$SLEEP_MICROPAUSE"
qrun ""
sleep "$SLEEP_LONG_READ" # double
sleep "$SLEEP_LONG_READ"
tmux_key "1"
# slide 3 (config options 1)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 4 (config options 2)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 5 (preparation - mnt)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# demo 5 (show mnt)
qtype " "
sleep "$SLEEP_TRANSITION"
tmux_key "2"
qtype_slow "cd "
sleep "$SLEEP_MICROPAUSE"
qtype_slow "~/mnt"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
qtype_slow "ls"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_LONG_READ"
tmux_key "1"
# slide 6 (preparation - empty mnt!)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 7 (usage - run)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# demo 7 (run mfm)
qtype " "
sleep "$SLEEP_TRANSITION"
tmux_key "2"
qtype_slow "m"
sleep "$SLEEP_MICROPAUSE"
qtype_slow "f"
sleep "$SLEEP_MICROPAUSE"
qtype_slow "m"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_arrow_down
sleep "$SLEEP_MICROPAUSE"
qtype_arrow_down
sleep "$SLEEP_MICROPAUSE"
qtype_arrow_up
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_LONG_READ"
tmux_key "1"
# slide 8 (usage - what?)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# demo 8 (usage - what : show mnt)
tmux_key "2"
qtype_slow "ls"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_slow "cd \"Pub"
sleep "$SLEEP_MICROPAUSE"
qtype "lic - Remote Debian Repository\""
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
qtype_slow "ls"
sleep "$SLEEP_MICROPAUSE"
qtype $'\015'
sleep "$SLEEP_SHORT_READ"
qtype_slow "cd pool"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
qtype_slow "ls"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_slow "cd main"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
qtype_slow "ls"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_LONG_READ"
tmux_key "1"
# slide 9 (usage - explanation)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 10 (usage - prepare for detach)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# demo 10 (run mfm for detach)
qtype " "
sleep "$SLEEP_TRANSITION"
tmux_key "2"
qtype_slow "cd ~/mnt/"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
qtype_slow "m"
sleep "$SLEEP_MICROPAUSE"
qtype_slow "f"
sleep "$SLEEP_MICROPAUSE"
qtype_slow "m"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_arrow_down
sleep "$SLEEP_MICROPAUSE"
qtype_arrow_down
sleep "$SLEEP_MICROPAUSE"
qtype_arrow_up
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_LONG_READ"
qtype_slow "ls"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_slow "cd \"Pub"
sleep "$SLEEP_MICROPAUSE"
qtype "lic - Remote Debian Repository\""
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_slow "ls"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_SHORT_READ"
qtype_slow "ls -la"
sleep "$SLEEP_COMMAND_BEFORE"
sleep "$SLEEP_COMMAND_BEFORE"
qtype $'\015'
sleep "$SLEEP_COMMAND_AFTER"
sleep "$SLEEP_LONG_READ"
tmux_key "1"
# slide 11 (usage - detached)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 12 (conclusion)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 13 (conclusion)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 14 (conclusion)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# slide 15 (conclusion)
qtype " "
sleep "$SLEEP_TRANSITION"
sleep "$SLEEP_LONG_READ"
# detach and clean
tmux_key "d"
qrun "tmux kill-session -t demo"
qrun "termtosvg render output.rec output.svg"
qrun "# success!"
exit 0