184 lines
4.2 KiB
JavaScript
184 lines
4.2 KiB
JavaScript
//var glob = require("glob-fs")({});
|
|
var glob = require("glob");
|
|
var fs = require("fs");
|
|
var _path = require("path");
|
|
var base = require("glob-base");
|
|
var flop = require("flop");
|
|
var _ = require("lodash");
|
|
|
|
function toObject(path){
|
|
|
|
try {
|
|
var result = fs.statSync(path, function (error) {
|
|
|
|
});
|
|
|
|
var isDirectory = result.isDirectory();
|
|
return {
|
|
path: path,
|
|
sizeBytes: result.size,
|
|
size: isDirectory ? 'Folder' : '',
|
|
owner: result.uid,
|
|
group: result.gid,
|
|
mode: result.mode,
|
|
isDir: isDirectory,
|
|
directory: isDirectory,
|
|
name: _path.win32.basename(path),
|
|
fileType: isDirectory ? 'folder' : 'file',
|
|
modified: result.mtime.getTime() / 1000
|
|
};
|
|
|
|
return result;
|
|
}catch(e){
|
|
return {
|
|
path: path,
|
|
sizeBytes: 0,
|
|
size: 0 ,
|
|
owner: 0,
|
|
group: 0,
|
|
mode: 0,
|
|
directory: false,
|
|
mime: 'unknown',
|
|
name: _path.win32.basename(path),
|
|
fileType: 'file',
|
|
modified: 0
|
|
};
|
|
}
|
|
}
|
|
|
|
function ls(path,options,cb){
|
|
|
|
var self = this;
|
|
var _options = {};
|
|
var isWin = process.platform === 'win32';
|
|
|
|
console.log('ls path : ' + path + ' win= '+isWin);
|
|
|
|
if(path ==='/*' && isWin){
|
|
var out = [];
|
|
flop.read('/', function(error, data) {
|
|
_.each(data.files,function(item){
|
|
out.push({
|
|
path: '/' + item.name + ':',
|
|
sizeBytes: 0,
|
|
size: 0 ,
|
|
owner: 0,
|
|
group: 0,
|
|
mode: 0,
|
|
directory: true,
|
|
mime: 'unknown',
|
|
name: item.name,
|
|
fileType: 'folder',
|
|
modified: 0,
|
|
drive:true
|
|
})
|
|
});
|
|
self._send({
|
|
files:out
|
|
},'ls',options);
|
|
});
|
|
return;
|
|
}
|
|
|
|
var _root = "";
|
|
|
|
if (isWin) {
|
|
if(path.length===5){// /C:/*
|
|
var _parts = path.split(':/');
|
|
if(_parts.length==2){
|
|
_root = _parts[0][1] + ":/";
|
|
_options = {
|
|
root:_root
|
|
};
|
|
path = "/*"
|
|
}
|
|
}else{
|
|
var _parts = path.split(':/');
|
|
if(_parts.length==2){
|
|
_root = _parts[0][1] + ":/";
|
|
_options = {
|
|
root:_root
|
|
};
|
|
path = '' + _parts[1];
|
|
}
|
|
}
|
|
}
|
|
function pathFromWin(current, root) {
|
|
|
|
if(!current){
|
|
return "";
|
|
}
|
|
|
|
if (isWin && (!root || root === '/')) {
|
|
|
|
current = '' + current;
|
|
//.replace(':', ':/')
|
|
//.replace(/\\/g, '/');
|
|
} else {
|
|
current = _path.join(root, current);
|
|
}
|
|
|
|
return current;
|
|
}
|
|
|
|
|
|
var files = glob.sync(path, _options);
|
|
|
|
if(!_.isArray(files)){
|
|
files = [files];
|
|
}
|
|
var out = [];
|
|
_.each(files,function(file){
|
|
var object = toObject(file);
|
|
if(isWin && object && object.path) {
|
|
object.path = _path.resolve(pathFromWin(object.path));
|
|
}
|
|
object && out.push(object);
|
|
});
|
|
|
|
return out;
|
|
}
|
|
|
|
function list(_path){
|
|
try {
|
|
var options = {};
|
|
var root = base(_path);
|
|
|
|
if (root.base) {
|
|
options.cwd = root.base;
|
|
if (root.isGlob) {
|
|
_path = root.glob
|
|
}
|
|
}
|
|
var _glob = new glob();
|
|
var files = _glob.readdirSync(_path, options);
|
|
console.dir(files);
|
|
var ret = [];
|
|
_.each(files, function (file) {
|
|
ret.push((options.cwd ? options.cwd + path.sep : "" ) + file)
|
|
});
|
|
}catch(e){
|
|
return null;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
var __path = "C:\\home\\mc007\\Music\\Sasha\\*.mp3";
|
|
var files = ls(__path,{});
|
|
console.log('files',files);
|
|
|
|
/*
|
|
//var _glob = new glob();
|
|
var _path = "C:\\home\\mc007\\Music\\Sasha\\*";
|
|
|
|
glob.readdir("*",{
|
|
},function(e){
|
|
console.log(e);
|
|
});
|
|
*/
|
|
|
|
//console.log(list("C:\\home\\mc007\\Music\\Sasha\\**"));
|
|
|
|
|
|
|