feature(console) find path when wildcard present

This commit is contained in:
coderaiser 2014-08-09 05:30:01 -04:00
parent c78a357d96
commit f8cad8f5f4
2 changed files with 74 additions and 19 deletions

View file

@ -16,6 +16,7 @@
win = require(DIR_SERVER + 'win'),
update = require(DIR_SERVER + 'update'),
socket = require(DIR_SERVER + 'socket'),
find = require(DIR_SERVER + 'find'),
mainpackage = require(DIR_ROOT + 'package'),
CLOUDCMD = mainpackage.name,
@ -37,7 +38,13 @@
HELP = {
stdout : CLOUDCMD + ' exit \n' +
CLOUDCMD + ' update \n',
};
},
glob = function(callback) {callback(null, [])};
Util.exec.try(function() {
glob = require('glob');
});
/**
* function listen on servers port
@ -284,7 +291,27 @@
regStrEnd = getRegStrEnd(),
regStrHome = '^~$|^~',
regExpHome = new RegExp(regStrHome + regStrEnd),
isHome = paramDir.match(regExpHome) && !WIN;
isWildCard = Util.isContainStr(paramDir, ['*', '?']),
isHome = paramDir.match(regExpHome) && !WIN,
onExec = function (error, stdout, stderr) {
var path = paramDir,
errorStr = '';
if (stderr) {
errorStr = stderr;
} else if (error) {
errorStr = error.message;
path = '';
}
callback(error || stderr, {
stderr : addNewLine(errorStr),
stdout : stdout,
path : path
});
};
if (isHome) {
paramDir = process.env.HOME;
@ -306,26 +333,19 @@
if (paramDir !== '/')
paramDir = path.join(currDir, paramDir);
command = CD + '"' + paramDir + '" ' + command;
if (isWildCard)
command = CD + paramDir + ' ' + command;
else
command = CD + '"' + paramDir + '" ' + command;
}
exec(command, {cwd: paramDir}, function (error, stdout, stderr) {
var path = paramDir,
errorStr = '';
if (stderr) {
errorStr = stderr;
} else if (error) {
errorStr = error.message;
path = '';
}
callback(error || stderr, {
stderr : addNewLine(errorStr),
stdout : stdout,
path : path
if (!isWildCard)
exec(command, {cwd: paramDir}, onExec);
else
find(paramDir, function(error, dir) {
paramDir = dir;
exec(command, {cwd: dir}, onExec);
});
});
}
function getFirstWord(str) {

35
lib/server/find.js Normal file
View file

@ -0,0 +1,35 @@
(function() {
'use strict';
var fs = require('fs'),
path = require('path'),
Util = require('../util');
module.exports = function(card, callback) {
var dir = path.dirname(card),
nameCard = path.basename(card),
regExp = Util.getRegExp(nameCard);
if (!callback)
throw(Error('Callback is absent!'));
fs.readdir(dir, function(error, names) {
var result;
if (!error)
names.some(function(name) {
var is = name.match(regExp);
if (is)
result = name;
return is;
});
if (result)
result = path.join(dir, result);
callback(error, result);
});
};
})();