Skip to content

Instantly share code, notes, and snippets.

@JamesWP
Created October 1, 2016 00:55
Show Gist options
  • Select an option

  • Save JamesWP/36f8397274b2d2cd6250d4603faa4203 to your computer and use it in GitHub Desktop.

Select an option

Save JamesWP/36f8397274b2d2cd6250d4603faa4203 to your computer and use it in GitHub Desktop.
Slowest way to find base commit of repo on github
var apibase = 'https://api.github.com/repos/Homebrew/brew';
var auth = {
username: '<CHANGEME>',
apikey: '<CHANGEME>'
};
auth.token = 'Basic ' + btoa(auth.username + ':' + auth.apikey);
var opts = {
method: 'GET',
headers: {'Authorization': auth.token}
};
var dbgPrint = (msg) => ( (value) => { console.log(msg + ': %o', value); return value;} )
var apiReq = (url)=>fetch(apibase + url, opts).then(function (response) { return response.json();})
var getFirstSha = () => apiReq('/commits').then(obj=>obj[0].sha);
var getParentSha = (childSha) => {
return apiReq('/git/commits/' + childSha)
.then(obj=>( obj.parents.length!==0 ? obj.parents[0].sha : {final:obj.sha} ) );
var finished = (obj) => { return typeof(obj) == "object" };
var cont = sha => {
if(finished(sha)) dbgPrint('Complete')(sha); // base case
else getParentSha(sha).then(dbgPrint('Next')).then(cont); // reursive call
};
getFirstSha()
.then(dbgPrint('GetFistSha'))
.then(cont);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment