Compare commits

...

4 Commits

Author SHA1 Message Date
415985d08c
make silently be default 2025-02-12 17:00:34 +01:00
d6c3cd6387
set default editor 2025-02-12 16:51:02 +01:00
4c3d51ff83
use parallel execution by default 2025-02-12 16:49:10 +01:00
8f3da4558f
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.
2025-02-12 16:47:47 +01:00

View File

@ -1,3 +1,6 @@
MAKEFLAGS += -j
MAKEFLAGS += -s
EDITOR ?= vi
FZF != command -v sk || command -v fzy || command -v fzf || \
{ echo install a fuzzy finder && exit 1 ;}
@ -10,25 +13,36 @@ articles != find * -type f -name "*.md"
categories != ls -d */
db.rec: $(articles)
databases = $(patsubst %/, .dbs/%.rec, $(categories))
default += $(databases)
$(databases): .dbs/%.rec: %/ | .dbs/
$(info making $(@F))
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 \
recset $@ -e "title = '$${provider}'" -f provides -a "$${title}" ;\
done ;\
done
$(info Created main database: $@)
recfix --sort $@
default += db.rec