control-freak-ide/server/nodejs/testGlobW.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

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\\**"));