Files
desktop-app/node_modules/common.js
2015-09-24 13:31:53 +08:00

213 lines
4.3 KiB
JavaScript

var fs = require('fs');
// var User = require('user');
// var Evt = require('evt');
var ObjectId = require('objectid');
// var gui = require('nw.gui');
// console.log(gui.App);
// 开发版
/*
process.on('uncaughtException', function (err) {
// 打印出错误
console.log('~!!~ uncaughtException ~!!~');
console.log(err);
// 打印出错误的调用栈方便调试
console.log(err.stack);
// Web = require('web');
// Web.debug('错误!!');
});
*/
function log(o) {console.log(o)}
// log("<>>>>>>>>>>>>>>>>>>>>");
var Common = {
objectId: function() {
return ObjectId()
},
_uuid: 1,
uuid: function() {
this._uuid++;
return ((new Date()).getTime()) + '_' + this._uuid;
},
isWin: function() {
return process.platform.toLowerCase().indexOf('win') === 0;
},
isMac: function() {
return process.platform.toLowerCase().indexOf('mac') === 0;
},
// 得到目录分隔符
getPathSep: function() {
// windows下
if(process.platform.toLowerCase().indexOf('win') === 0) {
return "\\";
}
// linux下
return '/';
},
isOk: function(ret) {
if(!ret) {
return ret;
}
if(typeof ret == 'object') {
// 数组
if('length' in ret) {
return true;
}
if('Ok' in ret && !ret.Ok) { // 指明了Ok
return false;
}
return true;
}
return false;
},
// 复制文件
copyFile: function(src, dist, callback) {
if(!src || !dist) {
return callback && callback(false);
}
var readStream = fs.createReadStream(src);
var writeStream = fs.createWriteStream(dist);
readStream.pipe(writeStream);
readStream.on('end', function () {
callback && callback(true);
});
readStream.on('error', function () {
callback && callback(false);
});
},
inArray: function(arr, item) {
var me = this;
if(!arr) {
return false;
}
for(var i = 0; i < arr.length; i++) {
if(arr[i] == item) {
return true;
}
}
return false;
},
isImageExt: function(ext) {
var me = this;
if(!ext) {
return false;
}
ext = ext.toLowerCase();
return me.inArray(['jpg', 'jpeg', 'bmp', 'png', 'gif'], ext);
},
// 拆分filePath的各个部分
splitFile: function(fullFilePath) {
var ret = {
path: "", // a/b
name: "", // c.js
nameNotExt: "", // a
ext: "", // js
getFullPath: function() {
var me = this;
if(me.path) {
if(me.ext) {
return me.path + '/' + me.nameNotExt + '.' + me.ext;
} else {
return me.path + '/' + me.nameNotExt;
}
} else {
if(me.ext) {
return me.nameNotExt + '.' + me.ext;
} else {
return me.nameNotExt;
}
}
}
}
if(!fullFilePath) {
return ret;
}
var strs = fullFilePath.split(this.getPathSep());
if(strs.length == 1) {
ret.name = strs[0];
} else {
ret.name = strs[strs.length - 1];
strs.pop();
ret.path = strs.join('/');
}
// console.log("---");
// console.log(ret);
var names = ret.name.split('.');
if(names.length > 1) {
ret.ext = names[names.length - 1];
names.pop();
ret.nameNotExt = names.join('.');
} else {
ret.nameNotExt = ret.name;
}
return ret;
},
// 2014-01-06T18:29:48.802+08:00
goNowToDate: function (goNow) {
if(!goNow) {
return new Date();
}
// new Date();
if(typeof goNow == 'object') {
return date;
}
var str = goNow.substr(0, 10) + " " + goNow.substr(11, 8);
try {
return new Date(str);
} catch(e) {
return new Date();
}
},
// 获取文件的json数据
getFileJson: function(filepath) {
var me = this;
try {
var data = fs.readFileSync(filepath, 'utf-8');
return JSON.parse(data);
} catch(e) {
return false;
}
},
writeFile: function(filepath, data) {
var me = this;
try {
fs.writeFileSync(filepath, data);
return true;
} catch(e) {
return false;
}
},
// 执行命令
cmd: function(args, exitFunc) {
var me = this;
var exec = require('child_process').exec;
var binPath = process.cwd() + '/public/bin/leanote-mac';
if(me.isWin()) {
var binPath = process.cwd() + '/public/bin/leanote.exe';
go();
} else {
// 先chmod +x
var chmod = exec('chmod +x "' + binPath + '"');
chmod.on('exit', function(code) {
go();
});
}
function go() {
var cmd = '"' + binPath + '"'; // "' + txtPath + '" "' + filePath + '"'
for(var i in args) {
cmd += ' "' + args[i] + '"';
}
last = exec(cmd);
last.on('exit', exitFunc);
}
}
};
module.exports = Common;