Skip to content

Instantly share code, notes, and snippets.

@Adimvicky
Last active July 25, 2020 23:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Adimvicky/70899b247314415faa599cee2c52434e to your computer and use it in GitHub Desktop.
Save Adimvicky/70899b247314415faa599cee2c52434e to your computer and use it in GitHub Desktop.
Contributors markdown list [Alphabetical sorting]
const fs = require("fs");
const path = require("path");
const request = require("request-promise");
let apiUrl = "https://api.github.com/repos/firstcontributions/first-contributions/contributors?per_page=100";
let pageLimit = 5;
let filePath = path.join(__dirname,'Contributor.md');
for(let page = 1; page <= pageLimit; page++){
let options = {
uri : `${apiUrl}&page=${page}`,
headers: {
'User-Agent': 'Request-Promise'
},
json : true
}
request(options)
.then(data => {
if(data){
writeToFile(data, page);
} else {
console.log(`Data retrieval failed for page ${page}`);
}
}).
catch(e => {
console.log(`Data retrieval failed for page ${page} with error => ${e}`);
})
};
function writeToFile(data, page){
for(let profile of data){
let markdown = `* [${profile.login}](${profile.html_url})\n`;
fs.appendFile(filePath,markdown,(err) => {
if(page == pageLimit){
setTimeout(() => {
writeSortedDataToFile();
},3000)
}
});
};
};
function writeSortedDataToFile(){
fs.readFile(filePath,(err,data) => {
if(data){
data = data.toString();
let dataArray = data.split('\n');
let sortedDataArray = dataArray.sort((a,b) => a.localeCompare(b))
let sortedDataString = sortedDataArray.join('\n');
fs.writeFile(filePath,`${sortedDataString}`,() => {});
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment