aboutgitcode
path: root/web/demo.sh
blob: 5d3b31aa702ec4f36aa182f96aec286c6d7fc7ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/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