diff --git a/src/services/sharedFolder.js b/src/services/sharedFolder.js index faf39439c5..220ecdcf70 100644 --- a/src/services/sharedFolder.js +++ b/src/services/sharedFolder.js @@ -15,6 +15,15 @@ module.exports = { cb(null, utils.walkSync(this.sharedFolder, {}, this.sharedFolder)) }, + resolveDirectory: function (args, cb) { + try { + var path = utils.absolutePath(args.path, this.sharedFolder) + cb(null, utils.resolveDirectory(path, this.sharedFolder)) + } catch (e) { + cb(e) + } + }, + get: function (args, cb) { var path = utils.absolutePath(args.path, this.sharedFolder) if (!isRealPath(path, cb)) return diff --git a/src/utils.js b/src/utils.js index 215df8d58e..86bd00917b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -6,7 +6,8 @@ var pathModule = require('path') module.exports = { absolutePath: absolutePath, relativePath: relativePath, - walkSync: walkSync + walkSync: walkSync, + resolveDirectory: resolveDirectory } /** @@ -59,3 +60,16 @@ function walkSync (dir, filelist, sharedFolder) { }) return filelist } + +function resolveDirectory (dir, sharedFolder) { + var ret = {} + var files = fs.readdirSync(dir) + files.forEach(function (file) { + var subElement = path.join(dir, file) + if (!fs.lstatSync(subElement).isSymbolicLink()) { + var relative = relativePath(subElement, sharedFolder) + ret[relative] = { isDirectory: fs.statSync(subElement).isDirectory() } + } + }) + return ret +}