40b6897f4f
This adds a resync.sh script that handles most of the resyncing process: copying new sources, regenerating help, and staging for commit. I also took this opportunity to make the process more efficient and consistent by only selecting the types of files that we care about and ignoring any autogenerated temporary files that may be in the upstream tree. Change-Id: Ib0803462684b8ae3b40eec3742944e5bdb28508e
94 lines
2 KiB
Bash
Executable file
94 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
# usage: ./genhelp.sh
|
|
#
|
|
# Expects halibut to be installed in $PATH:
|
|
# https://www.fwei.tk/git/halibut
|
|
#
|
|
# Also requires host CC and lz4 library to be available
|
|
|
|
halibut --text src/puzzles.but
|
|
|
|
# preprocess the input
|
|
|
|
# strip leading whitespace
|
|
cat puzzles.txt | awk '{$1=$1; print}' > puzzles.txt.tmp
|
|
|
|
# cut at "Appendix A"
|
|
cat puzzles.txt.tmp | awk 'BEGIN { a=1; } /Appendix A/ { a = 0; } a==1' > puzzles.txt
|
|
|
|
rm puzzles.txt.tmp
|
|
|
|
# now split into different files
|
|
mkdir -p help
|
|
|
|
cat puzzles.txt | awk '
|
|
BEGIN {
|
|
file = "none";
|
|
}
|
|
|
|
/#Chapter/ {
|
|
if($0 !~ / 1:/ && $0 !~ / 2:/)
|
|
{
|
|
if(file != "none")
|
|
print ";" > file;
|
|
file = "help/"tolower($3$4)".c";
|
|
|
|
if($3 ~ "Rectangles")
|
|
file = "help/rect.c";
|
|
|
|
print "/* auto-generated by genhelp.sh (intermediate file) */" > file;
|
|
print "/* DO NOT EDIT! */" > file;
|
|
print "const char help_text[] = " > file;
|
|
}
|
|
}
|
|
|
|
file != "none" {
|
|
/* escape backslashes */
|
|
gsub(/\\/,"\\\\");
|
|
|
|
if($0 ~ /\$/)
|
|
print("WARNING: text contains dollar sign: change special character!" $0);
|
|
|
|
/* replace underscores with dollar signs (not used in any of the puzzles docs) */
|
|
if($0 ~ /http/)
|
|
gsub(/_/,"$");
|
|
|
|
begin = "";
|
|
|
|
last = substr($0, length($0), 1);
|
|
|
|
/* hack for chapter titles */
|
|
if(substr($0, 1, 1) == "#" || length($0) == 0)
|
|
term=" \\n";
|
|
else
|
|
term = " ";
|
|
|
|
/* custom code markup (halibut modification required) */
|
|
if(substr($0, 1, 2) == ">>")
|
|
{
|
|
gsub(/>> /,"");
|
|
term = " \\n";
|
|
}
|
|
|
|
print "\"" begin $0 term "\"" > file;
|
|
}
|
|
|
|
END {
|
|
print ";" > file;
|
|
}
|
|
'
|
|
|
|
# now compress
|
|
for f in help/*.c
|
|
do
|
|
echo "Compressing: "$f
|
|
gcc compress.c $f -llz4 -o compress -O0
|
|
./compress > $f.tmp
|
|
mv $f.tmp $f
|
|
done
|
|
|
|
# generate quick help from all the .R files
|
|
cat src/*.R | awk 'print_next { print_next = 0; print; } /!begin/ && />/ && /gamedesc.txt/ { print_next = 1; }' | awk -F ":" '{print "const char quick_help_text[] = \""$5"\";" >> "help/"$1".c" }'
|
|
|
|
rm puzzles.txt
|
|
rm compress
|