diff --git a/index.js b/index.js index f6dc17c..b08d46c 100644 --- a/index.js +++ b/index.js @@ -1,15 +1,39 @@ var path = require('path'); -var configDIR = process.env.CONFIG_DIR || path.resolve( path.join( require.main.paths[0], '..', 'config' ) ); +var fs = require('fs'); +var configDir; var env = ( process.env.NODE_ENV || 'development' ).toLowerCase(); var envPrefix = process.env.TC_PREFIX || 'TC_'; var envRegex = new RegExp( '^' + envPrefix + '(.*)' ); var finalConfig = {}; +var configDirLookupPath = [ + path.resolve( path.join( require.main.paths[0], '..', 'config' ) ), + path.join( process.env.PWD, 'config' ) +]; +if( process.env.CONFIG_DIR ){ + configDirLookupPath.unshift( process.env.CONFIG_DIR ); +} + +for (var i = 0, l = configDirLookupPath.length; i < l; i ++) { + var v = configDirLookupPath[i]; + if( fs.existsSync(v) ){ + configDir = v; + break; + } +} +if( !configDir ){ + throw Error( + 'Config directory not found.\n Look up at following locations failed.\n---\n** ' + + configDirLookupPath.join('\n** ') + '\n---\n' + + '\n Please set CONFIG_DIR env variable'); +} + + function loadConfig( name ){ var out = {}; try{ - out = require( configDIR + '/' + name ); + out = require( configDir + '/' + name ); } catch(e){ out = {}; } diff --git a/package.json b/package.json index 3d5d546..2f2ae20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tconfig", - "version": "0.1.0", + "version": "0.1.1", "description": "A simple transparent config file loader for Nodejs applications. any config field can be overriden using environmen variables", "main": "index.js", "scripts": {