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)