-
Notifications
You must be signed in to change notification settings - Fork 243
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
replaced git-standup with gitlog #18
Changes from 10 commits
e159030
a2f3250
83da292
8cff4ac
ed9f20e
36cb216
2146858
cf3ecc8
f38f9fd
d349d8d
752a227
29a7b70
878fea1
b30df8b
df56ba5
6922c43
3eebc08
4bc9a05
1aed41b
3f3886d
294657b
4cf5e21
86caaa0
7d6ed23
f945c1e
e1ded0d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,6 +8,11 @@ var contrib = require('blessed-contrib'); | |
var chalk = require('chalk'); | ||
var parrotSay = require('parrotsay-api'); | ||
var weather = require('weather-js'); | ||
var gitUsername = require('git-user-name')(); | ||
var subdirs = require('subdirs'); | ||
var isGit = require('is-git'); | ||
var gitlog = require('gitlog'); | ||
var async = require("async"); | ||
|
||
var screen = blessed.screen( | ||
{fullUnicode: true, // emoji or bust | ||
|
@@ -103,21 +108,83 @@ function doTheTweets() { | |
function doTheCodes() { | ||
var todayCommits = 0; | ||
var weekCommits = 0; | ||
|
||
var today = spawn('sh ' + __dirname + '/standup-helper.sh', [config.repos], {shell:true}); | ||
todayBox.content = ''; | ||
today.stdout.on('data', data => { | ||
todayCommits = getCommits(`${data}`, todayBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
weekBox.content = ''; | ||
|
||
var showError = function(err) { | ||
getCommits("ERROR: "+err, todayBox); | ||
screen.render(); | ||
} | ||
|
||
getGitRepos(config.repos, config.reposDepth-1, (err, allRepos) => { | ||
if (err) return showError(err); | ||
getGitCommits(allRepos, 1, (err, data) => { | ||
if (err) return showError(err); | ||
todayCommits = getCommits(`${data}`, todayBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
screen.render(); | ||
}); | ||
getGitCommits(allRepos, 7, (err, data) => { | ||
if (err) return showError(err); | ||
weekCommits = getCommits(`${data}`, weekBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
screen.render(); | ||
}); | ||
}); | ||
} | ||
|
||
var week = spawn('sh ' + __dirname + '/standup-helper.sh', ['-d 7', config.repos], {shell:true}); | ||
weekBox.content = ''; | ||
week.stdout.on('data', data => { | ||
weekCommits = getCommits(`${data}`, weekBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
screen.render(); | ||
/** | ||
* Go through all `repos` and look for subdirectories up to a given `depth` | ||
* and look for repositories. | ||
* Calls `callback` with array of repositories. | ||
*/ | ||
function getGitRepos(repos, depth, callback) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It looks like PR #36 may land opening up more ES6 usage. It may be good to wait for that to land then refactor these extra functions into isolated modules to keep the main care file smaller. |
||
var allRepos = []; | ||
async.each(repos, (repo, repoDone) => { | ||
subdirs(repo, depth, (err, dirs) => { | ||
if (err) return callback( | ||
`😥 Error "${err.code}" doing "${err.syscall}" on directory: ${err.path}`, null); | ||
if (dirs) dirs.push(repo); | ||
async.each(dirs, (dir, dirDone) => { | ||
isGit(dir, (err, isGit) => { | ||
if (err) callback(err, null); | ||
if (!dir.includes('.git') && isGit) { | ||
allRepos.push(dir); | ||
} | ||
dirDone(); | ||
}); | ||
}, repoDone); | ||
}); | ||
}, err => { | ||
callback(err, allRepos.sort()); | ||
}); | ||
} | ||
|
||
/** | ||
* returns all commits of the last given `days`. | ||
* Calls `callback` with line-seperated-strings of the formatted commits. | ||
*/ | ||
function getGitCommits(repos, days, callback) { | ||
var cmts = []; | ||
async.each(repos, (repo, repoDone) => { | ||
try { | ||
gitlog({ | ||
repo: repo, | ||
since: `${days} days ago`, | ||
fields: ['abbrevHash', 'subject', 'authorDateRel', 'authorName'], | ||
author: gitUsername | ||
}, (err, logs) => { | ||
if (err) callback(err, null); | ||
logs.forEach(c => { | ||
cmts.push(`${c.abbrevHash} - ${c.subject} (${c.authorDateRel}) <${c.authorName.replace('@end@\n','')}>`); | ||
}); | ||
repoDone(); | ||
}); | ||
} catch(err) { | ||
callback(err, null); | ||
} | ||
}, err => { | ||
callback(err, cmts.length > 0 ? cmts.join('\n') : "Nothing yet. Start small!"); | ||
}); | ||
} | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,10 @@ var config = { | |
apiKeys: (process.env.TTC_APIKEYS || 'true') === 'true', | ||
|
||
// Directories in which to run git-standup on for a list of your recent commits. | ||
repos: (process.env.TTC_REPOS || '~/Code').replace(/,/g, ' '), | ||
repos: (process.env.TTC_REPOS || '~/Code').split(','), | ||
|
||
// The directory-depth on how to look for git-repos. Use with care! | ||
reposDepth: process.env.TTC_REPOS_DEPTH || 1, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is already called There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sorry...merges and stuff...will fix |
||
|
||
// Where to check the weather for. | ||
// It's using weather.service.msn.com behind the curtains. | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,15 +13,15 @@ | |
"blessed": "^0.1.81", | ||
"blessed-contrib": "^4.7.5", | ||
"chalk": "^1.1.3", | ||
|
||
"git-user-name": "^1.2.0", | ||
"gitlog": "^2.4.0", | ||
"is-git": "0.0.1", | ||
"parrotsay-api": "^0.1.1", | ||
"scraperjs": "^1.2.0", | ||
"subdirs": "^1.0.1", | ||
"twit": "^2.2.5", | ||
"weather-js": "^2.0.0" | ||
}, | ||
"peerDependencies": { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pls add this back in There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @notwaldorf Wow! You actually reviewed this at #jsconfeu ! 🎉 Thx. I'll try to have a look tonight. |
||
"git-standup": "^2.1.8" | ||
}, | ||
"scripts": { | ||
"start": "node care.js" | ||
} | ||
|
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return
on a new line, please (here and everywhere)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
noproblemo