| 
									
										
										
										
											2015-01-15 01:35:58 -05:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var PromiseA = require('bluebird').Promise | 
					
						
							|  |  |  |   , fs = PromiseA.promisifyAll(require('fs')) | 
					
						
							|  |  |  |   ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function create(Desi, options) { | 
					
						
							|  |  |  |   var fsapi = Desi.fsapi | 
					
						
							|  |  |  |     ; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-15 17:19:25 -07:00
										 |  |  |   options.blogdir = options.blogdir || options.working_path; | 
					
						
							| 
									
										
										
										
											2015-01-15 01:35:58 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-15 17:19:25 -07:00
										 |  |  |   fsapi.putFiles = function (files, opts) { | 
					
						
							| 
									
										
										
										
											2015-01-15 01:35:58 -05:00
										 |  |  |     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)) { | 
					
						
							| 
									
										
										
										
											2015-01-15 17:19:25 -07:00
										 |  |  |         file.contents = Desi.YAML.stringify(file.contents);  | 
					
						
							| 
									
										
										
										
											2015-01-15 01:35:58 -05:00
										 |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // TODO size
 | 
					
						
							| 
									
										
										
										
											2015-01-15 17:19:25 -07:00
										 |  |  |     return fsapi.putfs(options.blogdir, files, opts); | 
					
						
							| 
									
										
										
										
											2015-01-15 01:35:58 -05:00
										 |  |  |   }; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exports.create = create; |