in eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts [291:342]
export function filterSuppressionList(filesChangedPaths: string[]): string[] {
let initialSuppressionFiles = filesChangedPaths.filter((suppressionFile) =>
suppressionFile.split("/").includes(sdkSuppressionsFileName),
);
let tspSuppressionFileList = initialSuppressionFiles.filter((suppressionFile) =>
suppressionFile.split("/").some((suppressionFile) => suppressionFile.endsWith(".Management")),
);
let swaggerSuppressionFileList = initialSuppressionFiles.filter((suppressionFile) =>
suppressionFile.split("/").includes("resource-manager"),
);
let filterSuppressionFileList = [...tspSuppressionFileList, ...swaggerSuppressionFileList];
const groupedSuppressionFileList = filterSuppressionFileList.reduce(
(acc: { [key: string]: string[] }, path) => {
const key = path.split("/")[1];
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(path);
return acc;
},
{},
);
let suppressionFileList: string[] = [];
for (const serviceName in groupedSuppressionFileList) {
if (groupedSuppressionFileList.hasOwnProperty(serviceName)) {
let serviceSuppressionList = groupedSuppressionFileList[serviceName];
if (
serviceSuppressionList.some((suppressionFile) =>
suppressionFile
.split("/")
.some((suppressionFile) => suppressionFile.endsWith(".Management")),
)
) {
suppressionFileList = suppressionFileList.concat(
serviceSuppressionList.filter((suppressionFile) =>
suppressionFile
.split("/")
.some((suppressionFile) => suppressionFile.endsWith(".Management")),
),
);
} else {
suppressionFileList = suppressionFileList.concat(serviceSuppressionList);
}
}
}
return suppressionFileList;
}