var requiredir = (dir: string, predicate: (fileName: string) => string = _.identity, recursive = false): any => { if(!fs.existsSync(dir)) fail(dir + ' doesn\'t exists') if(!fs.isDirectorySync(dir)) fail(dir + ' is not a directory') var predicate_ = _.isFunction(predicate)? predicate: _.identity var directoryList = fs.readdirSync(dir) return _.reduce(directoryList, function(modules, file: string) { file = path.join(dir, file) if(fs.isDirectorySync(file) && recursive) { // Recursive call var directoryBasename = path.basename(file) modules[directoryBasename] = requiredir(file, predicate_, recursive) } else { var fileBasename = predicate_(path.basename(file)) // If predicate returns false, file is ommited if(!fileBasename) return modules var module = require(path.relative(__dirname, file)) modules[fileBasename] = module } return modules }, {}) }
fs.absolute(path.join("~", "does", "not", "exist")) === path.join(homeDir, "does", "not", "exist") ); console.log(fs.normalize("~/foo") === path.join(homeDir, "foo")); console.log(fs.tildify(homeDir) === "~"); console.log( fs.getAppDataDirectory() === path.join(fs.getHomeDirectory(), "Library", "Application Support") ); console.log(fs.isAbsolute("/a/b/c")); console.log(fs.existsSync("/a/b/c")); console.log(fs.isDirectorySync("/a/b/c")); fs.isDirectory("a/b/c", result => { console.log(result); }); console.log(fs.isFileSync("/a/b/c")); console.log(fs.isSymbolicLinkSync("/a/b/c")); fs.isSymbolicLink("a/b/c", result => { console.log(result); });