1 | let moment = require('moment');
|
2 | let CoreObject = require('core-object');
|
3 |
|
4 | module.exports = CoreObject.extend({
|
5 | init(plugin, revisions) {
|
6 | this._super(plugin, revisions);
|
7 |
|
8 | this._plugin = plugin;
|
9 | this.revisions = revisions;
|
10 | },
|
11 |
|
12 | log() {
|
13 | this._plugin.log.apply(this._plugin, arguments);
|
14 | },
|
15 |
|
16 | display() {
|
17 | let revisions = this.revisions;
|
18 | let keys = this._getKeys(revisions);
|
19 |
|
20 | this._displayHeader(keys, revisions);
|
21 |
|
22 | revisions.forEach(function(revision) {
|
23 | this._displayRow(keys, revision);
|
24 | }.bind(this));
|
25 | },
|
26 |
|
27 | _displayRow(keys, revision) {
|
28 | let row = "";
|
29 | if(revision.active) {
|
30 | row += ">";
|
31 | } else {
|
32 | row += " ";
|
33 | }
|
34 |
|
35 | let lastKey = keys[keys.length - 1];
|
36 |
|
37 | keys.forEach(function(key) {
|
38 | let value = revision[key.name] ? revision[key.name] : "";
|
39 |
|
40 | if(key.name === 'timestamp') {
|
41 | value = moment(value).format("YYYY/MM/DD HH:mm:ss");
|
42 | }
|
43 |
|
44 | if(key.maxLength !== -1) {
|
45 | value = String(value).substr(0, key.maxLength);
|
46 | }
|
47 |
|
48 | row += " " + value + " ";
|
49 |
|
50 | let fillerLength = key.maxLength - value.length;
|
51 | for(let i = 0; i < fillerLength; i++) {
|
52 | row += " ";
|
53 | }
|
54 | if(key !== lastKey) {
|
55 | row += "|";
|
56 | }
|
57 | });
|
58 |
|
59 | this.log(row);
|
60 | },
|
61 |
|
62 | _getKeys(revisions) {
|
63 | let keys = [
|
64 | {name: 'version', maxLength: 7},
|
65 | {name: 'timestamp', maxLength: 19},
|
66 | {name: 'deployer', maxLength: 10},
|
67 | {name: 'revision', maxLength: -1}
|
68 | ];
|
69 | let presentKeys = [];
|
70 | keys.forEach(function(key) {
|
71 | if(this._hasKey(key.name, revisions)) {
|
72 | presentKeys.push(key);
|
73 | }
|
74 | }.bind(this));
|
75 | return presentKeys;
|
76 | },
|
77 |
|
78 | _displayHeader(keys) {
|
79 | let keyHeader = " ";
|
80 | let lastKey = keys[keys.length - 1];
|
81 |
|
82 | keys.forEach(function(key) {
|
83 | let shortKey = key.maxLength === -1 ? key.name : key.name.substr(0, key.maxLength);
|
84 | keyHeader += " " + shortKey + " ";
|
85 |
|
86 | let fillerLength = key.maxLength === -1 ? 0 : key.maxLength - shortKey.length;
|
87 | for(let i = 0; i < fillerLength; i++) {
|
88 | keyHeader += " ";
|
89 | }
|
90 |
|
91 |
|
92 | if(key !== lastKey) {
|
93 | keyHeader += "|";
|
94 | }
|
95 | });
|
96 | this.log(keyHeader);
|
97 |
|
98 | let underline = "";
|
99 | for(let i = 0; i < keyHeader.length; i++) {
|
100 | underline += "=";
|
101 | }
|
102 | this.log(underline);
|
103 | },
|
104 | _hasKey(key, revisions) {
|
105 | return revisions.some(function(revision) {
|
106 | return Object.keys(revision).indexOf(key) !== -1;
|
107 | });
|
108 | }
|
109 | });
|