export function filterSuppressionList()

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;
}