aboutsummaryrefslogtreecommitdiffstats
path: root/version_detect
diff options
context:
space:
mode:
Diffstat (limited to 'version_detect')
-rw-r--r--version_detect/__init__.py1
-rw-r--r--version_detect/hg_keywords.py21
-rw-r--r--version_detect/version.py10
3 files changed, 32 insertions, 0 deletions
diff --git a/version_detect/__init__.py b/version_detect/__init__.py
new file mode 100644
index 0000000..2eb889b
--- /dev/null
+++ b/version_detect/__init__.py
@@ -0,0 +1 @@
+from version import version
diff --git a/version_detect/hg_keywords.py b/version_detect/hg_keywords.py
new file mode 100644
index 0000000..edc9bae
--- /dev/null
+++ b/version_detect/hg_keywords.py
@@ -0,0 +1,21 @@
+import re
+
+keyword_rx = re.compile('^\$(\w+)\:\s+(\S*)\s*\$$')
+
+# returns tuple (key, value)
+# returns None if kwstring is not a keyword expansion
+def extract_keyvalue(kwstring):
+ mo = keyword_rx.match(kwstring)
+ if mo is None: return None
+
+ try:
+ return mo.group(1,2)
+ except IndexError:
+ return None
+
+
+
+def keywords(*kwstrings):
+ keyvalues = [extract_keyvalue(kws) for kws in kwstrings]
+ compacted_keyvalues = [kv for kv in keyvalues if kv is not None]
+ return dict(compacted_keyvalues)
diff --git a/version_detect/version.py b/version_detect/version.py
new file mode 100644
index 0000000..33952c5
--- /dev/null
+++ b/version_detect/version.py
@@ -0,0 +1,10 @@
+import hg_keywords
+
+keywords = hg_keywords.keywords(
+ "$branches: $",
+ "$node: 83f8cf753f41eb3d53d3d4b95a8cc56c18b0c3fc $",
+ "$rev: 8 $",
+ "$tags: tip $"
+ )
+
+version = "dev_%s_%s" % tuple([keywords[x] for x in 'rev', 'node'])