70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
var PromiseA = require("bluebird").Promise,
|
|
fs = PromiseA.promisifyAll(require("fs"));
|
|
function create(Desi, options) {
|
|
var fsapi = Desi.fsapi;
|
|
options.blogdir = options.blogdir || options.working_path;
|
|
|
|
fsapi.getMeta = function (dirnames, opts) {
|
|
opts = opts || {};
|
|
|
|
var extensions = "",
|
|
dotfiles = "",
|
|
contents = "",
|
|
sha1sum = "";
|
|
if (Array.isArray(opts.extensions)) {
|
|
extensions = "&extensions=" + opts.extensions.join(","); // md,markdown,jade,htm,html
|
|
}
|
|
if (opts.dotfiles) {
|
|
dotfiles = "&dotfiles=true";
|
|
}
|
|
if (opts.contents) {
|
|
contents = "&contents=true";
|
|
}
|
|
if (false === opts.sha1sum) {
|
|
sha1sum = "&sha1sum=false";
|
|
}
|
|
|
|
return fsapi.walk.walkDirs(options.blogdir, dirnames, opts);
|
|
};
|
|
|
|
fsapi.getContents = function (filepaths) {
|
|
return fsapi.getfs(options.blogdir, filepaths);
|
|
};
|
|
|
|
fsapi.getCache = function () {
|
|
return fs
|
|
.readFileAsync(options.blogdir, "/cache.json")
|
|
.catch(function (/*e*/) {
|
|
return {};
|
|
})
|
|
.then(function (obj) {
|
|
return obj;
|
|
});
|
|
};
|
|
|
|
fsapi.copy = function (files) {
|
|
// TODO size
|
|
return fsapi.copyfs(options.blogdir, files);
|
|
};
|
|
|
|
fsapi.putFiles = function (files, opts) {
|
|
files.forEach(function (file) {
|
|
if (!file.contents || "string" === typeof file.contents) {
|
|
return;
|
|
}
|
|
if (/\.json$/i.test(file.path)) {
|
|
file.contents = JSON.stringify(file.contents);
|
|
} else if (/\.ya?ml$/i.test(file.path)) {
|
|
file.contents = Desi.YAML.stringify(file.contents);
|
|
}
|
|
});
|
|
|
|
// TODO size
|
|
return fsapi.putfs(options.blogdir, files, opts);
|
|
};
|
|
}
|
|
|
|
exports.create = create;
|