diff options
Diffstat (limited to 'buildbot/buildbot/scripts/checkconfig.py')
-rw-r--r-- | buildbot/buildbot/scripts/checkconfig.py | 53 |
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) |