aboutgitcode
path: root/web/demo.sh
blob: 5d3b31aa702ec4f36aa182f96aec286c6d7fc7ae (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                    
                                    



                                          












                                                                           
                                                        











                                                                  



















                                                                              
                                                                              

                                             

































                                                                                


                                                          






































                                                                          
    
#!/bin/sh -ef
#
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# mbuto - Minimal Builder Using Terse Options
#
# web/demo.sh: Prepare asciinema(1) demos and upload them to website
# 
# Copyright (c) 2022 Red Hat GmbH
# Author: Stefano Brivio <sbrivio@redhat.com>

setup_common() {
	tmux new-session -d -s mbuto
	tmux send-keys -t mbuto 'PS1="$ "'
	tmux send-keys -t mbuto C-m
	tmux send-keys -t mbuto clear
	tmux send-keys -t mbuto C-m

	tmux set -t mbuto window-status-format '#W'
	tmux set -t mbuto window-status-current-format '#W'
	tmux set -t mbuto status-left ''
	tmux set -t mbuto window-status-separator ''

	tmux set -t mbuto window-status-style 'bg=colour1 fg=colour15 bold'
	tmux set -t mbuto status-right ''
	tmux set -t mbuto status-style 'bg=colour1 fg=colour15 bold'
	tmux set -t mbuto status-right-style 'bg=colour1 fg=colour15 bold'
}

SCRIPT_base='
kvm -kernel /boot/vmlinuz-$(uname -r) -initrd $(mbuto) \
	-nodefaults -nographic -append console=ttyS0 -serial stdio
##
echo Hello from the guest!
#
'

SCRIPT_kselftests='
cd ../net-next
ls
#
make -j $(nproc)
################

kvm -kernel arch/x86/boot/bzImage -initrd $(mbuto -p kselftests -C timens) \
  -m 4096 -cpu host -nodefaults -nographic -append console=ttyS0 -serial stdio
####################
@
#####
reset
##

mbuto -f test.img -p kselftests -T timers:rtcpie
#################
kvm -kernel arch/x86/boot/bzImage -initrd test.img \
  -m 4096 -cpu host -nodefaults -nographic -append console=ttyS0 -serial stdio
#####
@
#######################
reset
##

kvm -kernel arch/x86/boot/bzImage -initrd $(mbuto -p kselftests) \
  -m 4096 -cpu host -nodefaults -nographic -append console=ttyS0 -serial stdio
#############################################
@
################################################################################
'

setup_base() {
	tmux rename-window -t mbuto 'Basic usage'
}

setup_kselftests() {
	tmux rename-window -t mbuto 'Running Linux kernel selftests'
}

cmd_write() {
	__str="${@}"
	while [ -n "${__str}" ]; do
		__rem="${__str#?}"
		__first="${__str%"$__rem"}"
		if [ "${__first}" = ";" ]; then
			tmux send-keys -t mbuto -l '\;'
		else
			tmux send-keys -t mbuto -l "${__first}"
		fi
		sleep 0.05 || :
		__str="${__rem}"
	done
	sleep 2
	tmux send-keys -t mbuto "C-m"
}

script() {
	IFS='
'
	for line in $(eval printf '%s\\\n' \$SCRIPT_${1}); do
		unset IFS
		case ${line} in
		"@")	tmux send-keys -t mbuto C-m	;;
		"#"*)	sleep ${#line}			;;
		*)	cmd_write "${line}"		;;
		esac
		IFS='
'
	done
	unset IFS
}

teardown_base() {
	:
}

teardown_kselftests() {
	:
}

teardown_common() {
	sleep 5
	tmux kill-session -t mbuto
	sleep 5
}

printf '\e[8;22;80t'

for demo in base kselftests; do
	setup_common
	eval setup_${demo}
	asciinema rec --overwrite ${demo}.cast -c 'tmux attach -t mbuto' &
	sleep 1

	tmux send-keys -t mbuto -l 'reset'
	tmux send-keys -t mbuto C-m
	sleep 1
	tmux refresh-client

	script ${demo}
	teardown_common
	eval teardown_${demo}

	gzip -fk9 ${demo}.cast
done