mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-21 02:29:23 +00:00
feature(console) find path when wildcard present
This commit is contained in:
parent
c78a357d96
commit
f8cad8f5f4
2 changed files with 74 additions and 19 deletions
|
|
@ -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
35
lib/server/find.js
Normal 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);
|
||||
});
|
||||
};
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue