67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import subprocess
 | |
| # import tempfile
 | |
| ##
 | |
| import git
 | |
| from flask import render_template, make_response, request, Response
 | |
| ##
 | |
| from app import app
 | |
| 
 | |
| 
 | |
| # statfile = tempfile.mkstemp(prefix = '.aif-site.')[1]
 | |
| 
 | |
| 
 | |
| repo_path = '/srv/python/aif_ng'
 | |
| repo_uri = '/opt/git/repositories/aif-ng.git'
 | |
| branch = 'v2_rewrite'
 | |
| update_hours = 1
 | |
| 
 | |
| if not os.path.isdir(repo_path):
 | |
|     repo = git.Repo.clone_from(repo_uri, repo_path)
 | |
| else:
 | |
|     repo = git.Repo(repo_path)
 | |
| 
 | |
| 
 | |
| def chkbranch(ref_param = None):
 | |
|     oldhead = repo.head.ref
 | |
|     repo.remotes.origin.fetch()
 | |
|     if not ref_param:
 | |
|         ref = branch
 | |
|     else:
 | |
|         ref = ref_param
 | |
|     if not ref_param:
 | |
|         if repo.active_branch.name != branch:
 | |
|             repo.git.checkout(branch)
 | |
|     else:
 | |
|         repo.git.checkout(ref)
 | |
|     return(oldhead)
 | |
| 
 | |
| 
 | |
| @app.route('/', methods = ['GET'])
 | |
| def index():
 | |
|     oldref = chkbranch(ref_param = request.args.get('ref'))
 | |
|     docsdir = os.path.join(repo_path, 'docs')
 | |
|     docspath = os.path.join(docsdir, 'MANUAL.adoc')
 | |
|     for fname in ('MANUAL', 'README'):
 | |
|         fpath = os.path.join(docsdir, '{0}.adoc'.format(fname))
 | |
|         if os.path.isfile(fpath):
 | |
|             docspath = fpath
 | |
|             break
 | |
|     cmd = subprocess.run(['asciidoctor',
 | |
|                           docspath,
 | |
|                           '-o', '-'],
 | |
|                          stdout = subprocess.PIPE)
 | |
|     oldref.checkout()
 | |
|     return(cmd.stdout.decode('utf-8'))
 | |
| 
 | |
| 
 | |
| @app.route('/aif.xsd', methods = ['GET'])
 | |
| def xsd():
 | |
|     oldref = chkbranch(ref_param = request.args.get('ref'))
 | |
|     with open(os.path.join(repo_path, 'aif.xsd'), 'r') as fh:
 | |
|         xsd_raw = fh.read()
 | |
|     resp = Response(xsd_raw)
 | |
|     resp.headers['content-type'] = 'text/xml'
 | |
|     oldref.checkout()
 | |
|     return(resp)
 | 
