aboutsummaryrefslogtreecommitdiffstats
path: root/tools/git-weekly-changelog.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/git-weekly-changelog.js')
-rw-r--r--tools/git-weekly-changelog.js113
1 files changed, 66 insertions, 47 deletions
diff --git a/tools/git-weekly-changelog.js b/tools/git-weekly-changelog.js
index 4084b89..ebc362d 100644
--- a/tools/git-weekly-changelog.js
+++ b/tools/git-weekly-changelog.js
@@ -1,10 +1,20 @@
// script to collect the weekly changelog in a git repo
+var testing = true;
+var email_to = '';
+var email_bcc = 'cbrake@bec-systems.com,';
+
+if (!testing) {
+ email_bcc += 'beagleboard@googlegroups.com';
+ email_to += 'openembedded-core@lists.openembedded.org, openembedded-devel@lists.openembedded.org, angstrom-distro-devel@linuxtogo.org';
+}
+
var path = require('path'),
child_process = require('child_process'),
fs = require('fs'),
- nodemailer = require('nodemailer');
-
+ nodemailer = require('nodemailer'),
+ git = require('./git'),
+ dateutil = require('./dateutil');
String.prototype.format = function() {
var formatted = this;
@@ -15,25 +25,21 @@ String.prototype.format = function() {
return formatted;
};
-var projects = ['meta-angstrom', 'meta-openembedded', 'meta-smartphone', 'meta-texasinstruments', 'openembedded-core', 'openembedded'];
+var format_report = function(projects, weekly_data) {
+ var ret = ''
+ // report header
+ ret += "Changelog for " + dateutil.last_week_text() + ". Projects included in this report:\n\n";
+ var project;
+ for (project in projects) {
+ ret += project + ": " + projects[project] + "\n";
+ }
-var date_range = function() {
- var day = 1000*60*60*24;
- var d = new Date();
- var today_weekday = d.getDay();
- var end_day = new Date(d.getTime() - today_weekday*day);
- var start_day = new Date(end_day.getTime() - 7*day);
- return "{0}-{1}-{2} to {3}-{4}-{5}".format(start_day.getFullYear(), start_day.getMonth(), start_day.getDate(),
- end_day.getFullYear(), end_day.getMonth(), end_day.getDate());
-}
+ ret += "\n";
-var format_report = function(weekly_data) {
- var ret = ''
- for (var i=0; i < projects.length; i++) {
- //console.log(project);
+ for (project in projects) {
ret += "====================================================\n";
- ret += "Changelog for " + projects[i] + ":\n\n";
- ret += weekly_data[projects[i]];
+ ret += "Changelog for " + project + ":\n\n";
+ ret += weekly_data[project];
}
return ret;
}
@@ -42,9 +48,9 @@ var email_report = function(report) {
nodemailer.send_mail(
{
sender: "cliff.brake@gmail.com",
- to: "openembedded-core@lists.openembedded.org, openembedded-devel@lists.openembedded.org, angstrom-distro-devel@linuxtogo.org",
- bcc: "cbrake@bec-systems.com",
- subject: "OE Changelog for " + date_range(),
+ to: email_to,
+ bcc: email_bcc,
+ subject: "OE Changelog for " + dateutil.last_week_text(),
body: report
},
function(error, success) {
@@ -53,31 +59,44 @@ var email_report = function(report) {
);
}
-var output = {};
-
-for (var i=0; i < projects.length; i++) {
- var count = projects.length;
- // FIXME: might be a better way to create closure for i than creating run_exec
- var run_exec = function(i) {
- console.log('processing: ' + path.join(__dirname, '../', projects[i]));
- process.chdir(path.join(__dirname, '../', projects[i]));
- child_process.exec('../tools/weekly-changelog-report.py', function(error, stdout, stderr) {
- console.log('stderr: ' + stderr);
- if (error !== null) {
- console.log('exec error: ' + error);
- } else {
- output[projects[i]] = stdout;
- }
- count--;
- if (count === 0) {
- var r = format_report(output);
- process.chdir(path.join(__dirname, '../'));
- var f = fs.openSync('weekly-changelog', 'w');
- fs.writeSync(f, r);
- fs.closeSync(f);
- email_report(r);
- }
- });
- }(i);
+var run_changelog = function(projects) {
+ var output = {};
+ var count = Object.keys(projects).length;
+ var lastwk = dateutil.last_week();
+ var project;
+ for (project in projects) {
+ // function required to preserve the value of project
+ (function(project) {
+ console.log('processing: ' + path.join(__dirname, '../', project));
+ var repo_dir = path.join(__dirname, '../', project);
+ child_process.exec('cd ' + repo_dir + '; git fetch', function(error, stdout, stderr) {
+ git.changelog(repo_dir, lastwk.start, lastwk.end, function(err, changelog) {
+ if (err !== null) {
+ console.log('changelog error: ' + err);
+ } else {
+ output[project] = changelog;
+ }
+ count--;
+ if (count === 0) {
+ var r = format_report(projects, output);
+ process.chdir(path.join(__dirname, '../'));
+ var f = fs.openSync('weekly-changelog', 'w');
+ fs.writeSync(f, r);
+ fs.closeSync(f);
+ email_report(r);
+ }
+ });
+ });
+ })(project);
+ }
}
+git.parse_gitmodules(path.join(__dirname, "../.gitmodules"), function(err, data) {
+ if (err) {
+ console.log("Error parsing .gitmodules");
+ } else {
+ run_changelog(data);
+ }
+});
+
+