mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
116 lines
3 KiB
JavaScript
116 lines
3 KiB
JavaScript
/*
|
|
* FLOP - FiLe OPerations
|
|
*/
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
var fs = require('fs'),
|
|
DIR = './',
|
|
|
|
Util = require(DIR + '../util'),
|
|
|
|
size = require(DIR + 'size'),
|
|
readify = require(DIR + 'readify'),
|
|
time = require(DIR + 'timem'),
|
|
pipe = require(DIR + 'pipe'),
|
|
ncp = require(DIR + 'ncp'),
|
|
|
|
rimraf = tryRequire('rimraf'),
|
|
mkdir = tryRequire('mkdirp') || fs.mkdir;
|
|
|
|
exports.create = function(path, type, callback) {
|
|
Util.checkArgs(arguments, ['path', 'callback']);
|
|
|
|
mkdir(path, callback);
|
|
};
|
|
|
|
exports.read = function(path, type, callback) {
|
|
Util.checkArgs(arguments, ['path', 'callback']);
|
|
|
|
if (!callback)
|
|
callback = type;
|
|
|
|
switch (type) {
|
|
case 'size':
|
|
size.get(path, callback);
|
|
break;
|
|
|
|
case 'size raw':
|
|
size.get(path, { type: 'raw' }, callback);
|
|
break;
|
|
|
|
case 'time':
|
|
time.get(path, callback);
|
|
break;
|
|
|
|
case 'time raw':
|
|
time.get(path, 'raw', callback);
|
|
break;
|
|
|
|
default:
|
|
readify(path, callback);
|
|
break;
|
|
}
|
|
};
|
|
|
|
exports.delete = function(path, callback) {
|
|
Util.checkArgs(arguments, ['path', 'callback']);
|
|
|
|
if (rimraf)
|
|
rimraf(path, callback);
|
|
else
|
|
fs.unlink(path, function(error) {
|
|
var isDir = error && error.code === 'EISDIR';
|
|
|
|
if (isDir)
|
|
fs.rmdir(path, callback);
|
|
else
|
|
callback(error);
|
|
});
|
|
};
|
|
|
|
exports.move = function(from, to, callback) {
|
|
Util.checkArgs(arguments, ['path', 'to', 'callback']);
|
|
|
|
fs.rename(from, to, function(error) {
|
|
var isExDev = error && error.code === 'EXDEV';
|
|
|
|
if (ncp && rimraf && isExDev)
|
|
ncp(from, to, {
|
|
stopOnError: true
|
|
}, function() {
|
|
rimraf(from, callback);
|
|
});
|
|
else
|
|
callback(error);
|
|
});
|
|
};
|
|
|
|
exports.copy = function(from, to, callback) {
|
|
Util.checkArgs(arguments, ['from', 'to', 'callback']);
|
|
|
|
fs.lstat(from, function(error, stat) {
|
|
var isDir = stat && stat.isDirectory();
|
|
|
|
if (error)
|
|
callback(error);
|
|
else if (isDir && ncp)
|
|
ncp(from, to, {
|
|
stopOnError: true
|
|
}, callback);
|
|
else
|
|
pipe.create(from, to, callback);
|
|
});
|
|
};
|
|
|
|
function tryRequire(name) {
|
|
var module;
|
|
|
|
Util.exec.try(function() {
|
|
module = require(name);
|
|
});
|
|
|
|
return module;
|
|
}
|
|
})();
|