in scripts-ts/src/updateAuthors.ts [175:228]
export function addAuthorsToContent(
authorsContent: string,
authors: Author[]
): AddAuthorsResult {
const existingEmails = extractExistingEmails(authorsContent);
const existingGitHubUrls = extractExistingGitHubUrls(authorsContent);
const newAuthors = authors.filter(
(a) => !existingEmails.has(a.mail) && !existingGitHubUrls.has(a.url)
);
if (newAuthors.length === 0) {
return { content: authorsContent, newAuthors: [] };
}
const jetBrainsAuthors = newAuthors.filter(isJetBrainsEmployee);
const regularAuthors = newAuthors.filter((a) => !isJetBrainsEmployee(a));
let result = authorsContent;
// Add JetBrains employees to JetBrains IP section
if (jetBrainsAuthors.length > 0) {
const insertionPoint = findSectionEndOffset(
result,
JETBRAINS_IP_HEADER,
PREVIOUS_CONTRIBUTORS_HEADER
);
if (insertionPoint !== -1) {
const insertionString = authorsToMdString(jetBrainsAuthors, true);
result =
result.slice(0, insertionPoint) +
insertionString +
result.slice(insertionPoint);
}
}
// Add regular contributors to Contributors section
if (regularAuthors.length > 0) {
const insertionPoint = findSectionEndOffset(
result,
CONTRIBUTORS_HEADER,
JETBRAINS_IP_HEADER
);
if (insertionPoint !== -1) {
const insertionString = authorsToMdString(regularAuthors, false);
result =
result.slice(0, insertionPoint) +
insertionString +
result.slice(insertionPoint);
}
}
return { content: result, newAuthors };
}