'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;