From d45b0aacf88cf640dde538b3ee92958099129f74 Mon Sep 17 00:00:00 2001
From: Joshua Harlow <harlowja@yahoo-inc.com>
Date: Mon, 25 Jun 2012 13:07:17 -0700
Subject: This tool knows how to extract the current version from the
 'changelog' file.

---
 tools/read-version | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)
 create mode 100755 tools/read-version

(limited to 'tools/read-version')

diff --git a/tools/read-version b/tools/read-version
new file mode 100755
index 00000000..4458c712
--- /dev/null
+++ b/tools/read-version
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# vi: ts=4 expandtab
+
+import os
+import sys
+import re
+
+def parse_versions(fn):
+    with open(fn, 'r') as fh:
+        lines = fh.read().splitlines()
+    versions = []
+    for line in lines:
+        line = line.strip()
+        if line.startswith("-") or not line:
+            continue
+        if not re.match(r"[\d]", line):
+            continue
+        line = line.strip(":")
+        if (re.match(r"^[\d+]\.[\d+]\.[\d+]$", line) or
+            re.match(r"^[\d+]\.[\d+]$", line)):
+            versions.append(line)
+    return versions
+
+def find_changelog(args):
+    p_files = []
+    if args:
+        p_files.append(args[0])
+    p_files.append(os.path.join(os.pardir, "ChangeLog"))
+    p_files.append(os.path.join(os.getcwd(), 'ChangeLog'))
+    found = None
+    for fn in p_files:
+        if os.path.isfile(fn):
+            found = fn
+            break
+    return found
+
+
+if __name__ == '__main__':
+    run_args = sys.argv[1:]
+    fn = find_changelog(run_args)
+    if not fn:
+        sys.stderr.write("'ChangeLog' file not found!\n")
+        sys.exit(1)
+    else:
+        versions = parse_versions(fn)
+        if not versions:
+            sys.stderr.write("No versions found in %s!\n" % (fn))
+            sys.exit(1)
+        else:
+            sys.stdout.write(versions[0].strip())
+            sys.exit(0)
-- 
cgit v1.2.3


From 060844af4ec1f9d2d2d7c8763988b4131043dc91 Mon Sep 17 00:00:00 2001
From: harlowja <harlowja@virtualbox.rhel>
Date: Tue, 26 Jun 2012 07:55:21 -0700
Subject: Add check that the changelog version is the same as the code version

---
 tools/read-version | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

(limited to 'tools/read-version')

diff --git a/tools/read-version b/tools/read-version
index 4458c712..e6167a2c 100755
--- a/tools/read-version
+++ b/tools/read-version
@@ -5,6 +5,15 @@ import os
 import sys
 import re
 
+from distutils import version as ver
+
+possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
+        sys.argv[0]), os.pardir, os.pardir))
+if os.path.exists(os.path.join(possible_topdir, "cloudinit", "__init__.py")):
+    sys.path.insert(0, possible_topdir)
+
+from cloudinit import version as cver
+
 def parse_versions(fn):
     with open(fn, 'r') as fh:
         lines = fh.read().splitlines()
@@ -47,5 +56,15 @@ if __name__ == '__main__':
             sys.stderr.write("No versions found in %s!\n" % (fn))
             sys.exit(1)
         else:
-            sys.stdout.write(versions[0].strip())
+            # Check that the code version is the same 
+            # as the version we found!
+            ch_ver = versions[0].strip()
+            code_ver = cver.version()
+            ch_ver_obj = ver.StrictVersion(ch_ver)
+            if ch_ver_obj != code_ver:
+                sys.stderr.write(("Code version %s does not match"
+                                  " changelog version %s\n") % 
+                                  (code_ver, ch_ver_obj))
+                sys.exit(1)
+            sys.stdout.write(ch_ver)
             sys.exit(0)
-- 
cgit v1.2.3