summaryrefslogtreecommitdiff
path: root/src/flufigut.py
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-02-01 11:16:10 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-02-01 11:16:10 +0100
commitefa603b4dc2572dd97b4e2b6db76110c727e38b4 (patch)
tree96ed24767af5ef7e050044a230c7508aab9da0f2 /src/flufigut.py
parentworkers can now have a subname (diff)
also accept a single pattern
Diffstat (limited to 'src/flufigut.py')
-rwxr-xr-xsrc/flufigut.py53
1 files changed, 31 insertions, 22 deletions
diff --git a/src/flufigut.py b/src/flufigut.py
index ce2a48b..c266287 100755
--- a/src/flufigut.py
+++ b/src/flufigut.py
@@ -51,7 +51,7 @@ class Worker:
self.name = name
self.subname = subname
- def __str__(self):
+ def __repr__(self):
if self.subname:
return "%s:%s" % (self.name, self.subname)
return self.name
@@ -76,33 +76,42 @@ class Description:
self.worker_patterns = {}
- def __compute_worker_patterns(self, worker_name, worker_subname, patterns):
- for pattern in patterns:
- is_prefix = False
- search_string = pattern
- worker = Worker(worker_name, worker_subname)
- if '*' in pattern:
- if '*' in pattern[:-1]:
- raise Exception("invalid worker pattern '%s' in worker '%s' component globs may only have a single '*' at the end)" % (pattern, worker))
- is_prefix = True
- search_string = pattern[:-1]
- if not search_string:
- raise Exception("worker '%s' has wildcard or empty pattern which is not allowed" % (worker))
- if search_string in self.worker_patterns:
- raise Exception("worker pattern '%s' is used by at least two workers (%s and %s)" %
- (pattern, worker, self.worker_patterns[search_string].worker))
-
- self.worker_patterns[search_string] = WorkerPattern(pattern, is_prefix, worker)
+ def __compute_worker_pattern(self, worker, pattern):
+ is_prefix = False
+ search_string = pattern
+ if '*' in pattern:
+ if '*' in pattern[:-1]:
+ raise Exception("invalid worker pattern '%s' in worker '%s' component globs may only have a single '*' at the end)" % (pattern, worker))
+ is_prefix = True
+ search_string = pattern[:-1]
+
+ if not search_string:
+ raise Exception("worker '%s' has wildcard or empty pattern which is not allowed" % (worker))
+ if search_string in self.worker_patterns:
+ raise Exception("worker pattern '%s' is used by at least two workers (%s and %s)" %
+ (pattern, worker, self.worker_patterns[search_string].worker))
+
+ self.worker_patterns[search_string] = WorkerPattern(pattern, is_prefix, worker)
def _compute_worker_patterns(self):
for name, entry in self.globals['workers'].items():
- if isinstance(entry, list):
- self.__compute_worker_patterns(name, None, entry)
+ if isinstance(entry, str):
+ self.__compute_worker_pattern(Worker(name), entry)
+ elif isinstance(entry, list):
+ for pattern in entry:
+ self.__compute_worker_pattern(Worker(name), pattern)
elif isinstance(entry, dict):
for subname, subentry in entry.items():
- self.__compute_worker_patterns(name, subname, subentry)
+ worker = Worker(name, subname)
+ if isinstance(subentry, str):
+ self.__compute_worker_pattern(worker, subentry)
+ elif isinstance(subentry, list):
+ for pattern in subentry:
+ self.__compute_worker_pattern(worker, pattern)
+ else:
+ raise Exception("globals.workers entry '%s' is invalid" % worker)
else:
- raise Exception("globals.workers entries must contain lists of patterns")
+ raise Exception("globals.workers entry '%s' is invalid" % name)
def parse(self, config_file):
cf = open(config_file, 'r')