UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

53 lines (50 loc) 2.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var ProjectDirectoryFinder = /*#__PURE__*/function () { function ProjectDirectoryFinder(_ref) { var path = _ref.path; (0, _classCallCheck2["default"])(this, ProjectDirectoryFinder); this.path = path; this.dirname = __dirname; // NOTICE: Order does matter as packages install via yarn 2 Plug n Play mode also // include node_modules in path. this.PATHS_ROOT_PACKAGES = [ // Yarn 2 Plug n Play mode this.path.join('.yarn', 'cache'), this.path.join('.yarn', 'unplugged'), // Usual Yarn / NPM 'node_modules']; } (0, _createClass2["default"])(ProjectDirectoryFinder, [{ key: "ensureAbsolutePath", value: function ensureAbsolutePath(subPathsToProject) { var _this$path, _this$path3; // NOTICE: on POSIX system, empty path created by previous split is skipped by path.join. if (!this.path.isAbsolute((_this$path = this.path).join.apply(_this$path, (0, _toConsumableArray2["default"])(subPathsToProject)))) { var _this$path2; return (_this$path2 = this.path).join.apply(_this$path2, [this.path.sep].concat((0, _toConsumableArray2["default"])(subPathsToProject))); } return (_this$path3 = this.path).join.apply(_this$path3, (0, _toConsumableArray2["default"])(subPathsToProject)); } }, { key: "getAbsolutePath", value: function getAbsolutePath() { for (var index = 0; index <= this.PATHS_ROOT_PACKAGES.length; index += 1) { var rootPackagesPath = this.PATHS_ROOT_PACKAGES[index]; // NOTICE: forest-express has not been sym linked. if (this.dirname.includes(rootPackagesPath)) { var indexRootPath = this.dirname.indexOf(rootPackagesPath); var pathProjectRoot = this.dirname.substr(0, indexRootPath); var subPathsToProject = pathProjectRoot.split(this.path.sep); return this.ensureAbsolutePath(subPathsToProject); } } // NOTICE: forest-express is sym linked, assuming the process is running on project directory. return process.cwd(); } }]); return ProjectDirectoryFinder; }(); module.exports = ProjectDirectoryFinder;