2018-10-27 01:10:46 +02:00

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());
});
};