mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	The "forever" option causes the tool to continue looking for template changes and, when they happen, to recompile them. (imported from commit 2fa719a205f02c7c90cc071f99252148a888654f)
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| from __future__ import absolute_import
 | |
| 
 | |
| import os
 | |
| import glob
 | |
| import subprocess
 | |
| import sys
 | |
| import time
 | |
| 
 | |
| sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
 | |
| os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
 | |
| from django.conf import settings
 | |
| 
 | |
| os.chdir(settings.DEPLOY_ROOT)
 | |
| STATIC_PATH = 'static/'
 | |
| 
 | |
| def get_templates():
 | |
|     return glob.glob(os.path.join(STATIC_PATH, 'templates/*.handlebars'))
 | |
| 
 | |
| def run():
 | |
|     subprocess.check_call(['tools/node', 'node_modules/.bin/handlebars']
 | |
|         + get_templates()
 | |
|         + ['--output', os.path.join(STATIC_PATH, 'templates/compiled.js'),
 | |
|            '--known', 'if,unless,each,with'])
 | |
| 
 | |
| def run_forever():
 | |
|     # Keep polling for file changes, similar to how Django does it in
 | |
|     # django/utils/autoreload.py.  If any of our templates change, rebuild
 | |
|     # compiled.js
 | |
|     mtimes = {}
 | |
|     while True:
 | |
|         changed = False
 | |
|         for fn in get_templates():
 | |
|             new_mtime = os.stat(fn).st_mtime
 | |
|             if new_mtime != mtimes.get(fn, None):
 | |
|                 changed = True
 | |
|             mtimes[fn] = new_mtime
 | |
|         if changed:
 | |
|             print 'Recompiling templates'
 | |
|             try:
 | |
|                 run()
 | |
|                 print 'done'
 | |
|             except:
 | |
|                 print '\n\n\nPLEASE FIX!!\n\n'
 | |
|         time.sleep(0.200)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     if len(sys.argv) == 2 and sys.argv[1] == 'forever':
 | |
|         run_forever()
 | |
|     run()
 |