-
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 14 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 |
---|---|---|
@@ -1,15 +1,18 @@ | ||
#!/usr/bin/env node | ||
var config = require(__dirname + '/config.js'); | ||
var twitterbot = require(__dirname + '/twitterbot.js'); | ||
var gitbot = require(__dirname + '/gitbot.js'); | ||
|
||
var spawn = require('child_process').spawn; | ||
var blessed = require('blessed'); | ||
var contrib = require('blessed-contrib'); | ||
var chalk = require('chalk'); | ||
var parrotSay = require('parrotsay-api'); | ||
var bunnySay = require('sign-bunny'); | ||
var weather = require('weather-js'); | ||
|
||
console.dir(gitbot); | ||
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. remove :) 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...gone |
||
debugger; | ||
|
||
var screen = blessed.screen( | ||
{fullUnicode: true, // emoji or bust | ||
smartCSR: true, | ||
|
@@ -115,21 +118,35 @@ function doTheTweets() { | |
function doTheCodes() { | ||
var todayCommits = 0; | ||
var weekCommits = 0; | ||
|
||
var today = spawn('sh ' + __dirname + '/standup-helper.sh', ['-m ' + config.depth, config.repos], {shell:true}); | ||
todayBox.content = ''; | ||
today.stdout.on('data', data => { | ||
todayCommits = getCommits(`${data}`, todayBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
screen.render(); | ||
}); | ||
|
||
var week = spawn('sh ' + __dirname + '/standup-helper.sh', ['-m ' + config.depth + ' -d 7', config.repos], {shell:true}); | ||
weekBox.content = ''; | ||
week.stdout.on('data', data => { | ||
weekCommits = getCommits(`${data}`, weekBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
|
||
function getCommits(data, box) { | ||
var commitRegex = /(.......) (- .*)/g; | ||
var content = colorizeLog(data); | ||
box.content += content; | ||
return (box.content.match(commitRegex) || []).length; | ||
} | ||
|
||
function showError(err, box) { | ||
getCommits(`😥 ${err}`, box); | ||
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. Is this bit actually needed? For an error, can't we just do 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. good idea! |
||
screen.render(); | ||
} | ||
|
||
gitbot.findGitRepos(config.repos, config.reposDepth-1, (err, allRepos) => { | ||
if (err) return showError(err); | ||
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.
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. noproblemo |
||
gitbot.getCommitsFromRepos(allRepos, 1, (err, data) => { | ||
if (err) return showError(err, todayBox); | ||
todayCommits = getCommits(`${data}`, todayBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
screen.render(); | ||
}); | ||
gitbot.getCommitsFromRepos(allRepos, 7, (err, data) => { | ||
if (err) return showError(err, weekBox); | ||
weekCommits = getCommits(`${data}`, weekBox); | ||
updateCommitsGraph(todayCommits, weekCommits); | ||
screen.render(); | ||
}); | ||
}); | ||
} | ||
|
||
|
@@ -169,13 +186,6 @@ function makeGraphBox(label) { | |
return options; | ||
} | ||
|
||
var commitRegex = /(.......) (- .*)/g; | ||
function getCommits(data, box) { | ||
var content = colorizeLog(data); | ||
box.content += content; | ||
return (box.content.match(commitRegex) || []).length; | ||
} | ||
|
||
function updateCommitsGraph(today, week) { | ||
commits.setData({titles: ['today', 'week'], data: [today, week]}) | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,7 +11,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 |
||
|
||
// Directory-depth to look for git repositories. | ||
depth: (process.env.TTC_REPOS_DEPTH || 1), | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
const gitUsername = require('git-user-name')(); | ||
const resolve = require('resolve-dir'); | ||
const subdirs = require('subdirs'); | ||
const isGit = require('is-git'); | ||
const gitlog = require('gitlog'); | ||
const path = require('path'); | ||
const async = require("async"); | ||
|
||
/** | ||
* Go through all `repos` and look for subdirectories up to a given `depth` | ||
* and look for repositories. | ||
* Calls `callback` with array of repositories. | ||
*/ | ||
function findGitRepos(repos, depth, callback) { | ||
let allRepos = []; | ||
async.each(repos, (repo, repoDone) => { | ||
repo = resolve(repo); | ||
subdirs(repo, depth, (err, dirs) => { | ||
if (err) { | ||
switch (err.code) { | ||
case 'ENOENT': | ||
return callback(`Could not open directory directory: ${err.path}\n`, null); | ||
case 'EACCES': | ||
return; //ignore if no access | ||
default: | ||
return callback(`Error "${err.code}" doing "${err.syscall}" on directory: ${err.path}\n`, 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 getCommitsFromRepos(repos, days, callback) { | ||
let 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!"); | ||
}); | ||
} | ||
|
||
module.exports.findGitRepos = findGitRepos; | ||
module.exports.getCommitsFromRepos = getCommitsFromRepos; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,15 +13,17 @@ | |
"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", | ||
"resolve-dir": "^1.0.0", | ||
"sign-bunny": "^1.0.0", | ||
"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.
🙌