Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/buildbot/buildbot/scripts/checkconfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildbot/buildbot/scripts/checkconfig.py')
-rw-r--r--buildbot/buildbot/scripts/checkconfig.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/buildbot/buildbot/scripts/checkconfig.py b/buildbot/buildbot/scripts/checkconfig.py
new file mode 100644
index 0000000..44dd7bc
--- /dev/null
+++ b/buildbot/buildbot/scripts/checkconfig.py
@@ -0,0 +1,53 @@
+import sys
+import os
+from shutil import copy, rmtree
+from tempfile import mkdtemp
+from os.path import isfile
+import traceback
+
+from buildbot import master
+
+class ConfigLoader(master.BuildMaster):
+ def __init__(self, configFileName="master.cfg"):
+ master.BuildMaster.__init__(self, ".", configFileName)
+ dir = os.getcwd()
+ # Use a temporary directory since loadConfig() creates a bunch of
+ # directories and compiles .py files
+ tempdir = mkdtemp()
+ try:
+ copy(configFileName, tempdir)
+ for entry in os.listdir("."):
+ # Any code in a subdirectory will _not_ be copied! This is a bug
+ if isfile(entry):
+ copy(entry, tempdir)
+ except:
+ raise
+
+ try:
+ os.chdir(tempdir)
+ # Add the temp directory to the library path so local modules work
+ sys.path.append(tempdir)
+ configFile = open(configFileName, "r")
+ self.loadConfig(configFile)
+ except:
+ os.chdir(dir)
+ configFile.close()
+ rmtree(tempdir)
+ raise
+ os.chdir(dir)
+ rmtree(tempdir)
+
+if __name__ == '__main__':
+ try:
+ if len(sys.argv) > 1:
+ c = ConfigLoader(sys.argv[1])
+ else:
+ c = ConfigLoader()
+ except IOError:
+ print >> sys.stderr, "Could not open config file"
+ sys.exit(2)
+ except:
+ print >> sys.stderr, "Error in config file:"
+ t, v, tb = sys.exc_info()
+ print >> sys.stderr, traceback.print_exception(t, v, tb)
+ sys.exit(1)