import { spawn } from "node:child_process" import fs from "node:fs/promises" const README_FILE_NAME = new URL("../README.md", import.meta.url) const readme = await fs.open(README_FILE_NAME, "r+") const readmeContent = await readme.readFile() const githubcontrib = spawn("npx", [ 'githubcontrib', '--owner', 'transloadit', '--repo', 'uppy', '--cols', '6', '--format', 'md', '--showlogin', 'true', '--sortOrder', 'desc', ], { stdio: ['ignore', 'pipe', 'inherit'], }); githubcontrib.on('error', console.error) // Detect start of contributors section. const START_TAG = Buffer.from("\n") let START_TAG_POSITION = readmeContent.indexOf(START_TAG) + START_TAG.byteLength let cursor = START_TAG_POSITION for await (const data of githubcontrib.stdout) { const { bytesWritten } = await readme.write(data.toString('utf-8'), cursor, "utf-8") cursor += bytesWritten } if(cursor === START_TAG_POSITION) { console.log('Empty response from githubcontrib. GitHub’s rate limit?') await readme.close() process.exit(1) } // Write the end of the file. await readme.write( readmeContent, readmeContent.indexOf(""), undefined, cursor ) await readme.close()