Skip to content

Commit

Permalink
check based on all old git IDs instead
Browse files Browse the repository at this point in the history
  • Loading branch information
adamgreig committed Jan 7, 2015
1 parent 501f869 commit cb85bd7
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 27 deletions.
50 changes: 29 additions & 21 deletions update_server/app.py
Original file line number Diff line number Diff line change
@@ -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__)
app = Flask(__name__)

# Load config from file
app_dir = os.path.abspath(os.path.dirname(__file__))
config_file = os.path.join(app_dir, "config.yml")
config = {}
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()

app = Flask(__name__)

def load_config():
global config
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)
7 changes: 1 addition & 6 deletions update_server/config.yml
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit cb85bd7

Please sign in to comment.