@@ -23,164 +23,141 @@ try {
23
23
const sails = require ( 'sails' ) ;
24
24
const rc = require ( 'sails/accessible/rc' ) ;
25
25
const { spawn} = require ( 'child_process' ) ;
26
- const { existsSync} = require ( 'fs' ) ;
27
26
const path = require ( 'path' ) ;
28
-
29
- let config ;
30
-
31
- // Find / use the proper config file.
32
- try {
33
- let configPath = path . resolve ( __dirname , 'config/local.js' ) ;
34
-
35
- // If local.js exists, use it...
36
- if ( existsSync ( configPath ) ) {
37
- config = require ( configPath ) ;
38
- } else {
39
- // No local.js, find our environmental configuration.
40
- const environment = process . env . NODE_ENV || 'development' ;
41
-
42
- switch ( environment . toLowerCase ( ) ) {
43
- case 'dev' :
44
- case 'development' :
45
- configPath = path . resolve ( __dirname , 'config/env/development.js' ) ;
46
- break ;
47
- case 'prod' :
48
- case 'production' :
49
- configPath = path . resolve ( __dirname , 'config/env/production.js' ) ;
50
- break ;
51
- default :
52
- configPath = path . resolve ( __dirname , 'config/env/' + environment + '.js' ) ;
53
- break ;
54
- }
55
-
56
- if ( ! existsSync ( configPath ) ) {
57
- return console . error (
58
- 'ERROR! Trying to load the environment configuration from "../config/env/'
59
- + environment + '.js", but no such file exists. NODE_ENV="' + process . env . NODE_ENV + '".'
60
- ) ;
27
+ const loader = require ( 'sails/lib/hooks/moduleloader' ) ;
28
+ const merge = require ( 'lodash.merge' ) ;
29
+
30
+ // Load configuration the way Sails would.
31
+ loader ( {
32
+ config : {
33
+ environment : process . env . NODE_ENV || 'development' ,
34
+ paths : {
35
+ config : path . join ( __dirname , 'config' )
61
36
}
37
+ }
38
+ } ) . loadUserConfig ( ( err , config ) => {
39
+ if ( err ) {
40
+ console . error ( err ) ;
62
41
63
- // Now we can read our configuration.
64
- config = require ( configPath ) ;
42
+ return process . exit ( 1 ) ;
65
43
}
66
- } catch ( err ) {
67
- console . error ( err ) ;
68
44
69
- return process . exit ( 1 ) ;
70
- }
45
+ // Set Ngrok defaults.
46
+ config = merge ( {
47
+ ngrok : {
48
+ auth : process . env . NGROK_BASIC || null ,
49
+ token : process . env . NGROK_AUTHTOKEN || process . env . NGROK_TOKEN || null ,
50
+ buildAssets : true ,
51
+ domain : process . env . NGROK_DOMAIN || null ,
52
+ region : process . env . NGROK_REGION || null
53
+ } ,
54
+ port : 1337 ,
55
+ ...config
56
+ } ) ;
71
57
72
- // Set our defaults.
73
- config . ngrok = {
74
- auth : process . env . NGROK_BASIC || null ,
75
- token : process . env . NGROK_AUTHTOKEN || process . env . NGROK_TOKEN || null ,
76
- buildAssets : true ,
77
- domain : process . env . NGROK_DOMAIN || null ,
78
- port : process . env . PORT || config . port || 1337 ,
79
- region : process . env . NGROK_REGION || null
80
- } ;
81
-
82
- // Read our console config flags.
83
- for ( let i = 2 ; i < process . argv . length ; ++ i ) {
84
- const thisFlag = process . argv [ i ] . toLowerCase ( ) ;
85
-
86
- if ( thisFlag === 'nobuild' ) {
87
- config . ngrok . buildAssets = false ;
88
- } else if ( thisFlag . startsWith ( 'auth=' ) ) {
89
- config . ngrok . auth = process . argv [ i ] . substring ( 5 ) ; // don't use the lower-cased version
90
- } else if ( thisFlag . startsWith ( 'domain=' ) ) {
91
- config . ngrok . domain = thisFlag . substring ( 7 ) ;
92
- } else if ( thisFlag . startsWith ( 'port=' ) ) {
93
- config . ngrok . port = thisFlag . substring ( 5 ) ;
94
- } else if ( thisFlag . startsWith ( 'region=' ) ) {
95
- config . ngrok . region = thisFlag . substring ( 7 ) ;
96
- } else if ( thisFlag . startsWith ( 'token=' ) ) {
97
- config . ngrok . token = process . argv [ i ] . substring ( 6 ) ;
58
+ // Read our console config flags.
59
+ for ( let i = 2 ; i < process . argv . length ; ++ i ) {
60
+ const thisFlag = process . argv [ i ] . toLowerCase ( ) ;
61
+
62
+ if ( thisFlag === 'nobuild' ) {
63
+ config . ngrok . buildAssets = false ;
64
+ } else if ( thisFlag . startsWith ( 'auth=' ) ) {
65
+ config . ngrok . auth = process . argv [ i ] . substring ( 5 ) ; // don't use the lower-cased version
66
+ } else if ( thisFlag . startsWith ( 'domain=' ) ) {
67
+ config . ngrok . domain = thisFlag . substring ( 7 ) ;
68
+ } else if ( thisFlag . startsWith ( 'port=' ) ) {
69
+ config . port = thisFlag . substring ( 5 ) ;
70
+ } else if ( thisFlag . startsWith ( 'region=' ) ) {
71
+ config . ngrok . region = thisFlag . substring ( 7 ) ;
72
+ } else if ( thisFlag . startsWith ( 'token=' ) ) {
73
+ config . ngrok . token = process . argv [ i ] . substring ( 6 ) ;
74
+ }
98
75
}
99
- }
100
76
101
- ngrok . connect ( {
102
- addr : config . ngrok . port , // Point to Sails
103
- authtoken : config . ngrok . token ,
104
- basic_auth : config . ngrok . auth , // eslint-disable-line
105
- domain : config . ngrok . domain ,
106
- region : config . ngrok . region ,
107
- schemes : [ 'HTTPS' ] ,
108
- } ) . then ( ( listener ) => {
109
- let origins ;
110
- const ngrokUrl = listener . url ( ) ;
111
-
112
- // Smaller helper function, to output the Ngrok URLs.
113
- function sendUrls ( ) {
114
- console . log ( '' ) ;
115
- console . log ( 'Ngrok URL: ' + ngrokUrl ) ;
116
- // console.log('Ngrok Dashboard: https://dashboard.ngrok.com');
117
- console . log ( '' ) ;
118
- }
77
+ ngrok . connect ( {
78
+ addr : config . port , // Point to Sails
79
+ authtoken : config . ngrok . token ,
80
+ basic_auth : config . ngrok . auth , // eslint-disable-line
81
+ domain : config . ngrok . domain ,
82
+ region : config . ngrok . region ,
83
+ schemes : [ 'HTTPS' ]
84
+ } ) . then ( ( listener ) => {
85
+ let origins ;
86
+ const ngrokUrl = listener . url ( ) ;
87
+
88
+ // Smaller helper function, to output the Ngrok URLs.
89
+ function sendUrls ( ) {
90
+ console . log ( '' ) ;
91
+ console . log ( 'Ngrok URL: ' + ngrokUrl ) ;
92
+ // console.log('Ngrok Dashboard: https://dashboard.ngrok.com');
93
+ console . log ( '' ) ;
94
+ }
119
95
120
- // Build our assets in the background.
121
- if ( config . ngrok . buildAssets ) {
122
- const assetBuilderProcess = spawn ( 'npm' , [ 'run' , 'build' ] , { env : { ...process . env , BASE_URL : ngrokUrl } } ) ;
96
+ // Build our assets in the background.
97
+ if ( config . ngrok . buildAssets ) {
98
+ const assetBuilderProcess = spawn ( 'npm' , [ 'run' , 'build' ] , { env : { ...process . env , BASE_URL : ngrokUrl } } ) ;
123
99
124
- assetBuilderProcess . stderr . on ( 'data' , ( data ) => {
125
- console . log ( 'Error:' ) ;
126
- console . error ( data ) ;
127
- } ) ;
100
+ assetBuilderProcess . stderr . on ( 'data' , ( data ) => {
101
+ console . log ( 'Error:' ) ;
102
+ console . error ( data ) ;
103
+ } ) ;
128
104
129
- assetBuilderProcess . on ( 'exit' , ( code , signal ) => {
130
- if ( code === 0 ) {
131
- console . log ( 'Assets successfully built!' ) ;
132
- sendUrls ( ) ;
133
- } else {
134
- console . error ( 'An error occurred while trying to build assets. Signal: ' + signal ) ;
105
+ assetBuilderProcess . on ( 'exit' , ( code , signal ) => {
106
+ if ( code === 0 ) {
107
+ console . log ( 'Assets successfully built!' ) ;
108
+ sendUrls ( ) ;
109
+ } else {
110
+ console . error ( 'An error occurred while trying to build assets. Signal: ' + signal ) ;
135
111
136
- process . exit ( 1 ) ;
137
- }
138
- } ) ;
112
+ process . exit ( 1 ) ;
113
+ }
114
+ } ) ;
139
115
140
- console . log ( '' ) ;
141
- console . log ( 'Assets are being built. Starting API...' ) ;
142
- console . log ( '' ) ;
143
- }
116
+ console . log ( '' ) ;
117
+ console . log ( 'Assets are being built. Starting API...' ) ;
118
+ console . log ( '' ) ;
119
+ }
144
120
145
- // Add the Ngrok URL to our allowed origins.
146
- if ( config . security && config . security . cors && config . security . cors . allowOrigins ) {
147
- origins = [ ...config . security . cors . allowOrigins ] ;
121
+ // Add the Ngrok URL to our allowed origins.
122
+ if ( config . security && config . security . cors && config . security . cors . allowOrigins ) {
123
+ origins = [ ...config . security . cors . allowOrigins ] ;
148
124
149
- if ( ! config . security . cors . allowOrigins . contains ( ngrokUrl ) ) {
150
- origins . push ( ngrokUrl ) ;
125
+ if ( ! config . security . cors . allowOrigins . includes ( ngrokUrl ) ) {
126
+ origins . push ( ngrokUrl ) ;
127
+ }
128
+ } else {
129
+ origins = [ ngrokUrl ] ;
151
130
}
152
- } else {
153
- origins = [ ngrokUrl ] ;
154
- }
155
131
156
- // Start Sails.
157
- sails . lift ( {
158
- ...rc ( 'sails' ) ,
159
- baseUrl : ngrokUrl ,
160
- port : config . ngrok . port ,
161
- security : {
162
- cors : {
163
- allowOrigins : origins
132
+ // Start Sails.
133
+ sails . lift ( {
134
+ ...rc ( 'sails' ) ,
135
+ baseUrl : ngrokUrl ,
136
+ port : config . port ,
137
+ security : {
138
+ cors : {
139
+ allowOrigins : origins
140
+ }
164
141
}
165
- }
166
- } , ( err ) => {
167
- if ( err ) {
168
- console . error ( err ) ;
142
+ } , ( err ) => {
143
+ if ( err ) {
144
+ console . error ( err ) ;
169
145
170
- return process . exit ( 1 ) ;
171
- }
146
+ return process . exit ( 1 ) ;
147
+ }
172
148
173
- // Sails tends to be faster at startup than asset building...
174
- // Assume we are still waiting for assets (which will output URLs when finished)...
175
- if ( config . ngrok . buildAssets ) {
176
- console . log ( '' ) ;
177
- console . log ( 'Please wait for assets...' ) ;
178
- } else {
179
- sendUrls ( ) ;
180
- }
149
+ // Sails tends to be faster at startup than asset building...
150
+ // Assume we are still waiting for assets (which will output URLs when finished)...
151
+ if ( config . ngrok . buildAssets ) {
152
+ console . log ( '' ) ;
153
+ console . log ( 'Please wait for assets...' ) ;
154
+ } else {
155
+ sendUrls ( ) ;
156
+ }
157
+ } ) ;
158
+ } ) . catch ( ( e ) => {
159
+ console . log ( 'There was an error starting the Ngrok tunnel. Likely a bad auth token. Here is the error:' ) ;
160
+ console . log ( '' ) ;
161
+ console . log ( e ) ;
181
162
} ) ;
182
- } ) . catch ( ( e ) => {
183
- console . log ( 'There was an error starting the Ngrok tunnel. Likely a bad auth token. Here is the error:' ) ;
184
- console . log ( '' ) ;
185
- console . log ( e ) ;
186
163
} ) ;
0 commit comments