75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			75 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;
 |