diff scripts/get_proj_config.py @ 0:5d2c0db51914

Initial commit
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 17 Sep 2019 13:24:24 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/get_proj_config.py	Tue Sep 17 13:24:24 2019 -0700
@@ -0,0 +1,52 @@
+import argparse
+import logging
+import re
+from vsutil import SolutionCache
+
+
+re = _re_proj_cfg_suffix = re.compile(r'\.(ActiveCfg|Build\.0)$')
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument('solution',
+                        help="The path to the Visual Studio solution file.")
+    parser.add_argument('cache',
+                        help="The path to the solution cache.")
+    parser.add_argument('project',
+                        help="The name of the project to check for.")
+    parser.add_argument('slnconfig',
+                        help="The solution configuration.")
+    parser.add_argument('-v', '--verbose',
+                        action='store_true',
+                        help="Show verbose information.")
+    args = parser.parse_args()
+
+    loglevel = logging.INFO
+    if args.verbose:
+        loglevel = logging.DEBUG
+    logging.basicConfig(level=loglevel)
+    logger = logging.getLogger()
+
+    cache, loaded = SolutionCache.load_or_rebuild(args.solution, args.cache)
+    logger.debug("Cache was %s" % ("valid" if loaded else "not valid"))
+
+    proj = cache.slnobj.find_project_by_name(args.project)
+    if proj is None:
+        raise Exception("No such project: %s" % args.project)
+    projguid = '{%s}' % proj.guid
+
+    slnconfig = args.slnconfig.replace(' ', '_')
+    sec = cache.slnobj.globalsection('ProjectConfigurationPlatforms')
+    for e in sec.entries:
+        if e.name.startswith(projguid):
+            if slnconfig == e.value.replace(' ', '_'):
+                projcfg = e.name[len(projguid) + 1:]
+                projcfg = _re_proj_cfg_suffix.sub('', projcfg)
+                print(projcfg)
+                break
+
+
+if __name__ == '__main__':
+    main()
+