UNPKG

1.44 kBJavaScriptView Raw
1"use strict";
2
3const path = require('path');
4
5function getRootDir(files) {
6 let cur = null;
7 var _iteratorNormalCompletion = true;
8 var _didIteratorError = false;
9 var _iteratorError = undefined;
10
11 try {
12 for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
13 let file = _step.value;
14 let parsed = path.parse(file);
15
16 if (!cur) {
17 cur = parsed;
18 } else if (parsed.root !== cur.root) {
19 // bail out. there is no common root.
20 // this can happen on windows, e.g. C:\foo\bar vs. D:\foo\bar
21 return process.cwd();
22 } else {
23 // find the common path parts.
24 let curParts = cur.dir.split(path.sep);
25 let newParts = parsed.dir.split(path.sep);
26 let len = Math.min(curParts.length, newParts.length);
27 let i = 0;
28
29 while (i < len && curParts[i] === newParts[i]) {
30 i++;
31 }
32
33 cur.dir = i > 1 ? curParts.slice(0, i).join(path.sep) : cur.root;
34 }
35 }
36 } catch (err) {
37 _didIteratorError = true;
38 _iteratorError = err;
39 } finally {
40 try {
41 if (!_iteratorNormalCompletion && _iterator.return != null) {
42 _iterator.return();
43 }
44 } finally {
45 if (_didIteratorError) {
46 throw _iteratorError;
47 }
48 }
49 }
50
51 return cur ? cur.dir : process.cwd();
52}
53
54module.exports = getRootDir;
\No newline at end of file