1
- const _ = require ( 'lodash' ) ;
2
- const fs = require ( 'fs' ) ;
3
- const yaml = require ( 'js-yaml' ) ;
1
+ const Promise = require ( 'bluebird' ) ;
2
+ const _ = require ( 'lodash' ) ;
3
+ const fs = require ( 'fs' ) ;
4
+ const yaml = require ( 'js-yaml' ) ;
4
5
const defaults = require ( '../defaults' ) ;
5
- const CFError = require ( 'cf-errors' ) ;
6
- const path = require ( 'path' ) ;
6
+ const CFError = require ( 'cf-errors' ) ;
7
+ const path = require ( 'path' ) ;
7
8
8
9
9
10
const printError = ( error ) => {
@@ -17,7 +18,27 @@ const printError = (error) => {
17
18
const wrapHandler = ( handler ) => {
18
19
return async ( argv ) => {
19
20
try {
20
- argv . watch ? setInterval ( async ( ) => { await handler ( argv ) } , argv . watch_interval ) : await handler ( argv ) ;
21
+ if ( ! argv . watch ) {
22
+ return handler ( argv ) ;
23
+ }
24
+
25
+ let consecutiveErrors = 0 ;
26
+ let initial = true ;
27
+ while ( true ) {
28
+ try {
29
+ await handler ( argv , initial ) ;
30
+ consecutiveErrors = 0 ;
31
+ initial = false ;
32
+ }
33
+ catch ( err ) {
34
+ consecutiveErrors ++ ;
35
+ if ( initial || consecutiveErrors > defaults . MAX_CONSECUTIVE_ERRORS_LIMIT ) {
36
+ throw err ;
37
+ }
38
+ }
39
+ await Promise . delay ( argv . watch_interval ) ;
40
+ }
41
+
21
42
} catch ( err ) {
22
43
printError ( err ) ;
23
44
process . exit ( 1 ) ;
@@ -32,12 +53,12 @@ const wrapHandler = (handler) => {
32
53
*/
33
54
const prepareKeyValueFromCLIEnvOption = ( environmentVariables ) => {
34
55
let variables = { } ;
35
- let envArray = [ ] ;
56
+ let envArray = [ ] ;
36
57
environmentVariables . constructor !== Array ? envArray . push ( environmentVariables ) : envArray = environmentVariables ;
37
58
envArray . forEach ( function ( vars ) {
38
- let fields = vars . split ( "=" ) ;
39
- let key = fields [ 0 ] ;
40
- let val = fields [ 1 ] ;
59
+ let fields = vars . split ( '=' ) ;
60
+ let key = fields [ 0 ] ;
61
+ let val = fields [ 1 ] ;
41
62
if ( _ . isUndefined ( key ) || _ . isUndefined ( val ) ) {
42
63
throw new CFError ( 'Invalid environment variable format. please enter [key]=[value]' ) ;
43
64
}
@@ -48,12 +69,12 @@ const prepareKeyValueFromCLIEnvOption = (environmentVariables) => {
48
69
49
70
const prepareKeyValueCompostionFromCLIEnvOption = ( environmentVariables ) => {
50
71
const variables = [ ] ;
51
- let envArray = [ ] ;
72
+ let envArray = [ ] ;
52
73
environmentVariables . constructor !== Array ? envArray . push ( environmentVariables ) : envArray = environmentVariables ;
53
74
envArray . forEach ( function ( vars ) {
54
- let fields = vars . split ( "=" ) ;
55
- let key = fields [ 0 ] ;
56
- let val = fields [ 1 ] ;
75
+ let fields = vars . split ( '=' ) ;
76
+ let key = fields [ 0 ] ;
77
+ let val = fields [ 1 ] ;
57
78
if ( _ . isUndefined ( key ) || _ . isUndefined ( val ) ) {
58
79
throw new CFError ( 'Invalid environment variable format. please enter [key]=[value]' ) ;
59
80
}
0 commit comments