summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/genhelp.sh
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2017-06-03 13:45:07 -0400
committerFranklin Wei <git@fwei.tk>2017-06-03 13:45:07 -0400
commit552a271c6fea8d36390858ca6d12c4c98f663002 (patch)
tree046ea6cdc0cbadae014715c02af6ada4e966a92c /apps/plugins/puzzles/genhelp.sh
parentcefbde0bbb5f90523233a56ca6c0b0699b4b359e (diff)
downloadrockbox-552a271c6fea8d36390858ca6d12c4c98f663002.tar.gz
rockbox-552a271c6fea8d36390858ca6d12c4c98f663002.zip
puzzles: remove redundant help content
It used to be that each puzzle had a complete copy of the entire puzzles manual and the "quick help" text for every single puzzle. This was obviously a waste, so now each puzzle only has the sections of the manual that apply to it, saving about 100KB or so per puzzle. This also has the added benefit of shrinking binary size enough to allow full help support on the c200v2, which has been enabled. Change-Id: I76c799635de058e4a48e0c18b79537857af7cf85
Diffstat (limited to 'apps/plugins/puzzles/genhelp.sh')
-rwxr-xr-xapps/plugins/puzzles/genhelp.sh70
1 files changed, 35 insertions, 35 deletions
diff --git a/apps/plugins/puzzles/genhelp.sh b/apps/plugins/puzzles/genhelp.sh
index f243a1d5f6..293c58bd2b 100755
--- a/apps/plugins/puzzles/genhelp.sh
+++ b/apps/plugins/puzzles/genhelp.sh
@@ -1,5 +1,5 @@
1#!/bin/bash 1#!/bin/bash
2# usage: ./genhelp.sh > helpcontent.sh 2# usage: ./genhelp.sh
3# 3#
4# expects halibut to be installed in $PATH: 4# expects halibut to be installed in $PATH:
5# http://www.chiark.greenend.org.uk/~sgtatham/halibut 5# http://www.chiark.greenend.org.uk/~sgtatham/halibut
@@ -16,37 +16,37 @@ cat puzzles.txt.tmp | awk 'BEGIN { a=1; } /Appendix A/ { a = 0; } a==1' > puzzle
16 16
17rm puzzles.txt.tmp 17rm puzzles.txt.tmp
18 18
19cat <<EOF 19# now split into different files
20/* auto-generated by genhelp.sh */ 20mkdir -p help
21/* DO NOT EDIT! */ 21
22const int help_chapteroffsets[] = { 22cat puzzles.txt | awk 'BEGIN { file = "none"; }
23EOF 23 /#Chapter/ {
24 24 if($0 !~ / 1:/ && $0 !~ / 2:/)
25# generate chapter offset list 25 {
26cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' 26 if(file != "none")
27 27 print ";" > file;
28cat <<EOF 28 file = "help/"tolower($3$4)".c";
29}; 29 if($3 ~ "Rectangles")
30 30 file = "help/rect.c";
31const char help_text[] = 31 print "/* auto-generated by genhelp.sh */" > file;
32EOF 32 print "/* DO NOT EDIT! */" > file;
33 33 print "const char help_text[] = " > file; }
34# get starting byte offset 34 }
35start=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; print x + 1; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | head -n 1` 35 file != "none" {
36 36 gsub(/\\/,"\\\\");
37# generate content 37 if($0 !~ /Chapter/ && substr($0, 1, 1) == "#")
38cat puzzles.txt | tail -c +$start | awk '{gsub(/\\/,"\\\\"); if($0 !~ /Chapter/ && substr($0, 1, 1) == "#") begin = "\\n"; else begin = ""; last = substr($0, length($0), 1); if(length($0) == 0 || last == "|" || last == "-" || (term == "\\n" && last == "3")) term="\\n"; else term = " "; print "\"" begin $0 term "\"";}' 38 begin = "\\n";
39 39 else begin = "";
40cat <<EOF 40 last = substr($0, length($0), 1);
41; 41 if(length($0) == 0 || last == "|" || last == "-" || (term == "\\n" && last == "3"))
42 42 term="\\n";
43EOF 43 else term = " ";
44 44 print "\"" begin $0 term "\"" > file;
45# length of longest chapter (not including null) 45 }
46maxlen=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | awk 'BEGIN { max = 0; last = 0; } { if($0 - last > max) max = $0 - last; last = $0; } END { print max }'` 46 END {
47 47 print ";" > file;
48# remember number of chapters 48 }
49num=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | wc -l` 49'
50 50
51echo "const int help_maxlen = "$maxlen";" 51# generate quick help from gamedesc.txt
52echo "const int help_numchapters = "$num";" 52cat src/gamedesc.txt | awk -F ":" '{print "const char quick_help_text[] = \""$5"\";" >> "help/"$1".c" }'