Add static site generator

master
0xee 2022-02-20 21:37:42 +01:00
parent 3820cb60a5
commit 64cb5a329f
4 changed files with 42 additions and 4 deletions

View File

@ -3,6 +3,6 @@ with python3.pkgs;
buildPythonPackage rec {
name = "mqtt-dash";
src = ./.;
propagatedBuildInputs = [ flask ];
propagatedBuildInputs = [ flask setuptools ];
doCheck = false;
}

38
make-static-site Executable file
View File

@ -0,0 +1,38 @@
#!/usr/bin/env python
import argparse
import os
import sys
import pkg_resources
import shutil
import mqtt_dash.app
from mqtt_dash.app import app
args = argparse.ArgumentParser()
args.add_argument('config', default='config.py', help='Configuration file')
options = args.parse_args()
app.secret_key = os.urandom(12)
app.config.from_pyfile(os.path.abspath(options.config))
missing_config_fields = False
for opt in ('URL', 'MQTT_BROKER', 'PAGE_TITLE', 'WIDGETS'):
if opt not in app.config:
print(f'Error: field {opt} missing in configuration')
missing_config_fields = True
if missing_config_fields:
sys.exit(1)
client = app.test_client()
r = client.get('/')
with open("index.html", "wb") as f:
f.write(r.data)
static_assets = pkg_resources.resource_filename('mqtt_dash', 'static')
shutil.copytree(static_assets, "static")

View File

@ -5,10 +5,10 @@
<meta name="viewport" content="width=device-width,initial-scale=0.8"/>
<!-- http://paletton.com/#uid=13w0u0kllllaFw0g0qFqFg0w0aF -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.8.0/css/bulma.min.css">
<link rel="stylesheet" href="/static/style.css">
<link rel="stylesheet" href="static/style.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.2/mqttws31.min.js" type="text/javascript"></script>
<script src="/static/main.js"></script>
<script src="static/main.js"></script>
<script>
window.onload = function() { init("{{mqtt_broker}}")};

View File

@ -9,6 +9,6 @@ setup(
author='0xee',
author_email='mqtt-dash@0xee.eu',
packages=['mqtt_dash'],
scripts=['mqtt-dash'],
scripts=['mqtt-dash', 'make-static-site'],
package_data={'mqtt_dash': ['templates/*.html', 'static/*']},
)