berlioz
Version:
Berlioz - cloud deployment and migration services
63 lines (60 loc) • 1.35 kB
JavaScript
var _classes = {
fs : require("fs"),
fsu : require(__dirname + "/../../lib.js")(['mkdirs']),
path : require("path")
};
var createFile = function (path, opts, callback) {
var file = _classes.path.normalize(path);
var dir = _classes.path.dirname(file);
if (typeof(opts) === "function") {
callback = opts;
opts = undefined;
}
_classes.fs.stat(file, function (err, stats) {
if (err) {
_classes.fsu.mkdirs(dir, function (err) {
if (err) {
callback(err);
} else {
_classes.fs.open(file, 'a', function (err, fd) {
if (err) {
callback(err);
} else {
_classes.fs.close(fd, callback);
}
});
}
});
} else {
if (stats.isFile()) {
// already exists
callback();
} else {
callback(Error("NONFILE_ALREADY_EXISTS"));
}
}
});
};
createFile.sync = function (path, opts) {
var file = _classes.path.normalize(path);
var dir = _classes.path.dirname(file);
if (typeof(opts) === "function") {
callback = opts;
opts = undefined;
}
var err;
try {
var stats = _classes.fs.statSync(file);
if (stats.isFile()) {
// already exists
} else {
throw Error("NONFILE_ALREADY_EXISTS");
}
} catch (err) {
_classes.fsu.mkdirsSync(dir);
_classes.fs.closeSync(_classes.fs.openSync(file, 'a'));
}
};
module.exports = {
createFile : createFile
};