summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-10-13 12:14:16 +0530
committerFlorian Dold <florian.dold@gmail.com>2019-10-13 13:36:17 +0530
commita5d36ac29ff40b708f69baf118b1e20258e1ae91 (patch)
tree4bc2f372407fedc0bc527eb9ee19f313b1fef974
parentb7c30fdbf99628e351273dc4c3a734190d19e7ba (diff)
downloadlanding-a5d36ac29ff40b708f69baf118b1e20258e1ae91.tar.gz
landing-a5d36ac29ff40b708f69baf118b1e20258e1ae91.tar.bz2
landing-a5d36ac29ff40b708f69baf118b1e20258e1ae91.zip
simpler and better build system
Files are now generated into a build directory, they don't pollute the source tree anymore.
-rw-r--r--.gitignore18
-rw-r--r--Makefile7
-rw-r--r--Makefile.am1
-rwxr-xr-xbootstrap1
-rw-r--r--configure.ac7
-rw-r--r--demo/Makefile.am7
-rw-r--r--demo/static/Makefile.am1
-rwxr-xr-xdemo/template.py107
8 files changed, 74 insertions, 75 deletions
diff --git a/.gitignore b/.gitignore
index 99a596a..796b96d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1 @@
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache/
-configure
-config.log
-config.status
-install-sh
-missing
-demo/Makefile
-demo/Makefile.in
-demo/de/
-demo/en/
-demo/es/
-demo/it/
-demo/static/Makefile
-demo/static/Makefile.in
+/build
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..0385a66
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+SHELL = /bin/sh
+
+all:
+ ./demo/template.py build
+
+clean:
+ rm -rf build
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 0f41786..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = demo
diff --git a/bootstrap b/bootstrap
index c83fd8c..d14ee3b 100755
--- a/bootstrap
+++ b/bootstrap
@@ -8,4 +8,3 @@ if ! git --version >/dev/null; then
fi
git submodule update --init
-AUTOMAKE="automake --foreign" autoreconf -fiv
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index fffd9e1..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,7 +0,0 @@
-AC_INIT(taler-demo-landing-page, 0.1, mee@taler.net)
-AM_INIT_AUTOMAKE
-# check for typescript compiler
-AC_CHECK_PROG([tsc],[tsc],[yes],[no])
-AM_CONDITIONAL(HAVE_TSC, [ test "$tsc" = "yes"])
-AC_CONFIG_FILES(Makefile demo/Makefile demo/static/Makefile demo/static/web-common/Makefile)
-AC_OUTPUT
diff --git a/demo/Makefile.am b/demo/Makefile.am
deleted file mode 100644
index e016510..0000000
--- a/demo/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-pkgdata_DATA = index.html.j2
-SUBDIRS = static
-
-.PHONY: all
-
-all:
- ./template.py
diff --git a/demo/static/Makefile.am b/demo/static/Makefile.am
deleted file mode 100644
index a0d2051..0000000
--- a/demo/static/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = web-common
diff --git a/demo/template.py b/demo/template.py
index 05599e4..01d778b 100755
--- a/demo/template.py
+++ b/demo/template.py
@@ -17,66 +17,91 @@ import glob
import codecs
import os
import os.path
+import click
+import shutil
+from pathlib import Path
-env = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
- extensions=["jinja2.ext.i18n"],
- lstrip_blocks=True,
- trim_blocks=True,
-
- undefined=jinja2.StrictUndefined,
- autoescape=False)
+env = jinja2.Environment(
+ loader=jinja2.FileSystemLoader(os.path.realpath(os.path.dirname(__file__))),
+ extensions=["jinja2.ext.i18n"],
+ lstrip_blocks=True,
+ trim_blocks=True,
+ undefined=jinja2.StrictUndefined,
+ autoescape=False,
+)
default_ctx = {}
default_ctx["merchant_blog_url"] = os.environ.get("TALER_ENV_URL_MERCHANT_BLOG", "#")
-default_ctx["merchant_donations_url"] = os.environ.get("TALER_ENV_URL_MERCHANT_DONATIONS", "#")
-default_ctx["merchant_survey_url"] = os.environ.get("TALER_ENV_URL_MERCHANT_SURVEY", "#")
+default_ctx["merchant_donations_url"] = os.environ.get(
+ "TALER_ENV_URL_MERCHANT_DONATIONS", "#"
+)
+default_ctx["merchant_survey_url"] = os.environ.get(
+ "TALER_ENV_URL_MERCHANT_SURVEY", "#"
+)
default_ctx["intro_url"] = os.environ.get("TALER_ENV_URL_INTRO", "#")
default_ctx["bank_url"] = os.environ.get("TALER_ENV_URL_BANK", "#")
default_ctx["auditor_url"] = os.environ.get("TALER_ENV_URL_AUDITOR", "#")
default_ctx["backoffice_url"] = os.environ.get("TALER_ENV_URL_BACKOFFICE", "#")
-for in_file in glob.glob("*.j2"):
- name, ext = re.match(r"(.*)\.([^.]+)$", in_file.rstrip(".j2")).groups()
- tmpl = env.get_template(in_file)
+@click.command()
+@click.argument("outdir")
+def generate_site(outdir):
+ """Generate the site from templates."""
+ out_path = Path.cwd().joinpath(outdir)
+ os.chdir(os.path.dirname(os.path.realpath(__file__)))
+ os.makedirs(out_path.as_posix(), exist_ok=True)
+ for in_file in glob.glob("*.j2"):
+ name, ext = re.match(r"(.*)\.([^.]+)$", in_file.rstrip(".j2")).groups()
+ tmpl = env.get_template(in_file)
+
+ def self_localized(other_locale):
+ """
+ Return URL for the current page in another locale.
+ """
+ return "../" + other_locale + "/" + in_file.rstrip(".j2")
- def self_localized(other_locale):
- """
- Return URL for the current page in another locale.
- """
- return "../" + other_locale + "/" + in_file.rstrip(".j2")
+ def url_localized(filename):
+ return "../" + locale + "/" + filename
- def url_localized(filename):
- return "../" + locale + "/" + filename
+ def url(x):
+ # TODO: look at the app root environment variable
+ # TODO: check if file exists
+ return "../" + x
- def url(x):
- # TODO: look at the app root environment variable
- # TODO: check if file exists
- return "../" + x
+ for l in ("en", "de", "it", "es"):
+ locale = os.path.basename(l)
- for l in ("en", "de", "it", "es"):
- locale = os.path.basename(l)
+ if os.path.isdir(os.path.join("./locale/", locale)):
+ tr = gettext.translation(
+ "messages", localedir="locale", languages=[locale]
+ )
- if os.path.isdir(os.path.join("./locale/", locale)):
- tr = gettext.translation("messages",
- localedir="locale",
- languages=[locale])
+ env.install_gettext_translations(tr, newstyle=True)
+ else:
+ print("warning: locale {} not found".format(locale))
- env.install_gettext_translations(tr, newstyle=True)
- else:
- print("warning: locale {} not found".format(locale))
-
- ctx = dict(
+ ctx = dict(
lang=locale,
url=url,
self_localized=self_localized,
url_localized=url_localized,
- filename=name + "." + ext)
- ctx.update(default_ctx)
+ filename=name + "." + ext,
+ )
+ ctx.update(default_ctx)
+
+ content = tmpl.render(**ctx)
+ out_name = (out_path / locale / in_file.rstrip(".j2")).as_posix()
+ os.makedirs((out_path / locale).as_posix(), exist_ok=True)
+
+ with codecs.open(out_name, "w", "utf-8") as f:
+ f.write(content)
+
+ for p in Path.cwd().glob("static/**/*.css"):
+ target = out_path / p.relative_to(Path.cwd())
+ target.parent.mkdir(parents=True, exist_ok=True)
+ shutil.copy(p, target)
- content = tmpl.render(**ctx)
- out_name = "./" + locale + "/" + in_file.rstrip(".j2")
- os.makedirs("./" + locale, exist_ok=True)
- with codecs.open(out_name, "w", "utf-8") as f:
- f.write(content)
+if __name__ == "__main__":
+ generate_site()