tcompile
Version:
A compressing tool for ctrip/Taocan project
61 lines (50 loc) • 1.57 kB
JavaScript
var sys = {};
sys.fs = require('fs');
sys.path = require('path');
var Promise = require("bluebird");
exports.remove = function (path) {
try{
sys.fs.unlinkSync(path);
}catch(ex){
console.log('WARN: Failed to remove file or directory '+path);
}
}
exports.mkdir = function (dirname) {
var dirnames = [];
while(!sys.fs.existsSync(dirname)){
dirnames.push(dirname);
dirname = sys.path.dirname(dirname);
}
while(dirnames.length > 0){
sys.fs.mkdirSync(dirnames.pop());
}
}
exports.copy = function (file, dest) {
return new Promise(function (resolve, reject){
exports.mkdir(sys.path.dirname(dest));
// do copying
var readable = sys.fs.createReadStream(file);
var writable = sys.fs.createWriteStream(dest);
readable.pipe(writable);
readable.on('end', function () {
resolve();
}).on('error', function (err) {
AppLog.error('File copy error: ' + file);
AppLog.error(err.message);
reject();
});
});
}
var REGEXP_DISK_NAME = /^\w+:/;
exports.move = function (file, dest) {
return new Promise(function (resolve, reject){
exports.mkdir(sys.path.dirname(dest));
if(file.match(REGEXP_DISK_NAME)[0] == dest.match(REGEXP_DISK_NAME)[0])
sys.fs.renameSync(file, dest);
else
File.copy(file, dest)
.then(function () {
sys.fs.unlinkSync(file);
});
});
}