diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-03-30 14:29:39 +0100 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-03-30 14:29:39 +0100 |
commit | 98961cb380a78ac76a58dc61ee1aa881f730180e (patch) | |
tree | e7a05d6a6148d6eed8f967f7e31d4bfbfdc43e41 /morphlib/buildsystem.py | |
parent | e039026513a7536579d0894bdfb052e6bd560058 (diff) | |
download | morph-98961cb380a78ac76a58dc61ee1aa881f730180e.tar.gz |
Add looking up of build systems by name
Diffstat (limited to 'morphlib/buildsystem.py')
-rw-r--r-- | morphlib/buildsystem.py | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/morphlib/buildsystem.py b/morphlib/buildsystem.py index 0ac27387..9ee62d03 100644 --- a/morphlib/buildsystem.py +++ b/morphlib/buildsystem.py @@ -45,6 +45,8 @@ class BuildSystem(object): class ManualBuildSystem(BuildSystem): '''A manual build system where the morphology must specify all commands.''' + + name = 'manual' def used_by_project(self, srcdir): return False @@ -53,6 +55,8 @@ class ManualBuildSystem(BuildSystem): class AutotoolsBuildSystem(BuildSystem): '''The automake/autoconf/libtool holy trinity.''' + + name = 'autotools' def used_by_project(self, srcdir): indicators = [ @@ -66,6 +70,12 @@ class AutotoolsBuildSystem(BuildSystem): for x in indicators) +build_systems = [ + ManualBuildSystem(), + AutotoolsBuildSystem(), +] + + def detect_build_system(srcdir): '''Automatically detect the build system, if possible. @@ -74,12 +84,22 @@ def detect_build_system(srcdir): ''' - build_systems = [ - AutotoolsBuildSystem(), - ] - for bs in build_systems: if bs.used_by_project(srcdir): return bs return ManualBuildSystem() + + +def lookup_build_system(name): + '''Return build system that corresponds to the name. + + If the name does not match any build system, raise ``KeyError``. + + ''' + + for bs in build_systems: + if bs.name == name: + return bs + raise KeyError(name) + |