45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
const path = require('path');
|
|
const mkdirp = require('mkdirp');
|
|
const emptyDir = require('empty-dir');
|
|
const spawn = require('child_process').spawn;
|
|
|
|
exports.initdb = function (dbPath, callback) {
|
|
var opts = {};
|
|
if (arguments.length === 3) {
|
|
opts = arguments[1];
|
|
callback = arguments[2];
|
|
}
|
|
if (!dbPath) {
|
|
throw new Error('You must specify a directory to initialize.');
|
|
}
|
|
var dir = path.resolve(dbPath);
|
|
mkdirp.sync(dir);
|
|
if (!emptyDir.sync(dir)) {
|
|
throw new Error('Refusing to init in non-empty directory.');
|
|
}
|
|
var init = spawn('./pgsql/bin/initdb', ['-D', dir]);
|
|
if (opts.verbose === true) {
|
|
init.stdout.on('data', function (data) {
|
|
process.stdout.write(data);
|
|
});
|
|
init.stderr.on('data', function (data) {
|
|
process.stderr.write(data.toString());
|
|
});
|
|
}
|
|
init.on('close', function (code) {
|
|
callback(code);
|
|
});
|
|
};
|
|
|
|
exports.start = function (dbPath, opts) {
|
|
opts = opts || {};
|
|
var dir = path.resolve(dbPath);
|
|
var start = spawn('./pgsql/bin/postgres', ['-D', dir]);
|
|
start.stdout.on('data', function (data) {
|
|
process.stdout.write(data);
|
|
});
|
|
start.stderr.on('data', function (data) {
|
|
process.stderr.write(data.toString());
|
|
});
|
|
};
|