Skip to content

Commit 5cb7e6e

Browse files
committed
Merge pull request #2 from readdle/mycnf-parser
Mycnf parser
2 parents ef23e91 + b4a6764 commit 5cb7e6e

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

mycnfreader.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
var fs = require('fs');
2+
3+
module.exports = function() {
4+
var db = { 'host': 'localhost', 'password': '' };
5+
var myCnfKeys = ['user', 'host', 'password', 'database'];
6+
7+
if (!process.env.HOME) {
8+
db.user = 'no-server-home-my-cnf';
9+
return db;
10+
}
11+
12+
try {
13+
var myCnf = fs.readFileSync(process.env.HOME + '/.my.cnf', 'utf8');
14+
}
15+
catch(e) {
16+
db.user = 'error-reading-my-cnf';
17+
return db;
18+
}
19+
20+
var myCnfLines = myCnf.match(/[^\r\n]+/g);
21+
db.password = db.user = 'my-cnf-parse-err';
22+
23+
myCnfLines.forEach(function(value) {
24+
kv = value.split('=');
25+
26+
if (kv.length == 2 && myCnfKeys.indexOf(kv[0]) > -1) {
27+
db[kv[0]] = kv[1];
28+
}
29+
});
30+
31+
return db;
32+
}

rdconfig.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var fs = require('fs');
22
var crypto = require('crypto');
33
var Path = require('path');
4+
var myCnfReader = require('./mycnfreader');
45

56
var RDConfig = function(forceEnvName){
67
var CONFIG_DIR = process.env.NODE_CONFIG_DIR || Path.join(process.cwd(), 'config');
@@ -56,6 +57,17 @@ RDConfig.prototype.decrypt = function(obj){
5657
return obj;
5758
};
5859

60+
RDConfig.prototype.getMyCnfParamsWithDatabase = function(database) {
61+
var myCnf = myCnfReader();
62+
63+
if (database) {
64+
myCnf.database = database;
65+
}
66+
67+
return myCnf;
68+
}
69+
70+
5971
RDConfig.prototype.get = function(property){
6072
var configValue = this.config.get(property);
6173

0 commit comments

Comments
 (0)