#
# exclude jobs prior to a designated job from a DAX process graph
#
#
#
minstage=$1
maxstage=$2
a1=`mktemp /tmp/awk.XXXXXX`
dax=`mktemp /tmp/dax.XXXXXX`
cat >$dax
maxlevel=`maxlevel <$dax`
cat <$a1
BEGIN {
maxlevel = $maxlevel;
}
// {
job = job \$0 "\n";
}
/job>/ {
jobtext[id] = job;
job = "";
}
// {
sub("^ *","",parents);
parlist[child] = parents;
}
function selstage(minstage,maxstage) {
maxlev = maxlevel - minstage + 1;
minlev = maxlevel - maxstage + 1;
for(j in jobtext) {
found=match(jobtext[j],"level=\"[0-9][0-9]*");
if(found) {
level=substr(jobtext[j],RSTART,RLENGTH);
sub("level=\"","",level);
if ( (level < minlev) || (level > maxlev) ) {
delete jobtext[j];
}
}
}
}
END {
selstage($minstage,$maxstage);
print("");
for (j in jobtext) {
print(jobtext[j]);
}
print "";
for ( c in parlist ) {
printf(" \n", c);
split(parlist[c],plist," ");
for(p in plist) {
printf(" \n", plist[p]);
}
print(" \n");
}
print "";
}
EOF
awk -f $a1 $dax
rm $a1