diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000000..f62b648147 --- /dev/null +++ b/.mailmap @@ -0,0 +1,10 @@ +Anna Henningsen Anna Henningsen +Anna Henningsen Anna Henningsen +Anna Henningsen Anna Henningsen +Anna Herlihy aherlihy +Anna Herlihy anna herlihy +Irina Shestak Irina Shestak +Massimiliano Marcon Massimiliano Marcon +Maurizio Casimirri mcasimir +Rhys Howell Rhys +Rhys Howell Rhys Howell diff --git a/AUTHORS b/AUTHORS index 190da58ba9..a1c7a107bf 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,4 +1,11 @@ -Anna Herlihy Durran Jordan +Maurizio Casimirri +Anna Herlihy Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Henningsen +Massimiliano Marcon +Liudmila Kornilova +Lucas Hrabovsky +Mark Smith +Maxime diff --git a/packages/async-rewriter/AUTHORS b/packages/async-rewriter/AUTHORS index 190da58ba9..872b4f0ab8 100644 --- a/packages/async-rewriter/AUTHORS +++ b/packages/async-rewriter/AUTHORS @@ -1,4 +1,8 @@ Anna Herlihy Durran Jordan +Maurizio Casimirri Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Henningsen +Liudmila Kornilova +Massimiliano Marcon diff --git a/packages/browser-repl/AUTHORS b/packages/browser-repl/AUTHORS index 190da58ba9..4b454d7a9c 100644 --- a/packages/browser-repl/AUTHORS +++ b/packages/browser-repl/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy +Maurizio Casimirri Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Anna Herlihy +Rhys Howell +Anna Henningsen +Massimiliano Marcon diff --git a/packages/browser-runtime-core/AUTHORS b/packages/browser-runtime-core/AUTHORS index 190da58ba9..5e2f5ffc6a 100644 --- a/packages/browser-runtime-core/AUTHORS +++ b/packages/browser-runtime-core/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy Durran Jordan +Maurizio Casimirri Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Herlihy +Anna Henningsen +Massimiliano Marcon diff --git a/packages/browser-runtime-electron/AUTHORS b/packages/browser-runtime-electron/AUTHORS index 190da58ba9..16aaba625b 100644 --- a/packages/browser-runtime-electron/AUTHORS +++ b/packages/browser-runtime-electron/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy +Maurizio Casimirri Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Herlihy +Anna Henningsen +Massimiliano Marcon diff --git a/packages/build/AUTHORS b/packages/build/AUTHORS new file mode 100644 index 0000000000..c4b5dfd98a --- /dev/null +++ b/packages/build/AUTHORS @@ -0,0 +1,6 @@ +Durran Jordan +Irina Shestak +Maurizio Casimirri +Anna Henningsen +Anna Herlihy +Rhys Howell diff --git a/packages/cli-repl/AUTHORS b/packages/cli-repl/AUTHORS index 190da58ba9..6614554ae9 100644 --- a/packages/cli-repl/AUTHORS +++ b/packages/cli-repl/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy -Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Durran Jordan +Anna Herlihy +Maurizio Casimirri +Anna Henningsen +Rhys Howell +Massimiliano Marcon diff --git a/packages/compass-shell/AUTHORS b/packages/compass-shell/AUTHORS index 190da58ba9..52a0efbdc5 100644 --- a/packages/compass-shell/AUTHORS +++ b/packages/compass-shell/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy +Maurizio Casimirri +Rhys Howell Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Anna Henningsen +Anna Herlihy +Massimiliano Marcon diff --git a/packages/errors/AUTHORS b/packages/errors/AUTHORS index 190da58ba9..c46de1597f 100644 --- a/packages/errors/AUTHORS +++ b/packages/errors/AUTHORS @@ -1,4 +1,6 @@ -Anna Herlihy -Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Maurizio Casimirri +Anna Henningsen +Durran Jordan +Rhys Howell +Anna Herlihy diff --git a/packages/history/AUTHORS b/packages/history/AUTHORS index 190da58ba9..b4d137111b 100644 --- a/packages/history/AUTHORS +++ b/packages/history/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy -Durran Jordan +Maurizio Casimirri Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Durran Jordan +Anna Henningsen +Anna Herlihy +Massimiliano Marcon diff --git a/packages/i18n/AUTHORS b/packages/i18n/AUTHORS index 190da58ba9..5a467b1350 100644 --- a/packages/i18n/AUTHORS +++ b/packages/i18n/AUTHORS @@ -1,4 +1,7 @@ +Maurizio Casimirri Anna Herlihy Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Henningsen +Massimiliano Marcon diff --git a/packages/java-shell/AUTHORS b/packages/java-shell/AUTHORS new file mode 100644 index 0000000000..f46f208dad --- /dev/null +++ b/packages/java-shell/AUTHORS @@ -0,0 +1,7 @@ +Durran Jordan +Irina Shestak +Maurizio Casimirri +Anna Herlihy +Rhys Howell +Anna Henningsen +Liudmila Kornilova diff --git a/packages/service-provider-core/AUTHORS b/packages/service-provider-core/AUTHORS index 190da58ba9..5a467b1350 100644 --- a/packages/service-provider-core/AUTHORS +++ b/packages/service-provider-core/AUTHORS @@ -1,4 +1,7 @@ +Maurizio Casimirri Anna Herlihy Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Henningsen +Massimiliano Marcon diff --git a/packages/service-provider-server/AUTHORS b/packages/service-provider-server/AUTHORS index 190da58ba9..d27f2f384c 100644 --- a/packages/service-provider-server/AUTHORS +++ b/packages/service-provider-server/AUTHORS @@ -1,4 +1,7 @@ -Anna Herlihy +Maurizio Casimirri Durran Jordan +Anna Herlihy Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Henningsen +Massimiliano Marcon diff --git a/packages/shell-api/AUTHORS b/packages/shell-api/AUTHORS index 190da58ba9..74c50c4e00 100644 --- a/packages/shell-api/AUTHORS +++ b/packages/shell-api/AUTHORS @@ -1,4 +1,7 @@ Anna Herlihy +Maurizio Casimirri Durran Jordan Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com +Rhys Howell +Anna Henningsen +Massimiliano Marcon diff --git a/packages/shell-evaluator/AUTHORS b/packages/shell-evaluator/AUTHORS index 190da58ba9..08bd888d4d 100644 --- a/packages/shell-evaluator/AUTHORS +++ b/packages/shell-evaluator/AUTHORS @@ -1,4 +1,6 @@ +Irina Shestak Anna Herlihy +Maurizio Casimirri +Rhys Howell +Anna Henningsen Durran Jordan -Irina Shestak -Maurizio Casimirri maurizio.cas@gmail.com diff --git a/scripts/generate-authors.js b/scripts/generate-authors.js new file mode 100644 index 0000000000..c6cc4cafbb --- /dev/null +++ b/scripts/generate-authors.js @@ -0,0 +1,70 @@ +#!/usr/bin/env node + +/* + * Generate an AUTHOR file on the repo root and on each lerna package based on git log. + * + * Add / change aliases in .mailmap to avoid duplications and show the correct + * names / emails. + */ + +const { execSync } = require('child_process'); +const path = require('path'); +const fs = require('fs'); + +const packageRootPath = path.resolve(__dirname, '..'); + + + +function getAuthorsGitLog(packagePath) { + return execSync( + `git log --format='%aN <%aE>' --use-mailmap -- ${packagePath}`, + { cwd: packageRootPath } + ).toString().trim().split('\n'); +} + +function getAuthorsOrderedByCommitNumber(packagePath) { + const authorsMap = {}; + + for (const authorName of getAuthorsGitLog(packagePath)) { + authorsMap[authorName] = authorName in authorsMap ? authorsMap[authorName] + 1 : 1; + } + + const compareAuthors = ([name1, commitCount1], [name2, commitCount2]) => { + if (commitCount1 === commitCount2) { + return (name1 > name2) ? 1: -1; + } + + return commitCount1 > commitCount2 ? -1 : 1; + }; + + const authors = Object.entries(authorsMap) + .sort(compareAuthors) + .map(([name]) => { + return name; + }); + + return authors; +} + +function getAllPackages() { + return JSON.parse(execSync(`lerna list -a --loglevel=error --json`, + { cwd: packageRootPath } + ).toString().trim()); +} + +function renderAuthorsFileContent(authors) { + return `${authors.join('\n')}\n`; +} + +const packages = getAllPackages(); + +for (const { location } of packages) { + const packagePath = path.relative(packageRootPath, location); + const authors = getAuthorsOrderedByCommitNumber(packagePath); + fs.writeFileSync(path.resolve(packagePath, 'AUTHORS'), renderAuthorsFileContent(authors)); +} + +fs.writeFileSync( + path.resolve(packageRootPath, 'AUTHORS'), + renderAuthorsFileContent(getAuthorsOrderedByCommitNumber('.')) +);