diff --git a/README.md b/README.md
index 184193331..8708ace10 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@
+
[
](https://join.slack.com/t/codeceptjs/shared_invite/enQtMzA5OTM4NDM2MzA4LWE4MThhN2NmYTgxNTU5MTc4YzAyYWMwY2JkMmZlYWI5MWQ2MDM5MmRmYzZmYmNiNmY5NTAzM2EwMGIwOTNhOGQ) [
](https://codecept.discourse.group) [![NPM version][npm-image]][npm-url] [
](https://hub.docker.com/r/codeceptjs/codeceptjs)
[](https://github.com/codeceptjs/CodeceptJS/edit/3.x/docs/ai.md) [](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
@@ -292,49 +293,316 @@ When using Typescript, replace `module.exports` with `export` for autocompletion
## Contributors
-Thanks all to those who are and will have contributing to this awesome project!
-
-[//]: contributor-faces
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[//]: contributor-faces
-
-## License
-
-MIT © [CodeceptJS Team](http://codecept.io)
-
-[npm-image]: https://badge.fury.io/js/codeceptjs.svg
-[npm-url]: https://npmjs.org/package/codeceptjs
-[travis-image]: https://travis-ci.org/Codeception/codeceptjs.svg?branch=master
-[travis-url]: https://travis-ci.org/Codeception/codeceptjs
-[daviddm-image]: https://david-dm.org/Codeception/codeceptjs.svg?theme=shields.io
-[daviddm-url]: https://david-dm.org/Codeception/codeceptjs
-[coveralls-image]: https://coveralls.io/repos/Codeception/codeceptjs/badge.svg
-[coveralls-url]: https://coveralls.io/r/Codeception/codeceptjs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 84d2cf82b..e7b35bfdc 100644
--- a/package.json
+++ b/package.json
@@ -135,7 +135,6 @@
"apollo-server-express": "3.13.0",
"chai-as-promised": "7.1.2",
"chai-subset": "1.6.0",
- "contributor-faces": "1.1.0",
"documentation": "14.0.3",
"electron": "33.2.1",
"eslint": "9.17.0",
diff --git a/runok.js b/runok.js
index ca24886f6..2b034459c 100755
--- a/runok.js
+++ b/runok.js
@@ -9,7 +9,6 @@ const {
tasks: { git, copy, exec, replaceInFile, npmRun, npx, writeToFile },
runok,
} = require('runok')
-const contributors = require('contributor-faces')
const { execSync } = require('node:child_process')
const semver = require('semver')
@@ -474,15 +473,69 @@ ${changelog}`
async contributorFaces() {
// update contributors list in readme
- await contributors.update(null, { exclude: 'actions-user' })
- let readmeContent = fs.readFileSync('README.md')
- readmeContent = readmeContent
- .toString()
- .replace(
- '
\n',
- '',
- )
- fs.writeFileSync('./README.md', readmeContent)
+ const owner = 'codeceptjs'
+ const repo = 'codeceptjs'
+ const token = process.env.GH_TOKEN
+
+ try {
+ const response = await axios.get(
+ `https://api.github.com/repos/${owner}/${repo}/contributors`,
+ {
+ headers: { Authorization: `token ${token}` },
+ },
+ );
+
+ // Filter out bot accounts
+ const filteredContributors = response.data.filter(
+ (contributor) => !contributor.login.includes('dependabot'),
+ ).filter(
+ (contributor) => !contributor.login.includes('actions-user'),
+ );
+
+ const contributors = filteredContributors.map((contributor) => {
+ return `
+
+ `;
+ });
+
+ // Wrap contributors in a grid container
+ const contributorsGrid = `
+
+ ${contributors.join('\n')}
+
+ `;
+
+ const readmePath = path.join(__dirname, 'README.md');
+ let content = fs.readFileSync(readmePath, 'utf-8');
+
+ // Replace or add the contributors section in the README
+ const contributorsSectionRegex = /(## Contributors\s*\n)([\s\S]*?)(\n##|$)/;
+ const match = content.match(contributorsSectionRegex);
+
+ if (match) {
+ const updatedContent = content.replace(
+ contributorsSectionRegex,
+ `${match[1]}\n${contributorsGrid}\n${match[3]}`,
+ );
+ fs.writeFileSync(readmePath, updatedContent, 'utf-8');
+ } else {
+ // If no contributors section exists, add one at the end
+ content += `\n${contributorsGrid}`;
+ fs.writeFileSync(readmePath, content, 'utf-8');
+ }
+
+ console.log('Contributors section updated successfully!');
+ } catch (error) {
+ console.error('Error fetching contributors:', error.message);
+ }
},
getCurrentBetaVersion() {