forest-express
Version:
Official package for all Forest Express Lianas
53 lines (50 loc) • 2.53 kB
JavaScript
"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;