initial commit

This commit is contained in:
brent s 2019-11-12 01:39:34 -05:00
commit f87671e0a2
5 changed files with 105 additions and 0 deletions

21
.gitignore vendored Normal file
View File

@ -0,0 +1,21 @@
*.7z
*.bak
*.deb
*.jar
*.pkg.tar.xz
*.rar
*.run
*.sig
*.tar
*.tar.bz2
*.tar.gz
*.tar.xz
*.tbz
*.tbz2
*.tgz
*.txz
*.zip
.*.swp
.editix
__pycache__/
test.py

7
app/__init__.py Normal file
View File

@ -0,0 +1,7 @@
from flask import Flask

app = Flask(__name__, instance_relative_config = True)

from app import views

app.config.from_object('config')

68
app/views.py Normal file
View File

@ -0,0 +1,68 @@
import datetime
import os
import subprocess
##
import git
from flask import render_template, make_response, request, Response
##
from app import app


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
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)
lastcommit = repo.head.commit.authored_datetime
now = datetime.datetime.now(datetime.timezone.utc)
if (now - lastcommit) > datetime.timedelta(hours = update_hours):
print('Fetching update. Current HEAD: {0}'.format(repo.head.commit.hexsha))
repo.remotes.origin.fetch()
return(oldhead)


@app.route('/', methods = ['GET'])
def index():
oldref = chkbranch(ref_param = request.args.get('ref'))
docsdir = os.path.join(repo_path, 'docs')
oldref.checkout()
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)
return(cmd.stdout.decode('utf-8'))


@app.route('/aif.xsd', methods = ['GET'])
def xsd():
oldref = chkbranch(ref_param = request.args.get('ref'))
oldref.checkout()
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'
return(resp)

3
config.py Normal file
View File

@ -0,0 +1,3 @@
# Flask debugging - DISABLE FOR PRODUCTION ENVIRONMENTS
#DEBUG = True
DEBUG = False

6
run.py Executable file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env python3

from app import app

if __name__ == '__main__':
app.run(debug = True)