11var fs = require ( 'fs' ) ;
2+ var Result = require ( 'raynos-rust-result' ) ;
23
34var errors = require ( './errors.js' ) ;
45
@@ -8,46 +9,51 @@ function readDatacenter(opts) {
89 var env = opts . env || process . env ;
910 var NODE_ENV = env . NODE_ENV ;
1011
11- if ( NODE_ENV === 'production' && ! opts . dc ) {
12+ // specifying a datacenter is optional in dev but required
13+ // in production.
14+ if ( NODE_ENV === 'production' && ! opts . dc && ! opts . dcValue ) {
1215 throw errors . DatacenterRequired ( {
1316 strOpts : JSON . stringify ( opts )
1417 } ) ;
1518 }
1619
17- var result , error = null ;
20+ var result ;
1821
19- // specifying a datacenter is optional in dev but required
20- // in production.
21- if ( opts . dc ) {
22- var tuple = readFileOrError ( opts . dc ) ;
23- if ( tuple [ 0 ] ) {
24- var err = tuple [ 0 ] ;
22+ if ( opts . dcValue ) {
23+ result = Result . Ok ( {
24+ 'datacenter' : opts . dcValue . replace ( / \s / g, '' )
25+ } ) ;
26+ } else if ( opts . dc ) {
27+ var fileResult = readFileOrError ( opts . dc ) ;
28+ if ( Result . isErr ( fileResult ) ) {
29+ var err = Result . Err ( fileResult ) ;
2530 // create error synchronously for correct stack trace
2631 if ( NODE_ENV === 'production' ) {
27- error = errors . DatacenterFileRequired ( {
32+ result = Result . Err ( errors . DatacenterFileRequired ( {
2833 path : err . path ,
2934 errno : err . errno ,
3035 code : err . code ,
3136 syscall : err . syscall
32- } ) ;
37+ } ) ) ;
3338 } else {
34- error = errors . MissingDatacenter ( {
39+ result = Result . Err ( errors . MissingDatacenter ( {
3540 path : err . path ,
3641 errno : err . errno ,
3742 code : err . code ,
3843 syscall : err . syscall
39- } ) ;
44+ } ) ) ;
4045 }
4146 } else {
42- result = {
43- 'datacenter' : tuple [ 1 ] . replace ( / \s / g, '' )
44- } ;
47+ result = Result . Ok ( {
48+ 'datacenter' : Result . Ok ( fileResult )
49+ . replace ( / \s / g, '' )
50+ } ) ;
4551 }
4652 } else {
47- result = null ;
53+ result = Result . Ok ( null ) ;
4854 }
4955
50- return [ error , result ] ;
56+ return result ;
5157}
5258
5359// break try catch into small function to avoid v8 de-optimization
@@ -56,8 +62,8 @@ function readFileOrError(uri) {
5662 try {
5763 content = fs . readFileSync ( uri , 'utf8' ) ;
5864 } catch ( err ) {
59- return [ err , null ] ;
65+ return Result . Err ( err ) ;
6066 }
6167
62- return [ null , content ] ;
68+ return Result . Ok ( content ) ;
6369}
0 commit comments