UNPKG

actionhero

Version:

The reusable, scalable, and quick node.js API server for stateless and stateful applications

30 lines (26 loc) 867 B
import * as fs from "fs"; import * as path from "path"; export function sourceRelativeLinkPath( linkFile: string, pluginPaths: Array<string>, ): string | boolean { const type = fs.readFileSync(linkFile).toString(); const pathParts = linkFile.split(path.sep); const name = pathParts[pathParts.length - 1].split(".")[0]; const pathsToTry = pluginPaths.slice(0); let pluginRoot: string; pathsToTry.forEach((pluginPath) => { const pluginPathAttempt = path.normalize(pluginPath + path.sep + name); try { const stats = fs.lstatSync(pluginPathAttempt); if (!pluginRoot && (stats.isDirectory() || stats.isSymbolicLink())) { pluginRoot = pluginPathAttempt; } } catch (e) {} }); if (!pluginRoot) { return false; } const pluginSection = path.normalize(pluginRoot + path.sep + type); return pluginSection; }