Skip to content

Commit

Permalink
chore: auto update stars button count (microsoft#563)
Browse files Browse the repository at this point in the history
* chore: auto update stars button count

* nits
  • Loading branch information
mxschmitt committed May 9, 2022
1 parent cce9181 commit bea0a87
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/components/GitHubStarButton/index.tsx
Expand Up @@ -6,7 +6,7 @@ type StarButtonProps = {
repo: string
}

const STARS = '37k+';
const STARS = '37k+'; // NOTE: this line is generated by src/generate.js. Do not change!

const StarButton: React.FC<StarButtonProps> = ({owner, repo}) => {
return (
Expand Down
46 changes: 42 additions & 4 deletions src/generate.js
Expand Up @@ -16,14 +16,52 @@

//@ts-check

const fs = require('fs');
const path = require('path');
const https = require('https');
const { Generator } = require('./generator');
const { JavaScriptFormatter } = require('./format_js');
const { PythonFormatter } = require('./format_python');
const { JavaFormatter } = require('./format_java');
const { CSharpFormatter } = require('./format_csharp');

new Generator('js', path.join(__dirname, '..', 'nodejs', 'docs'), new JavaScriptFormatter());
new Generator('python', path.join(__dirname, '..', 'python', 'docs'), new PythonFormatter());
new Generator('java', path.join(__dirname, '..', 'java', 'docs'), new JavaFormatter());
new Generator('csharp', path.join(__dirname, '..', 'dotnet', 'docs'), new CSharpFormatter());
(async () => {
new Generator('js', path.join(__dirname, '..', 'nodejs', 'docs'), new JavaScriptFormatter());
new Generator('python', path.join(__dirname, '..', 'python', 'docs'), new PythonFormatter());
new Generator('java', path.join(__dirname, '..', 'java', 'docs'), new JavaFormatter());
new Generator('csharp', path.join(__dirname, '..', 'dotnet', 'docs'), new CSharpFormatter());

await updateStarsButton();
})().catch(error => {
console.error(error);
process.exit(error);
});

async function updateStarsButton() {
const kMagicComment = '// NOTE: this line is generated by src/generate.js. Do not change!';
const kGitHubStarsButtonSource = path.join(__dirname, 'components/GitHubStarButton/index.tsx');
const repoInfoResponse = await new Promise((resolve, reject) => {
https.get('https://api.github.com/repos/microsoft/playwright', {
headers: {
'User-Agent': 'playwright-docs-generator',
},
}, res => {
let data = '';
res.on('data', chunk => {
data += chunk;
});
res.on('end', () => {
if (res.statusCode >= 200 && res.statusCode < 300)
resolve(JSON.parse(data));
else
reject(new Error(`Request failed with status code ${res.statusCode}: ${data}`));
})
res.on('error', (error) => reject(error))
});
});
const roundedStarsCount = Math.floor(repoInfoResponse.stargazers_count / 1000);
let lines = (await fs.promises.readFile(kGitHubStarsButtonSource, 'utf8')).split('\n');
const starLineIndex = lines.findIndex(line => line.includes(kMagicComment));
lines[starLineIndex] = `const STARS = '${roundedStarsCount}k+'; ${kMagicComment}`;
await fs.promises.writeFile(kGitHubStarsButtonSource, lines.join('\n'));
}

0 comments on commit bea0a87

Please sign in to comment.