From b4552492bc51d2062489cf59836c3cd6425f1e3f Mon Sep 17 00:00:00 2001 From: peri4 Date: Tue, 25 Apr 2023 15:12:38 +0300 Subject: [PATCH] works --- src/org/SHS/Platforms.groovy | 59 +++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/src/org/SHS/Platforms.groovy b/src/org/SHS/Platforms.groovy index 703292e..0fa1e72 100644 --- a/src/org/SHS/Platforms.groovy +++ b/src/org/SHS/Platforms.groovy @@ -18,34 +18,39 @@ class Platforms { public def root() {return _root;} - public void forEach(functor, stageSuffix = "", whiteList = [], blackList = []) { - steps.print("whiteList = ${whiteList}") - steps.print("blackList = ${blackList}") - _root.Platforms.each { key, dist -> - if (dist.enabled) { - def ok = true; - def dn = key.toLowerCase() - if (whiteList.size() > 0) { - whiteList.each { l -> - if (dn.indexOf(l) < 0) { - ok = false; - steps.print("${key} skip because of whiteList") - } - } - } - blackList.each { l -> - if (dn.indexOf(l) >= 0) { - ok = false; - steps.print("${key} skip because of blackList") - } - } - if (ok) { - steps.stage ("${key}${stageSuffix}") { - functor(dist) - } - } + public void forEach(Map args, functor) { + def prefix = args.stagePrefix ?: "" + def suffix = args.stageSuffix ?: "" + filterJSON(args.whiteList ?: [], args.blackList ?: []).each { key, dist -> + //steps.print("final ${key}${suffix}") + steps.stage ("${prefix}${key}${suffix}") { + functor(dist) } } } -} \ No newline at end of file + //@NonCPS + private Boolean filterDist(name, dist, whiteList, blackList) { + if (!dist.enabled) { + return false; + } + def in_white = true, in_black = false + def dn = name.toLowerCase() + if (whiteList.size() > 0) { + in_white = false + whiteList.each { l -> if (dn.indexOf(l) >= 0) { in_white = true } } + } + blackList.each { l -> if (dn.indexOf(l) >= 0) { in_black = true } } + return in_white && !in_black + } + + private def filterJSON(whiteList, blackList) { + def ret = [:] + _root.Platforms.each({name, dist -> + if (filterDist(name, dist, whiteList, blackList)) + ret[name] = dist + }) + return ret + } + +}