summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile91
1 files changed, 91 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..3469dd04
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,91 @@
+# This file is in the public domain.
+
+include config.mk
+
+# All: build HTML pages in all languages and compile the
+# TypeScript logic in web-common.
+.PHONY: all
+all: locale template
+ (cd web-common && $(tsc))
+ ($(cp) rendered/static/robots.txt rendered/robots.txt)
+ ($(cp) rendered/static/robots.txt rendered/dist/robots.txt)
+ (for lang in en de fr it es ru pt ; do \
+ $(cp) rendered/static/robots.txt rendered/$$lang/robots.txt; \
+ done)
+ ($(python) inc/make_sitemap.py -i rendered)
+ ($(cp) sitemap.xml rendered/sitemap.xml)
+ ($(cp) sitemap.xml rendered/en/sitemap.xml)
+ (for lang in en de fr it es ru pt ; do \
+ $(cp) rendered/sitemap.xml rendered/$$lang ; \
+ done)
+ ($(cp) -R images rendered/static/)
+ (for lang in en de fr it es ru pt ; \
+ do $(cp) -R images rendered/$$lang ; \
+ done)
+ (for lang in en de fr it es ru pt ; do \
+ $(cp) -R web-common rendered/$$lang ; \
+ done)
+ (cd rendered; \
+ for lang in en de fr it es ru pt; do \
+ $(cp) $$lang/rss.xml $$lang/news/rss.xml; \
+ done)
+ (for d in dist icons papers presentations ; do \
+ $(cp) -R $$d rendered/ ; \
+ done)
+ ($(cp) -R pdf rendered/static/)
+
+# Extract translateable strings from jinja2 templates.
+locale/messages.pot: template/*.j2 common/*.j2 common/*.j2.inc
+ PYTHONPATH=".:./inc" $(pybabel) extract -F locale/babel.map -o locale/messages.pot .
+
+# Update translation (.po) files with new strings.
+.PHONY: locale-update
+locale-update: locale/messages.pot
+ (for lang in de fr es it ru pt; do \
+ $(msgmerge) -q -U -m --previous locale/$$lang/LC_MESSAGES/messages.po locale/messages.pot ; \
+ done)
+
+ if $(grep) -nA1 '#-#-#-#-#' locale/*/LC_MESSAGES/messages.po; then $(echo) -e "\nERROR: Conflicts encountered in PO files.\n"; exit 1; fi
+
+# Compile translation files for use.
+.PHONY: locale-compile
+locale-compile:
+ (for lang in de fr it es ru pt; do \
+ $(pybabel) -q compile -d locale -l $$lang --use-fuzzy ; \
+ done)
+
+# Process everything related to gettext translations.
+.PHONY: locale
+locale: locale-update locale-compile
+
+# Run the jinja2 templating engine to expand templates to HTML
+# incorporating translations.
+template: locale-compile
+ $(python) ./make_site.py
+
+.PHONY: run
+run: all
+ $(browser) http://0.0.0.0:8000/rendered/en &
+ $(python) -m http.server
+
+ifndef variant
+$(error variant is not set)
+endif
+
+.PHONY: install
+install: all
+ $(mkdir) -p $(prefix)/$(variant)
+ $(cp) -r rendered/* $(prefix)/$(variant)/
+
+.PHONY: uninstall
+uninstall:
+ $(rm) -rf $(prefix)/$(variant)
+
+.PHONY: clean
+clean:
+ $(rm) -rf __pycache__ *.pyc *~ \.*~ \#*\#
+ $(rm) -rf en/ de/ fr/ it/ es/ ru/
+ $(rm) -rf rendered/
+
+submodules/update:
+ $(git) submodule update --recursive --remote