diff --git a/secop_psi/sea.py b/secop_psi/sea.py index 2ad4f90..3ac2a9d 100644 --- a/secop_psi/sea.py +++ b/secop_psi/sea.py @@ -325,6 +325,22 @@ class SeaConfigCreator(SeaClient): result.append('%s: %s' % (filename, ','.join(n for n in descr))) raise SystemExit('; '.join(result)) + @Command(StringType(), result=StringType()) + def query(self, cmd): + """a request checking for errors and accepting 0 or 1 line as result""" + errors = [] + reply = None + for line in self.request(cmd).split('\n'): + if line.strip().startswith('ERROR:'): + errors.append(line[6:].strip()) + elif reply is None: + reply = line.strip() + else: + self.log.info('SEA: superfluous reply %r to %r', reply, cmd) + if errors: + raise HardwareError('; '.join(errors)) + return reply + SEA_TO_SECOPTYPE = { 'float': FloatRange(),