blob: 70cb9b5b26cb5bcf3cfa24ddd15c791248f64f15 (
plain)
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
|
#!/bin/bash
echo
echo " _ _ _ "
echo " ___(_) __ _| (_)_ __ __ _ ___ "
echo " |_ | |/ _' | | | '_ \ / _' / __| "
echo " / /| | (_| | | | | | | (_| \__ \ "
echo " /___|_|\__, |_|_|_| |_|\__, |___/ "
echo " |___/ |___/ "
echo
# Capture terminal escape sequences (ANSI) for formatting
fmt_err=$( tput setaf 1 ) # red foreground
fmt_yay=$( tput setaf 2 ) # green foreground
fmt_off=$( tput sgr0 ) # reset colors/effects
function check_it {
source_file=$1
correct_output=$2
hint=$3
# Compile/run the source and capture the result and exit value
cmd="zig run $source_file"
echo "$ $cmd"
result=$($cmd 2>&1)
result_status=$?
# Echo the result to the screen so user can see what their program does
echo "$result"
if [[ $result_status -ne 0 ]]
then
echo
printf "${fmt_err}Uh oh! Looks like there was an error.${fmt_off}\n"
if [[ ! -z "$hint" ]]
then
echo "$hint"
fi
echo
echo "Edit '$source_file' and run me again."
echo
exit 1
fi
# Wildcards to be lenient with anything AROUND the correct output
if [[ "$result" == *$correct_output* ]]
then
printf "${fmt_yay}** PASSED **${fmt_off}\n"
else
printf "${fmt_err}It seems to compile, but I wanted to see '$correct_output'.${fmt_off}\n"
echo
exit 1
fi
}
check_it 01_hello.zig "Hello world" "Note the error: the source file has a hint for fixing 'main'."
check_it 02_std.zig "Standard Library"
echo
echo " __ __ _ "
echo " \ \ / __ _ _ _| | "
echo " \ V / _' | | | | | "
echo " | | (_| | |_| |_| "
echo " |_|\__,_|\__, (_) "
echo " |___/ "
echo
echo "You've completed all of the Ziglings exercises!"
echo
|