diff --git a/dev.py b/dev.py index 9d3b66f..fb9b184 100644 --- a/dev.py +++ b/dev.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals from __future__ import absolute_import import os +import subprocess if 'PUPPETBOARD_SETTINGS' not in os.environ: os.environ['PUPPETBOARD_SETTINGS'] = os.path.join( @@ -8,8 +9,24 @@ if 'PUPPETBOARD_SETTINGS' not in os.environ: ) from puppetboard.app import app -from puppetboard.default_settings import DEV_LISTEN_HOST, DEV_LISTEN_PORT if __name__ == '__main__': + # Start CoffeeScript to automatically compile our coffee source. + # We must be careful to only start this in the parent process as + # WERKZEUG will create a secondary process when using the reloader. + if os.environ.get('WERKZEUG_RUN_MAIN') is None: + try: + subprocess.Popen([ + app.config['DEV_COFFEE_LOCATION'], '-w', '-c', + '-o', 'puppetboard/static/js', + 'puppetboard/static/coffeescript' + ]) + except OSError: + app.logger.error( + 'The coffee executable was not found, disabling automatic ' + 'CoffeeScript compilation' + ) + + # Start the Flask development server app.debug = True app.run(app.config['DEV_LISTEN_HOST'], app.config['DEV_LISTEN_PORT']) diff --git a/puppetboard/default_settings.py b/puppetboard/default_settings.py index 534602e..d74ac3f 100644 --- a/puppetboard/default_settings.py +++ b/puppetboard/default_settings.py @@ -6,6 +6,7 @@ PUPPETDB_CERT = None PUPPETDB_TIMEOUT = 20 DEV_LISTEN_HOST = '127.0.0.1' DEV_LISTEN_PORT = 5000 +DEV_COFFEE_LOCATION = 'coffee' UNRESPONSIVE_HOURS = 2 ENABLE_QUERY = True LOCALISE_TIMESTAMP = True