diff --git a/Dockerfile b/Dockerfile
index ba6acdd..0221ac4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -61,7 +61,7 @@ ENV PATH="/opt/venv/bin:$PATH"
# install the application
WORKDIR /app
-COPY vasl_templates/webapp/ ./vasl_templates/webapp/
+COPY vasl_templates/ ./vasl_templates/
COPY vassal-shim/release/vassal-shim.jar ./vassal-shim/release/
COPY setup.py requirements.txt requirements-dev.txt LICENSE.txt ./
RUN pip3 install --editable .
diff --git a/vasl_templates/about.py b/vasl_templates/about.py
index d3b941f..cffcf9f 100644
--- a/vasl_templates/about.py
+++ b/vasl_templates/about.py
@@ -2,7 +2,6 @@
import sys
import os
-import json
import time
import io
import re
@@ -12,7 +11,8 @@ from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QDesktopServices, QIcon, QCursor
from PyQt5.QtWidgets import QDialog
-from vasl_templates.webapp.config.constants import APP_NAME, APP_VERSION, APP_HOME_URL, BASE_DIR, IS_FROZEN
+from vasl_templates.webapp.config.constants import APP_NAME, APP_VERSION, APP_HOME_URL, IS_FROZEN
+from vasl_templates.utils import get_build_info
# ---------------------------------------------------------------------
@@ -41,28 +41,17 @@ class AboutDialog( QDialog ):
self.app_icon.mouseReleaseEvent = self.on_app_icon_clicked
self.app_icon.setCursor( QCursor( QtCore.Qt.PointingHandCursor ) )
- # get the build info
- dname = os.path.join( BASE_DIR, "config" )
- fname = os.path.join( dname, "build-info.json" )
- if os.path.isfile( fname ):
- build_info = json.load( open( fname, "r" ) )
- else:
- build_info = None
-
# load the dialog
self.app_name.setText( "{} ({})".format( APP_NAME, APP_VERSION ) )
self.license.setText( "Licensed under the GNU Affero General Public License (v3)." )
+ build_info = get_build_info()
if build_info:
buf = io.StringIO()
- timestamp = build_info[ "timestamp" ]
buf.write( "Built {}".format(
- time.strftime( "%d %B %Y %H:%S", time.localtime( timestamp ) ) # nb: "-d" doesn't work on Windows :-/
+ time.strftime( "%d %B %Y %H:%M", time.localtime( build_info["timestamp"] ) )
) )
- if "branch_name" in build_info or "last_commit_id" in build_info:
- buf.write( " ({}".format( build_info["branch_name"] ) )
- if "last_commit_id" in build_info:
- buf.write( ":{}".format( build_info["last_commit_id"][:8] ) )
- buf.write( ")" )
+ if "git_info" in build_info:
+ buf.write( " ({})".format( build_info["git_info"] ) )
buf.write( "." )
self.build_info.setText( buf.getvalue() )
else:
diff --git a/vasl_templates/utils.py b/vasl_templates/utils.py
index 51535c4..eb2bfd8 100644
--- a/vasl_templates/utils.py
+++ b/vasl_templates/utils.py
@@ -1,8 +1,35 @@
""" Miscellaneous utilities. """
+import os
import functools
import logging
import traceback
+import json
+
+from vasl_templates.webapp.config.constants import BASE_DIR
+
+# ---------------------------------------------------------------------
+
+def get_build_info():
+ """Get the program build info."""
+
+ # locate and load the build info file
+ fname = os.path.join( BASE_DIR, "config", "build-info.json" )
+ if not os.path.isfile( fname ):
+ return None
+ build_info = json.load( open( fname, "r" ) )
+
+ # get the build timestamp
+ result = { "timestamp": build_info["timestamp"] }
+
+ # get the git info
+ if "branch_name" in build_info:
+ git_info = build_info[ "branch_name" ]
+ if "last_commit_id" in build_info:
+ git_info += ":{}".format( build_info["last_commit_id"][:8] )
+ result["git_info"] = git_info
+
+ return result
# ---------------------------------------------------------------------
diff --git a/vasl_templates/webapp/main.py b/vasl_templates/webapp/main.py
index 03da3a1..eff370a 100644
--- a/vasl_templates/webapp/main.py
+++ b/vasl_templates/webapp/main.py
@@ -15,9 +15,10 @@ from vasl_templates.webapp import app, shutdown_event
from vasl_templates.webapp.vassal import VassalShim
from vasl_templates.webapp.utils import MsgStore, parse_int
import vasl_templates.webapp.config.constants
-from vasl_templates.webapp.config.constants import BASE_DIR, DATA_DIR
+from vasl_templates.webapp.config.constants import BASE_DIR, DATA_DIR, IS_FROZEN
from vasl_templates.webapp import globvars
from vasl_templates.webapp.lfa import DEFAULT_LFA_DICE_HOTNESS_WEIGHTS, DEFAULT_LFA_DICE_HOTNESS_THRESHOLDS
+from vasl_templates.utils import get_build_info
# NOTE: This is used to stop multiple instances of the program from running (see main.py in the desktop app).
INSTANCE_ID = uuid.uuid4().hex
@@ -197,6 +198,17 @@ def get_program_info():
"""Replace a mount point with its corresponding target (on the host)."""
params[ key ] = os.environ.get( "{}_TARGET".format( key ) )
+ # check if we are running the desktop application
+ if IS_FROZEN:
+ # yup - return information about the build
+ build_info = get_build_info()
+ if build_info:
+ params[ "BUILD_TIMESTAMP" ] = datetime.strftime(
+ to_localtime( datetime.utcfromtimestamp( build_info["timestamp"] ) ),
+ "%H:%M (%d %b %Y)"
+ )
+ params[ "BUILD_GIT_INFO" ] = build_info[ "git_info" ]
+
# check if we are running inside a Docker container
if app.config.get( "IS_CONTAINER" ):
# yup - return related information
diff --git a/vasl_templates/webapp/templates/program-info-content.html b/vasl_templates/webapp/templates/program-info-content.html
index 5584965..977e010 100644
--- a/vasl_templates/webapp/templates/program-info-content.html
+++ b/vasl_templates/webapp/templates/program-info-content.html
@@ -1,3 +1,11 @@
+{%if BUILD_TIMESTAMP%}
+
+ Build date:
+ | {{BUILD_TIMESTAMP}}
+ {%if BUILD_GIT_INFO%} ({{BUILD_GIT_INFO}}) {%endif%}
+ |
+{%endif%}
+
{%if DOCKER_CONTAINER_ID%}