in packages/repocop/src/evaluation/repository.ts [125:174]
function containsSupportedDepGraphLanguagesWithWorkflows(
repo: Repository,
workflowsForRepo: guardian_github_actions_usage[],
languagesNotNativelySupported: string[],
languages: string[],
): boolean {
const remainingLanguagesSupportedByDepGraphIntegrator: string[] =
languagesNotNativelySupported.filter((language) =>
depGraphIntegratorSupportedLanguages.includes(language),
);
// are all unsupported languages supported by dep graph integrator?
const allRemainingLanguagesSupportedByDepGraphIntegrator =
languagesNotNativelySupported.every((language) =>
depGraphIntegratorSupportedLanguages.includes(language),
);
const everyDepGraphSupportedLanguageHasWorkflow =
remainingLanguagesSupportedByDepGraphIntegrator.every((language) => {
const repoHasWorkflowForLanguage =
doesRepoHaveDepSubmissionWorkflowForLanguage(
repo,
workflowsForRepo,
language as DepGraphLanguage,
);
if (!repoHasWorkflowForLanguage) {
console.log(
`${repo.name} contains ${language} which is supported by Dependency Graph Integrator for Dependabot, but it doesn't have a dependency submission workflow`,
);
}
return repoHasWorkflowForLanguage;
});
if (!allRemainingLanguagesSupportedByDepGraphIntegrator) {
console.log(
`${repo.name} contains the following languages not supported by Dependabot or Dependency Graph Integrator`,
languages.filter(
(language) =>
!depGraphIntegratorSupportedLanguages.includes(language) &&
!supportedDependabotLanguages.includes(language),
),
);
}
return (
allRemainingLanguagesSupportedByDepGraphIntegrator &&
everyDepGraphSupportedLanguageHasWorkflow
);
}