From dc6f2e4fd6226b7609c70900ffccc5d0706969e9 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Mon, 19 Aug 2019 13:24:51 +0200
Subject: [PATCH] Added script to check if a given version is the latest

---
 docs/get-releases-json.py   |  2 ++
 scripts/is-docker-latest.py | 40 +++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)
 mode change 100644 => 100755 docs/get-releases-json.py
 create mode 100755 scripts/is-docker-latest.py

diff --git a/docs/get-releases-json.py b/docs/get-releases-json.py
old mode 100644
new mode 100755
index 6cd0f472..72823da7
--- a/docs/get-releases-json.py
+++ b/docs/get-releases-json.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
 import json
 import subprocess
 
diff --git a/scripts/is-docker-latest.py b/scripts/is-docker-latest.py
new file mode 100755
index 00000000..2e385498
--- /dev/null
+++ b/scripts/is-docker-latest.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+import argparse
+import json
+import sys
+from distutils.version import StrictVersion
+
+
+def main(current, releases_json):
+    try:
+        version = StrictVersion(current)
+    except ValueError:
+        print("Version number '{}' isn't valid".format(current))
+        sys.exit(1)
+
+    releases = json.loads(releases_json)
+    latest_release = releases["releases"][0]["id"]
+
+    if version != latest_release:
+        print(
+            "Version number '{}' doesn't match latest release {}".format(
+                current, latest_release
+            )
+        )
+        sys.exit(1)
+    print("Version number '{}' is latest release!".format(current))
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description="""
+        Exit with code 0 if the given version matches the latest one
+        fron the list of releases found in releases_json. Primary use
+        is to check whether the current version can be safely pushed
+        as the latest one on the docker Hub.
+    """
+    )
+    parser.add_argument("current", help="Current version")
+    parser.add_argument("releases_json", type=argparse.FileType("r"))
+    args = parser.parse_args()
+    main(args.current, args.releases_json.read())
-- 
GitLab