Skip to content
Snippets Groups Projects
Commit 0d6c5c82 authored by Rolf Niepraschk's avatar Rolf Niepraschk
Browse files

better version handling; preparation of automatic update (1)

parent 8395e26e
No related branches found
No related tags found
No related merge requests found
......@@ -2,19 +2,50 @@
REST service for the validation of ```xml``` against a XML Schema (```xsd```).
## Installation as Daemon
## install & activate
Do the following with root permission:
Create a file `.git/hooks/pre-push` in the GIT repository with the following
content:
```shell
cd /usr/local/share
git config --global http.sslVerify false
git clone https://gitlab1.ptb.de/niepra01/xml-validation.git
cd xml-validation
#!/bin/bash
# Writes the short tag value to the VERSION file in the top-level directory
# of the Git repository
toplevel=$(git rev-parse --show-toplevel)
f=${toplevel}/VERSION
touch $f
old_version=$(cat $f)
new_version=$(git describe --tags --abbrev=0)
if [ "$old_version" != "$new_version" ]; then
echo "$new_version" > $f
git commit -am "update version to '"$new_version"'"
git push origin
fi
exit 0
```
Then make this file executable:
```shell
chmod 755 .git/hooks/pre-push
```
Do the following steps with root permission on the server installation:
```shell
mkdir -p /usr/local/share/xml-validation
cd /usr/local/share/xml-validation
curl --silent --output - \
https://gitlab1.ptb.de/niepra01/xml-validation/-/archive/master/xml-validation-master.tar \
| tar xf - --strip-components 1 # only once
python3 -m venv .
source bin/activate
pip install pip-tools
pip-sync
pip3 install pip-tools
pip-compile
chown -R nobody.nobody ../xml-validation
systemctl daemon-reload # if already exist
systemctl link $PWD/xml-validation.service
......@@ -22,9 +53,6 @@ systemctl enable xml-validation.service # make permanent
systemctl start xml-validation.service # running?
systemctl status xml-validation.service
journalctl -f --unit xml-validation.service # run-time check
...
sudo -u nobody git -c http.sslVerify=false pull
sudo systemctl restart xml-validation.service
```
## Configuration
......
......@@ -8,17 +8,17 @@ certifi==2019.11.28 # via requests
chardet==3.0.4 # via requests
click==7.0 # via flask
elementpath==1.3.1 # via xmlschema
flask-cors==3.0.8
flask==1.1.1
flask-cors==3.0.8 # via -r requirements.in
flask==1.1.1 # via -r requirements.in, flask-cors
gitdb2==2.0.6 # via gitpython
gitpython==3.0.5
gitpython==3.0.5 # via -r requirements.in
idna==2.8 # via requests
itsdangerous==1.1.0 # via flask
jinja2==2.10.3 # via flask
markupsafe==1.1.1 # via jinja2
requests==2.22.0
requests==2.22.0 # via -r requirements.in
six==1.13.0 # via flask-cors
smmap2==2.0.5 # via gitdb2
urllib3==1.25.7 # via requests
werkzeug==0.16.0 # via flask
xmlschema==1.0.16
xmlschema==1.0.16 # via -r requirements.in
#!/bin/sh
#!/bin/bash
export FLASK_APP=server.py
export FLASK_DEBUG=1
export FLASK_ENV=development
export FLASK_ENV=development # TODO: FLASK_ENV=production
python server.py
\ No newline at end of file
python3 -m venv ./
source bin/activate
pip-sync
pip3 install -e ./
python3 server.py
from flask import Flask, request, send_from_directory
from flask import Flask, request, jsonify, send_from_directory
from flask_cors import CORS
import utils as utils
from trans import Trans
#from pprint import pprint
from pprint import pprint
config = utils.get_config_dict()
git_cmd = utils.git_cmd(config)
app = Flask(__name__)
CORS(app)
......@@ -14,10 +13,18 @@ trans = Trans()
@app.route('/version', methods=['GET'])
def version():
app.logger.debug('hit version')
ret = utils.return_version(version=git_cmd.describe())
return utils.xml_response(ret)
version = utils.get_version()
if version:
return jsonify({'version':version})
else:
return utils.return_error('Version unknown')
@app.route('/update', methods=['POST'])
def update():
app.logger.debug('hit update')
req = request.get_json()
pprint(req)
@app.route('/validate', methods=['POST'])
def validate():
app.logger.debug('hit validate')
......@@ -45,7 +52,7 @@ def validation():
if l != 'de':
l = 'en'
x = "['2.3.0','2.2.0','2.1.1','2.1.0']"
return trans.show_html(version=git_cmd.describe(), language=l,
return trans.show_html(version=utils.get_version(), language=l,
xsd_versions=x)
@app.route('/js/<fn>', methods=['GET'])
......
import json
import git
import requests
from flask import Response
from xml.etree import ElementTree as ET
......@@ -22,8 +21,13 @@ def get_config_dict():
return config
def git_cmd(config):
return git.cmd.Git(config['git']['dir'])
def get_version():
try:
with open('./VERSION', 'r') as f:
version = f.read().rstrip()
return version
except:
return False
def get_xsd(cfg, xsd_version=None, xml_str = None):
filename = cfg['xsd']['filename']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment