summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Petithory <vincent.petithory@gmail.com>2013-03-28 13:17:45 +0100
committerVincent Petithory <vincent.petithory@gmail.com>2013-03-28 13:17:45 +0100
commit42c28dae1dd895dab14f246ed2c78cbb1685819f (patch)
treebd9859feb2643a7fa9f8d404b3023db4b6fc8893
parent15257e49db8a6bfa383306c8ec35f60bfa354468 (diff)
downloadtools-42c28dae1dd895dab14f246ed2c78cbb1685819f.tar.gz
tools-42c28dae1dd895dab14f246ed2c78cbb1685819f.tar.bz2
tools-42c28dae1dd895dab14f246ed2c78cbb1685819f.tar.xz
tools-42c28dae1dd895dab14f246ed2c78cbb1685819f.zip
Add a tool to get data about the maps database.
* Add a command to list maps that do not have a minimap
-rwxr-xr-xclient/map-db.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/client/map-db.py b/client/map-db.py
new file mode 100755
index 0000000..5215e72
--- /dev/null
+++ b/client/map-db.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import sys
+import os
+import subprocess
+import tempfile
+import re
+
+CLIENT_DATA_ROOT = os.path.realpath(
+ os.path.join(
+ os.path.dirname(__file__),
+ u'..',
+ )
+)
+
+MAP_RE = re.compile(r'^(\d{3})-(\d{1})$')
+
+def list_missing_minimaps(maps, minimaps):
+ def minimap_wanted(m):
+ match = MAP_RE.match(m)
+ if match:
+ d = match.group(2)
+ # We ignore indoor maps
+ if not d == '2':
+ return True
+ return False
+
+ missing_minimaps = set([m for m in maps if minimap_wanted(m)]) - set(minimaps)
+ retcode = len(missing_minimaps)
+ print '\n'.join(sorted(missing_minimaps))
+ return retcode
+
+def usage():
+ sys.stderr.write(u'''Usage: %(prgm_name)s CMD
+
+ Where CMD is one of:
+ list-missing-minimaps, lm: Lists all maps which do not
+ have a minimap.
+
+ \n''' % {'prgm_name': sys.argv[0]})
+
+def main():
+ if not len(sys.argv) > 1:
+ usage()
+ return 127
+ action = sys.argv[1].lower()
+ maps = [os.path.splitext(p)[0] for p in os.listdir(os.path.join(CLIENT_DATA_ROOT, u'maps'))]
+ minimaps = [os.path.splitext(p)[0] for p in os.listdir(os.path.join(CLIENT_DATA_ROOT, u'graphics', u'minimaps'))]
+ status = 0
+ if action in ('list-missing-minimaps', 'lm'):
+ status = list_missing_minimaps(maps, minimaps)
+ else:
+ usage()
+ return 127
+ return status
+
+if __name__ == '__main__':
+ sys.exit(main())