check based on all old git IDs instead

pull/1/head
Adam Greig 2015-01-07 22:00:27 +00:00 zatwierdzone przez John Greb
rodzic b6aade387c
commit ba486fcaa6
2 zmienionych plików z 31 dodań i 28 usunięć

Wyświetl plik

@ -1,46 +1,54 @@
#!/usr/bin/env python
# Copyright 2012 Daniel Richman
# Copyright 2015 Adam Greig
# DL-Fldigi update check server
import os.path
import os
import yaml
import os.path
import subprocess
from flask import Flask, abort, request, jsonify
app_dir = os.path.dirname(__file__)
config_file = os.path.join(app_dir, "config.yml")
config = {}
app = Flask(__name__)
def load_config():
global config
# Load config from file
app_dir = os.path.abspath(os.path.dirname(__file__))
config_file = os.path.join(app_dir, "config.yml")
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_parse(name):
arg = name + "^{}"
commit = subprocess.check_output(["git", "rev-parse", "--verify", arg])
return commit.strip()
def git_rev_list(commit):
commits = subprocess.check_output(["git", "rev-list", commit])
return set(commits.split("\n")[1:])
# Store commits considered old
old_commits = git_rev_list(git_rev_parse(config['latest_release']))
mtime = os.stat(config_file).st_mtime
if mtime != config.get("_mtime", None):
with open(config_file) as f:
config = yaml.load(f)
config["_mtime"] = mtime
@app.route("/")
def check():
load_config()
try:
platform = request.args["platform"]
commit = request.args["commit"]
expect = config["expect"][platform]
if isinstance(expect, list) and commit in expect:
return ""
elif isinstance(expect, basestring) and expect == commit:
return ""
else:
if commit in old_commits:
return jsonify(config["update"])
else:
return ""
except KeyError:
# bad platform or missing arg
abort(400)
if __name__ == "__main__":
app.run()
app.run(debug=True)

Wyświetl plik

@ -1,9 +1,4 @@
update:
url: "http://ukhas.org.uk/projects:dl-fldigi"
text: "There is a new version of dl-fldigi available!"
expect:
win32: "that would be self description"
linux: "which is unfortunately not possible"
macosx:
- "well, technically it is,"
- "but I don't have a super computer"
latest_release: "DL3.1"