split database into parts
Each category - sound/, networking/, et c. - now has its own little database in .dbs/. So the database only recompiles based on categories, rather than a complete recompile every time a single file changes.
This commit is contained in:
parent
137466a423
commit
8f3da4558f
29
Makefile
29
Makefile
@ -10,19 +10,28 @@ articles != find * -type f -name "*.md"
|
||||
|
||||
categories != ls -d */
|
||||
|
||||
db.rec: $(articles)
|
||||
databases = $(patsubst %/, .dbs/%.rec, $(categories))
|
||||
|
||||
default += $(databases)
|
||||
|
||||
$(databases): .dbs/%.rec: %/ | .dbs/
|
||||
@mkdir -p $(@D)
|
||||
@for entry in $(shell find $< -type f -name "*.md") ; do \
|
||||
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$entry" |\
|
||||
sed -e 's/\[ //' -e 's/ \]//' |\
|
||||
tr -d '"' ;\
|
||||
printf "wordcount: %s\n" "$$(wc -w < $$entry)" ;\
|
||||
printf "file: %s\n\n" "$$entry" ;\
|
||||
done >> $@
|
||||
for entry in $(shell find $< -type f -name "*.md"); do \
|
||||
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
||||
done
|
||||
|
||||
db.rec: $(databases)
|
||||
printf '%s\n' '%rec: guide' > $@
|
||||
printf '%s\n' '%type: wordcount int' >> $@
|
||||
printf '%s\n\n' '%sort: title' >> $@
|
||||
for x in $^ ; do \
|
||||
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$x" |\
|
||||
sed -e 's/\[ //' -e 's/ \]//' |\
|
||||
tr -d '"' ;\
|
||||
printf "file: %s\n\n" "$$x" ;\
|
||||
done >> $@
|
||||
for entry in $^; do \
|
||||
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
||||
done
|
||||
cat $^ >> $@
|
||||
recsel $@ -e "requires != ''" -CR title,requires |\
|
||||
while read title requires; do \
|
||||
IFS=', ' && for provider in $$requires; do \
|
||||
|
Loading…
Reference in New Issue
Block a user