Plato on Github
Report Home
lib/cli/util.js
Maintainability
75.13
Lines of code
70
Difficulty
18.18
Estimated Errors
0.26
Function weight
By Complexity
By SLOC
var _ = require('lodash'); const COLOR_STATUS = { blue : [ 'ok' ], green : [ 'ok', 'success' ], grey : [ 'aborted' ], red : [ 'fail', 'failure' ], yellow: [ 'warn', 'building' ] }; /** * Get color based on status and Jenkins status color. * Jenkins status color will take precedence over status because * Jenkins uses either blue or green as the color for ok status. * * Color property can contain either color or status text. * Hence the need for mapping color to status text in the case where value is really color. * This is used in conjunction with statusByColor function. * * @param {String} status: Jenkins status * @param {String} jenkinsColor: Jenkins status color * @return the status text */ function colorByStatus(status, jenkinsColor) { var color; if (jenkinsColor) { // Jenkins color value can contain either a color, color_anime, or status in job.color field, // hence to get color/status value out of the mix we need to remove the postfix _anime, // _anime postfix only exists on a job currently being built jenkinsColor = jenkinsColor.replace(/_anime$/, ''); color = (COLOR_STATUS[jenkinsColor] && COLOR_STATUS[jenkinsColor][0]) ? jenkinsColor : 'grey'; } else { color = 'grey'; _.keys(COLOR_STATUS).forEach(function (_color) { COLOR_STATUS[_color].forEach(function (_status) { if (_status === status) { color = _color; } }); }); } return color; } /** * Get status based on the value of color property. * * Color property can contain either color or status text. * Hence the need for mapping color to status text in the case where value is really color. * This is used in conjunction with colorByStatus function. * * @param {String} jenkinsColor: Jenkins status color * @return the status text */ function statusByColor(jenkinsColor) { // Jenkins color value can contain either a color, color_anime, or status in job.color field, // hence to get color/status value out of the mix we need to remove the postfix _anime, // _anime postfix only exists on a job currently being built jenkinsColor = jenkinsColor.replace(/_anime$/, ''); var status = (COLOR_STATUS[jenkinsColor]) ? COLOR_STATUS[jenkinsColor][0] : jenkinsColor; return status; } exports.colorByStatus = colorByStatus; exports.statusByColor = statusByColor;