def runSelected(opt):
    mrd = MatrixReader(opt)
    mrd.prepare(opt.useInput, opt.refRel, opt.fromScratch)
    if opt.testList:
        definedWF = []
        for dwf in mrd.workFlows:
            definedWF.append(dwf.numId)
        for twf in opt.testList:
            if (twf not in definedWF):
                raise ValueError('Not defined workflow ', twf, ' requested')
    ret = 0
    if opt.show:
        mrd.show(opt.testList, opt.extended, opt.cafVeto)
        if opt.testList:
            print('testListected items:', opt.testList)
    else:
        mRunnerHi = MatrixRunner(mrd.workFlows, opt.nProcs, opt.nThreads)
        ret = mRunnerHi.runTests(opt)
    if opt.wmcontrol:
        if (ret != 0):
            print('Cannot go on with wmagent injection with failing workflows')
        else:
            wfInjector = MatrixInjector(opt, mode=opt.wmcontrol, options=opt.wmoptions)
            ret = wfInjector.prepare(mrd, mRunnerHi.runDirs)
            if (ret == 0):
                wfInjector.upload()
                wfInjector.submit()
    return ret
def runSelected(opt):
    mrd = MatrixReader(opt)
    mrd.prepare(opt.useInput, opt.refRel, opt.fromScratch)
    if opt.testList:
        definedWF = []
        for dwf in mrd.workFlows:
            definedWF.append(dwf.numId)
        for twf in opt.testList:
            if (twf not in definedWF):
                raise ValueError('Not defined workflow ', twf, ' requested')
    ret = 0
    if opt.show:
        mrd.show(opt.testList, opt.extended, opt.cafVeto)
        if opt.testList:
            print('testListected items:', opt.testList)
    else:
        mRunnerHi = MatrixRunner(mrd.workFlows, opt.nProcs, opt.nThreads)
        ret = mRunnerHi.runTests(opt)
    if opt.wmcontrol:
        if (ret != 0):
            print('Cannot go on with wmagent injection with failing workflows')
        else:
            wfInjector = MatrixInjector(opt, mode=opt.wmcontrol, options=opt.wmoptions)
            ret = wfInjector.prepare(mrd, mRunnerHi.runDirs)
            if (ret == 0):
                wfInjector.upload()
                wfInjector.submit()
    return ret