aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 0150d0b986da85b7f4de7be4936438acf063065b (plain)
  1. SSH_HOST = www-ruc@xayide.jones.dk
  2. SSH_BASE_PATH = public_websites/thoughtroam.abcde.../
  3. BASE_SSH = $(SSH_HOST):$(SSH_BASE_PATH)
  4. BASE_IRI = https://thoughtroam.abcdefghijklmnopqrstuvxyzæøå.dk/
  5. BASE_URI = https://thoughtroam.xn--abcdefghijklmnopqrstuvxyz-0fc0a81c.dk/
  6. #PAD_ARTICLES = worlding
  7. ARTICLES = waste worlding
  8. ONTOLOGIES = learn waste
  9. ONTOLOGIES_LEARN = tentacular bisected trap
  10. ONTOLOGIES_VERSION = 0.1.2
  11. GRAPHS = $(patsubst ex/%.ttl,%,$(wildcard ex/*.ttl))
  12. PERL_FILES = bin/biblatex-tidy bin/hedgedoc2quarto bin/xmp2rdfxml
  13. TIDY_MARKDOWN = worlding
  14. export HEDGEDOC_COOKIES_FILE = $(CURDIR)/cookies.txt
  15. export HEDGEDOC_SERVER = https://pad.degrowth.net/
  16. get_title = $(shell \
  17. roqet -q -i sparql \
  18. -e 'SELECT ?s ?o WHERE { ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?o}' \
  19. -D $(1) \
  20. | grep -Po -m1 '#>, o=string[()]"\K[^"]+')
  21. get_desc = $(shell \
  22. roqet -q -i sparql \
  23. -e 'SELECT ?s ?o WHERE { ?s <http://purl.org/dc/elements/1.1/description> ?o }' \
  24. -D $(1) \
  25. | grep -Po '#>, o=string[()]"\K[^"]+')
  26. all: preview
  27. preview:
  28. quarto preview
  29. render:
  30. quarto render
  31. publish:
  32. rsync -avH --delete-after _site/ $(BASE_SSH)
  33. prepare: \
  34. $(patsubst %,learn/%_sdm.qmd,core $(ONTOLOGIES_LEARN)) \
  35. $(patsubst %,learn/%_ttl.qmd,core $(ONTOLOGIES_LEARN)) \
  36. $(patsubst %,learn/$(ONTOLOGIES_VERSION)/%.ttl,core $(ONTOLOGIES_LEARN)) \
  37. $(foreach ext,svg tex,learn/rdfs.$(ext)) \
  38. $(foreach dia,tentacular trap all,$(foreach ext,svg tex,learn/$(dia)_rdfs.$(ext)))
  39. learn/$(ONTOLOGIES_VERSION)/%.ttl: learn/%.ttl
  40. mkdir --parents learn/$(ONTOLOGIES_VERSION)
  41. perl -gp \
  42. -e 's,\b$(subst bisected,learn2sect,$(subst tentacular,learn10tac,$(subst core,learn,$*))):,:,g;' \
  43. -e 's,\Q$(BASE_URI)stub/foaf#,http://xmlns.com/foaf/0.1/,g;' \
  44. -e 's,\Q$(BASE_URI)stub/doap#,http://usefulinc.com/ns/doap#,g;' \
  45. -e 's,purl\.org/learn/\K(?=[^\d]),$(ONTOLOGIES_VERSION)/,g;' \
  46. -e 's/\n\h+owl:imports <[^>]+> ;//g;' \
  47. -e 's/(?:\G|^)\s{4}/\t/gm;' \
  48. -e 's/^\S+\K\s+rdf:type\s+/ a /gm;' \
  49. -e 's/^\t\Krdf:type /a /gm;' \
  50. -e 's/^(?:\S+ |\t)(\S+) (?:[^\s"]+) \K(?:,\s+|;\n\t\1 )([^\s"]+) ;/, $$2 ;/gm;' \
  51. -e 's/\s+$$/\n/;' \
  52. < $< > $@
  53. learn/%_sdm.qmd: learn/$(ONTOLOGIES_VERSION)/%.ttl
  54. sdml highlight --output-format html -i learn/$*.sdm -o learn/_$*_sdm.html
  55. $(eval title = $(call get_title,$<))
  56. $(eval desc = $(call get_desc,$<))
  57. @echo '---' > $@
  58. @echo 'title: $(title)' >> $@
  59. @echo 'subtitle: SDML source' >> $@
  60. @echo '---' >> $@
  61. @echo '$(desc)' >> $@
  62. @echo >> $@
  63. @echo '{{< include _$*_sdm.html >}}' >> $@
  64. learn/%_ttl.qmd: learn/%.sdm
  65. # sdml convert -f rdf -i learn/$*.sdm | ansifilter --html --fragment --ignore-csi -o learn/_$*_ttl.html
  66. sdml convert -f rdf -i learn/$*.sdm | ansifilter --html --fragment -o learn/_$*_ttl.html
  67. $(eval title = $(call get_title,learn/$(ONTOLOGIES_VERSION)/$*.ttl))
  68. $(eval desc = $(call get_desc,learn/$(ONTOLOGIES_VERSION)/$*.ttl))
  69. @echo '---' > $@
  70. @echo 'title: $(title)' >> $@
  71. @echo 'subtitle: Turtle format' >> $@
  72. @echo '---' >> $@
  73. @echo '$(desc)' >> $@
  74. @echo >> $@
  75. @echo '<pre><code class="turtle">' >> $@
  76. @echo '{{< include _$*_ttl.html >}}' >> $@
  77. @echo '</code></pre>' >> $@
  78. cal-all: cal-fetch cal-render cal-publish
  79. cal-fetch:
  80. bin/cal-fetch.sh
  81. cal-render:
  82. bin/cal-publish.sh
  83. cal-publish:
  84. ssh $(SSH_HOST) mkdir -p $(SSH_BASE_PATH)events/
  85. rsync -avH --delete-after $(patsubst %,events/%,$(ARTICLES) superteam) $(BASE_SSH)events/
  86. pad-login:
  87. hedgedoc login --email
  88. pad-list:
  89. hedgedoc history
  90. pad-export-all: $(PAD_ARTICLES:%=pad-export-%)
  91. pad-export-worlding: ref.bib worlding/index.qmd \
  92. $(patsubst %,worlding/_%.qmd,baggrund teori_og_metode undersøgelser konklusion perspektivering kilder planer)
  93. ref.bib:
  94. hedgedoc export --md 8krqOrqnR0iAIExDTtTrxw $@
  95. perl -g -e 's/\s*\z/\n/' $@
  96. worlding/index.qmd:
  97. hedgedoc export --md MJei_2e-SjahCtmRT-xiPw $@
  98. perl -g -e 's/\s*\z/\n/' $@
  99. worlding/_baggrund.qmd:
  100. hedgedoc export --md mGHhKvXyQ5SVeTIU11isQQ $@
  101. perl -g -e 's/\s*\z/\n/' $@
  102. worlding/_teori_og_metode.qmd:
  103. hedgedoc export --md 5AbKoR-mTOij6TsCMFFDRw $@
  104. perl -g -e 's/\s*\z/\n/' $@
  105. worlding/_undersøgelser.qmd:
  106. hedgedoc export --md 5XR69V5rSEm9LwsLNtSXcQ $@
  107. perl -g -e 's/\s*\z/\n/' $@
  108. worlding/_konklusion.qmd:
  109. hedgedoc export --md ofRbx2f4QcWLR-o_kqTNCQ $@
  110. perl -g -e 's/\s*\z/\n/' $@
  111. worlding/_perspektivering.qmd:
  112. hedgedoc export --md lU8aUxCkR5GNrP-8frklFA $@
  113. perl -g -e 's/\s*\z/\n/' $@
  114. worlding/_kilder.qmd:
  115. hedgedoc export --md Jt6S4tAhQM-BUrAP-OllCg $@
  116. perl -g -e 's/\s*\z/\n/' $@
  117. worlding/_planer.qmd:
  118. hedgedoc export --md qfFl3xiaQWCbpoyNPbNsEA $@~
  119. bin/hedgedoc2quarto $@~ $@
  120. $(PAD_ARTICLES:%=pad-import-%): pad-import-%:
  121. hedgedoc import $*/index.qmd
  122. pad-import-ref:
  123. hedgedoc import ref.bib
  124. lint: lint-markdown lint-sdml
  125. lint-markdown:
  126. @mdl --ignore-front-matter --style .mdl.rb $(filter-out %/index.qmd,$(wildcard $(addsuffix /*.qmd,$(TIDY_MARKDOWN))))
  127. lint-sdml:
  128. sdml validate learn
  129. sdml validate learn10tac
  130. sdml validate learntrap
  131. sdml validate waste
  132. tidy: tidy-bibtex tidy-perl
  133. tidy-bibtex: ref.bib
  134. bin/biblatex-tidy $<
  135. tidy-perl:
  136. perltidy -b -bext='/' --profile=.perltidyrc $(PERL_FILES)
  137. $(ARTICLES:%=screening-of-%): screening-of-%:
  138. QUARTO_LOG_LEVEL=quiet \
  139. quarto render $*/index.qmd --to markdown --output - | batcat --file-name index.qmd --language markdown
  140. $(ARTICLES:%=wordcount-of-%): wordcount-of-%:
  141. QUARTO_LOG_LEVEL=quiet \
  142. quarto render $*/index.qmd --to plain --columns=9999 --output - \
  143. | perl -nE 'next if /^-*$$/; $$bilag += $$_ =~ "^Bilag\\b"; $$chars += length unless $$bilag; END { say $$chars }'
  144. $(ARTICLES:%=turtle-from-%): turtle-from-%:
  145. @bin/xmp2rdfxml _site/$*/S*.pdf \
  146. | rapper -i rdfxml -o turtle - $(BASE_IRI)$*/
  147. $(ARTICLES:%=dotgraph-from-%): dotgraph-from-%:
  148. @bin/xmp2rdfxml _site/$*/S*.pdf \
  149. | rapper -i rdfxml -o dot - $(BASE_IRI)$*/
  150. diff-all: $(ARTICLES:%=diff-of-%)
  151. $(ARTICLES:%=diff-of-%): diff-of-%: %/changes.tex
  152. $(ARTICLES:%=%/changes.tex): %/changes.tex: %/a.tex %/b.tex
  153. latexdiff --type CULINECHBAR --subtype COLOR --replace-context2cmd '' $^ > $*/changes.tex
  154. perl -i -pe 's/\[pdftex\]{changebar}/[luatex]{changebar}/g' $*/changes.tex
  155. latexmk --gg --lualatex --cd --silent --Werror $*/changes.tex
  156. find $*/ -name 'changes.*' -not -name changes.pdf -delete
  157. rm -f $^
  158. $(ARTICLES:%=%/a.tex): %/a.tex:
  159. git switch --detach $(shell git describe --tags --abbrev=0)
  160. QUARTO_LOG_LEVEL=quiet \
  161. quarto render $*/index.qmd --to pdf -M keep-tex:true --output a.pdf
  162. mv --force $*/index.tex $@
  163. rm --force _site/a.pdf
  164. $(ARTICLES:%=%/b.tex): %/b.tex:
  165. git switch -
  166. QUARTO_LOG_LEVEL=quiet \
  167. quarto render $*/index.qmd --to pdf -M keep-tex:true --output b.pdf
  168. mv --force $*/index.tex $@
  169. rm --force _site/b.pdf
  170. %/concepts.svg: %/core.sdm
  171. sdml draw --diagram concepts -i $< -f svg -o $@
  172. %/er.svg: %/core.sdm
  173. sdml draw --diagram entity-relationship -i $< -f svg -o $@
  174. %/uml.svg: %/core.sdm
  175. sdml draw --diagram uml-class -i $< -f svg -o $@
  176. %.ttl: %.sdm
  177. sdml --no-color convert -i $< -f rdf -o $@
  178. %/core.puml: %/core.ttl %/prefixes.ttl
  179. rdfpuml $<
  180. %/core.png: %/core.puml
  181. plantuml -tpng $<
  182. %/core.svg: %/core.puml
  183. plantuml -tsvg $<
  184. %/rdfs.svg: %/core.ttl
  185. rdfs2dot -f turtle $< | dot -Tsvg -o$@
  186. learn/%_rdfs.svg: learn/%.ttl
  187. rdfs2dot -f turtle $< | dot -Tsvg -o$@
  188. learn/all_rdfs.svg: learn/core.ttl $(ONTOLOGIES_LEARN:%=learn/%.ttl)
  189. rdfs2dot -f turtle $^ | dot -Tsvg -o$@
  190. %/rdfs.tex: %/core.ttl
  191. rdfs2dot -f turtle $< | dot2tex --figonly -o$@
  192. learn/%_rdfs.tex: learn/%.ttl
  193. rdfs2dot -f turtle $< | dot2tex --figonly -o$@
  194. learn/all_rdfs.tex: learn/core.ttl $(ONTOLOGIES_LEARN:%=learn/%.ttl)
  195. rdfs2dot -f turtle $^ | dot2tex --figonly -o$@
  196. ex/%.puml: ex/%.ttl ex/prefixes.ttl
  197. rdfpuml $<
  198. ex/%.png: ex/%.puml
  199. plantuml -tpng $<
  200. ex/%.svg: ex/%.puml
  201. plantuml -tsvg $<
  202. %/docs/index.html: %/core.ttl
  203. mkdir --parents $*/docs
  204. ontospy gendocs --type 2 -x -o $(CURDIR)/$*/docs $<
  205. $(ONTOLOGIES:%=view-%-concept-diagram): view-%-concept-diagram: %/concepts.svg
  206. inkview $<
  207. $(ONTOLOGIES:%=view-%-er-diagram): view-%-er-diagram: %/er.svg
  208. inkview $<
  209. $(ONTOLOGIES:%=view-%-uml-diagram): view-%-uml-diagram: %/uml.svg
  210. inkview $<
  211. $(ONTOLOGIES:%=view-%-rdfs-graf): view-%-rdfs-graf: %/core.ttl
  212. rdfs2dot -f turtle $< | xdot -
  213. $(ONTOLOGIES_LEARN:%=view-learn_%-rdfs-graf): view-learn_%-rdfs-graf: learn/%.ttl
  214. rdfs2dot -f turtle $< | xdot -
  215. view-learn_avoid-rdfs-graf: $(patsubst %,learn/%.ttl,bisected trap)
  216. rdfs2dot -f turtle $^ | xdot -
  217. view-learn_all-rdfs-graf: learn/core.ttl $(ONTOLOGIES_LEARN:%=learn/%.ttl)
  218. rdfs2dot -f turtle $^ | xdot -
  219. view-learn_worlding-rdfs-graf: $(ONTOLOGIES_LEARN:%=learn/%.ttl)
  220. rdfs2dot -f turtle $^ | xdot -
  221. #$(ONTOLOGIES:%=view-%-puml-diagram): view-%-puml-diagram: %/core.svg
  222. # inkview $<
  223. $(ONTOLOGIES:%=view-%-puml-diagram): view-%-puml-diagram: %/core.png
  224. imv-wayland $<
  225. $(GRAPHS:%=view-%-puml-diagram): view-%-puml-diagram: ex/%.png
  226. imv-wayland $<
  227. $(ONTOLOGIES:%=render-%-ontology): render-%-ontology: %/docs/index.html