mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-19 01:17:18 +00:00
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
(function() {
|
|
'use strict';
|
|
|
|
var DIR = '../../../',
|
|
DIR_SERVER = DIR + 'server/',
|
|
|
|
path = require('path'),
|
|
|
|
CloudFunc = require(DIR + 'cloudfunc'),
|
|
check = require('checkup'),
|
|
exec = require('execon'),
|
|
|
|
packer = require('jag'),
|
|
|
|
tryRequire = require(DIR_SERVER + 'tryRequire'),
|
|
tryOptions = {log: true, exit: true},
|
|
|
|
flop = tryRequire('flop', tryOptions),
|
|
files = tryRequire('files-io', tryOptions),
|
|
|
|
onSave = exec.with(onDone, 'save'),
|
|
onMakeDir = exec.with(onDone, 'make dir');
|
|
|
|
module.exports = function(query, name, readStream, callback) {
|
|
var onFile = exec.with(onSave, name, callback),
|
|
onDir = exec.with(onMakeDir, name, callback);
|
|
|
|
check(arguments, ['query', 'name', 'readStream', 'callback']);
|
|
|
|
switch(query) {
|
|
default:
|
|
files.pipe(readStream, name, onFile);
|
|
break;
|
|
|
|
case 'dir':
|
|
flop.create(name, 'dir', onDir);
|
|
break;
|
|
|
|
case 'unzip':
|
|
packer.unpack(readStream, name, onFile);
|
|
break;
|
|
}
|
|
};
|
|
|
|
function onDone(msg, name, callback, error) {
|
|
var baseName = path.basename(name);
|
|
|
|
if (!error)
|
|
msg = CloudFunc.formatMsg(msg, baseName);
|
|
|
|
callback(error, msg);
|
|
}
|
|
})();
|