22'use strict' ;
33
44var DeployPluginBase = require ( 'ember-cli-deploy-plugin' ) ;
5- var moment = require ( 'moment' ) ;
5+ var ScmTable = require ( './lib/scm-table' ) ;
6+ var LegacyTable = require ( './lib/legacy-table' ) ;
7+ var _ = require ( 'lodash' ) ;
68
79module . exports = {
810 name : 'ember-cli-deploy-display-revisions' ,
@@ -15,103 +17,31 @@ module.exports = {
1517 amount : function ( context ) {
1618 return context . commandOptions . amount || 10 ;
1719 } ,
20+
21+ revisions : function ( context ) {
22+ return context . revisions ;
23+ }
1824 } ,
1925
2026 displayRevisions : function ( context ) {
21- if ( ! context . revisions ) {
27+ var table ;
28+ var revisions = this . readConfig ( 'revisions' ) ;
29+ if ( ! revisions || revisions . length === 0 ) {
2230 this . log ( "Could not display latest revisions because no revisions were found in context." , { color : 'yellow' } ) ;
2331 return ;
2432 }
2533
26- var revisions = context . revisions . slice ( 0 , this . readConfig ( "amount" ) ) ;
27-
28- var keys = this . _getKeys ( revisions ) ;
34+ revisions = revisions . slice ( 0 , this . readConfig ( "amount" ) ) ;
2935
30- this . _displayHeader ( keys , revisions ) ;
36+ var hasRevisionData = _ . every ( revisions , 'revisionData' ) ;
3137
32- revisions . forEach ( function ( revision ) {
33- this . _displayRow ( keys , revision ) ;
34- } . bind ( this ) ) ;
35- } ,
36- _displayRow : function ( keys , revision ) {
37- var row = "" ;
38- if ( revision . active ) {
39- row += ">" ;
38+ if ( hasRevisionData ) {
39+ table = new ScmTable ( this , revisions ) ;
40+ table . display ( ) ;
4041 } else {
41- row += " " ;
42+ table = new LegacyTable ( this , revisions ) ;
43+ table . display ( ) ;
4244 }
43-
44- var lastKey = keys [ keys . length - 1 ] ;
45-
46- keys . forEach ( function ( key ) {
47- var value = revision [ key . name ] ? revision [ key . name ] : "" ;
48-
49- if ( key . name === 'timestamp' ) {
50- value = moment ( value ) . format ( "YYYY/MM/DD HH:mm:ss" ) ;
51- }
52-
53- if ( key . maxLength !== - 1 ) {
54- value = String ( value ) . substr ( 0 , key . maxLength ) ;
55- }
56-
57- row += " " + value + " " ;
58-
59- var fillerLength = key . maxLength - value . length ;
60- for ( var i = 0 ; i < fillerLength ; i ++ ) {
61- row += " " ;
62- }
63- if ( key !== lastKey ) {
64- row += "|" ;
65- }
66- } ) ;
67-
68- this . log ( row ) ;
69- } ,
70- _getKeys : function ( revisions ) {
71- var keys = [
72- { name : 'version' , maxLength : 7 } ,
73- { name : 'timestamp' , maxLength : 19 } ,
74- { name : 'deployer' , maxLength : 10 } ,
75- { name : 'revision' , maxLength : - 1 }
76- ] ;
77- var presentKeys = [ ] ;
78- keys . forEach ( function ( key ) {
79- if ( this . _hasKey ( key . name , revisions ) ) {
80- presentKeys . push ( key ) ;
81- }
82- } . bind ( this ) ) ;
83- return presentKeys ;
84- } ,
85- _displayHeader : function ( keys ) {
86- var keyHeader = " " ;
87- var lastKey = keys [ keys . length - 1 ] ;
88-
89- keys . forEach ( function ( key ) {
90- var shortKey = key . maxLength === - 1 ? key . name : key . name . substr ( 0 , key . maxLength ) ;
91- keyHeader += " " + shortKey + " " ;
92-
93- var fillerLength = key . maxLength === - 1 ? 0 : key . maxLength - shortKey . length ;
94- for ( var i = 0 ; i < fillerLength ; i ++ ) {
95- keyHeader += " " ;
96- }
97-
98- // revision hash needs an unknown amount of space, don't display closing |
99- if ( key !== lastKey ) {
100- keyHeader += "|" ;
101- }
102- } ) ;
103- this . log ( keyHeader ) ;
104-
105- var underline = "" ;
106- for ( var i = 0 ; i < keyHeader . length ; i ++ ) {
107- underline += "=" ;
108- }
109- this . log ( underline ) ;
110- } ,
111- _hasKey : function ( key , revisions ) {
112- return revisions . some ( function ( revision ) {
113- return Object . keys ( revision ) . indexOf ( key ) !== - 1 ;
114- } ) ;
11545 }
11646 } ) ;
11747
0 commit comments