initial commit
This commit is contained in:
commit
f87671e0a2
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal 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
7
app/__init__.py
Normal 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
68
app/views.py
Normal 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
3
config.py
Normal file
@ -0,0 +1,3 @@
|
||||
# Flask debugging - DISABLE FOR PRODUCTION ENVIRONMENTS
|
||||
#DEBUG = True
|
||||
DEBUG = False
|
Loading…
Reference in New Issue
Block a user