dl-fldigi/update_server/app.py

49 wiersze
1.0 KiB
Python
Czysty Zwykły widok Historia

2012-09-04 21:17:19 +00:00
#!/usr/bin/env python
2012-09-04 16:29:50 +00:00
# Copyright 2012 Daniel Richman
2015-01-07 22:00:27 +00:00
# Copyright 2015 Adam Greig
2012-09-04 16:29:50 +00:00
# DL-Fldigi update check server
2015-01-07 22:00:27 +00:00
import os
2012-09-04 16:29:50 +00:00
import yaml
2015-01-07 22:00:27 +00:00
import os.path
import subprocess
2012-09-04 21:26:40 +00:00
from flask import Flask, abort, request, jsonify
2012-09-04 16:29:50 +00:00
2015-01-07 22:00:27 +00:00
app = Flask(__name__)
# Load config from file
app_dir = os.path.abspath(os.path.dirname(__file__))
2012-09-04 16:29:50 +00:00
config_file = os.path.join(app_dir, "config.yml")
2015-01-07 22:00:27 +00:00
config = yaml.load(open(config_file))
# Swap to directory containing this script, to ensure we're inside
# the git repository.
os.chdir(app_dir)
def git_rev_list(commit):
2015-01-07 22:06:24 +00:00
commits = subprocess.check_output(["git", "rev-list", commit + "^{}"])
2015-01-07 22:00:27 +00:00
return set(commits.split("\n")[1:])
# Store commits considered old
2015-01-07 22:06:24 +00:00
old_commits = git_rev_list(config['latest_release'])
2012-09-04 16:29:50 +00:00
@app.route("/")
def check():
2012-09-04 21:17:19 +00:00
try:
commit = request.args["commit"]
2015-01-07 22:00:27 +00:00
if commit in old_commits:
2012-09-04 21:26:40 +00:00
return jsonify(config["update"])
2015-01-07 22:00:27 +00:00
else:
return ""
2012-09-04 16:29:50 +00:00
2012-09-04 21:17:19 +00:00
except KeyError:
# bad platform or missing arg
abort(400)
2012-09-04 16:29:50 +00:00
if __name__ == "__main__":
2015-01-07 22:00:27 +00:00
app.run(debug=True)