celia
1/10/2018 - 9:30 AM

Script - generar email MR

var SANDOS = 'Sandos'; var HIPOTELS = 'Hipotels';

var REQUEST = 'request'; var BUG = 'bug'; var BUDGET = 'budget';

var configs = { SANDOS: { baseMRLink: 'https://gitlab.TEST.net/P1/', name: 'Sandos' }, HIPOTELS: { baseMRLink: 'https://gitlab.TEST.net/P2/', name: 'Hipotels' } };

var mergeRequests = { SANDOS: [ { ticketNumber: 58343, title: 'Añadir variables requeridas a Datalayer', type: REQUEST, estimatedTime: 5, mrLinks: [ 'bookingengine/merge_requests/34' ], } ], HIPOTELS: [ { ticketNumber: 1, title: 'TEST', type: BUG, estimatedTime: 15, mrLinks: [ 'bookingengine/merge_requests/XX' ], } ], };

function buildMRs() { var mrList = []; Object.keys(mergeRequests).forEach(function (projectKey) { var projectMRs = mergeRequests[projectKey]; var cfg = configs[projectKey]; var fullProjectMrs = projectMRs.map(function (mr) { return { title: 'Feature#' + mr.ticketNumber + ':' + mr.title + ' [' + mr.estimatedTime + ' min.]' , redmineLink: 'https://projectes.TEST.net/issues/' + mr.ticketNumber, mrLinks: mr.mrLinks.map(function(shortMRLink) { return cfg.baseMRLink + shortMRLink; }), time: mr.estimatedTime, type: mr.type, name: cfg.name, }; }); mrList = mrList.concat(fullProjectMrs); });

return mrList.sort(function(mrA, mrB) { return mrA.time - mrB.time }); }

function printType(type) { if (type === 'bug') { return 'BUG' } else if (type === 'budget') {

return '<font color="#38761d">BUDGET</font>'

} return 'Petición'; }

function buildMailTemplate(mergeRequests) { var mrs = mergeRequests.map(function (mrData) {

var mrHtml = '';

mrHtml += '<div>';

mrHtml += '<p><b>';
mrHtml += '   ' + mrData.name + ' - ' + printType(mrData.type) + ' - ' + mrData.title;
mrHtml += '</b></p>';

mrHtml += '\r\n ';

mrHtml += '<p>';
mrHtml += '   <b>  Ticket:  </b>' + '<a href=" ' +  mrData.redmineLink + '">' + mrData.redmineLink + '</a>';
mrHtml += '</p>';

mrHtml += '\r\n ';

mrData.mrLinks.forEach(function (mrLink) {
  mrHtml += '<p>';
  mrHtml += '   <b>  MR:  </b>' + '<a href=" ' +  mrLink + '">' + mrLink + '</a>';
  mrHtml += '</p>';

  mrHtml += '\r\n';
});

mrHtml += '</div>';
mrHtml += '<b style="font-size:12px">------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------------------------<wbr></b><br>';
return mrHtml;

}); var html = '

'; html += mrs.join('\r\n'); html += '
'; return html; }

/* Enviar desde Gmail copiando el contenido en un mail (Inspeccionar elemento) Ejecutar como clear && node MR_pendientes.js > TEST.HTML */

var sortedMrs = buildMRs(); var html = buildMailTemplate(sortedMrs); console.log(html);