cloudcmd/lib/server/files.js
2014-02-12 09:36:06 -05:00

94 lines
2.7 KiB
JavaScript

(function(object) {
'use strict';
if(!global.cloudcmd)
return console.log(
'# files.js' + '\n' +
'# -----------' + '\n' +
'# Module is part of Cloud Commander,' + '\n' +
'# used for reading a couple files.' + '\n' +
'# http://cloudcmd.io' + '\n');
var main = global.cloudcmd.main,
fs = main.fs,
path = main.path,
pipe = main.pipe,
CloudFunc = main.cloudfunc,
Util = main.util;
object.read = function(files, options, callback) {
var done = [],
errors,
i, n,
name,
readFiles = {},
doneFunc = function (name, error, data) {
var msg, status;
done.pop();
if (error) {
status = 'error';
if (!errors)
errors = {};
errors[name] = error;
}
else {
status = 'ok';
readFiles[name] = data;
}
name = path.basename(name);
msg = CloudFunc.formatMsg('read', name, status);
Util.log(msg);
if (!done.length)
Util.exec(callback, errors, readFiles);
};
if (Util.isFunction(options)) {
callback = options;
options = null;
}
n = files && files.length;
for (i = 0; i < n; i++) {
name = files.pop();
done.push(name);
fs.readFile(name, options, doneFunc.bind(null, name));
}
};
object.readPipe = readPipe;
function readPipe(params) {
var name,
p = params,
length = p.names && p.names.length;
if (!length) {
p.write.end();
Util.exec(p.callback);
} else {
name = p.dir + p.names.shift();
pipe.create({
from : name,
write : p.write,
gzip : p.gzip,
notEnd : true,
callback: function(error) {
if (error)
Util.exec(p.callback, error);
else
readPipe(params);
}
});
}
}
})(this);