@@ -14,6 +14,7 @@ import {
14
14
updateLabels
15
15
} from './swarm' ;
16
16
import chalk from 'chalk' ;
17
+ import { checkVersion } from './utils' ;
17
18
import debug from 'debug' ;
18
19
import {
19
20
each
@@ -206,42 +207,36 @@ export async function status(api) {
206
207
207
208
const results = await map (
208
209
Object . values ( config . servers ) ,
209
- server => api . runSSHCommand ( server , 'sudo service docker status && sudo docker version --format "{{.Server.Version}}"' ) ,
210
+ server => api . runSSHCommand ( server , 'sudo docker version --format "{{.Server.Version}}"' ) ,
210
211
{ concurrency : 2 }
211
212
) ;
212
213
213
- const minMajor = 1 ;
214
- const minMinor = 13 ;
215
214
const lines = [ ] ;
216
215
let overallColor = chalk . green ;
217
- results . forEach ( result => {
218
- const outputLines = result . output . split ( '\n' ) ;
219
- let dockerStatus = outputLines . length === 1 ? 'Not installed' : 'stopped' ;
220
- const version = outputLines . length > 1 ? outputLines [ outputLines . length - 2 ] : '' ;
221
- const versionParts = version . split ( '.' ) ;
222
- let versionColor = chalk . green ;
223
- let statusColor = chalk . green ;
224
216
225
- if ( / \/ ( . * ) , / . test ( result . output ) ) {
226
- dockerStatus = result . output . match ( / \/ ( . * ) , / ) . pop ( ) ;
227
- }
217
+ results . forEach ( result => {
218
+ let dockerStatus = 'Running' ;
219
+ let color = 'green' ;
228
220
229
- if ( parseInt ( versionParts [ 0 ] , 10 ) < minMajor ) {
230
- versionColor = chalk . red ;
221
+ if ( result . code === 1 ) {
222
+ dockerStatus = 'Stopped' ;
223
+ color = 'red' ;
231
224
overallColor = chalk . red ;
232
- } else if (
233
- parseInt ( versionParts [ 0 ] , 10 ) === minMajor &&
234
- parseInt ( versionParts [ 1 ] , 10 ) < minMinor
235
- ) {
236
- versionColor = chalk . red ;
225
+ } else if ( result . code === 127 ) {
226
+ dockerStatus = 'Not installed' ;
227
+ color = 'red' ;
237
228
overallColor = chalk . red ;
238
229
}
239
230
240
- if ( dockerStatus !== 'running' ) {
241
- statusColor = chalk . red ;
231
+ const version = result . output . trim ( ) . length > 1 ? result . output . trim ( ) : '' ;
232
+ let versionColor = chalk . green ;
233
+
234
+ if ( ! checkVersion ( version ) ) {
235
+ overallColor = chalk . red ;
236
+ versionColor = chalk . red ;
242
237
}
243
238
244
- lines . push ( ` - ${ result . host } : ${ versionColor ( version ) } ${ statusColor ( dockerStatus ) } ` ) ;
239
+ lines . push ( ` - ${ result . host } : ${ versionColor ( version ) } ${ chalk [ color ] ( dockerStatus ) } ` ) ;
245
240
} ) ;
246
241
247
242
console . log ( overallColor ( '\n=> Docker Status' ) ) ;
0 commit comments