1 | 'use strict';
|
2 | const fs = require('fs-extra');
|
3 | const path = require('path');
|
4 | const _ = require('lodash');
|
5 | const USER_HOME = require('os').homedir();
|
6 | const defaultFileSharingPaths = [
|
7 | '/Users',
|
8 | '/Volumes',
|
9 | '/private',
|
10 | '/tmp'
|
11 | ];
|
12 |
|
13 | async function getSharedPathsOfDockerForMac() {
|
14 |
|
15 | const settingsPath = path.join(USER_HOME, 'Library/Group Containers/group.com.docker/settings.json');
|
16 |
|
17 | const fileData = await fs.readFile(settingsPath, 'utf8');
|
18 |
|
19 | const settings = JSON.parse(fileData);
|
20 |
|
21 | if (settings.hasOwnProperty('filesharingDirectories')) {
|
22 | return settings.filesharingDirectories;
|
23 | }
|
24 | return defaultFileSharingPaths;
|
25 | }
|
26 |
|
27 | async function findPathsOutofSharedPaths(mounts) {
|
28 | const dockerSharedPaths = await getSharedPathsOfDockerForMac();
|
29 | let pathsOutofSharedPaths = [];
|
30 | for (let mount of mounts) {
|
31 | if (_.isEmpty(mount)) { continue; }
|
32 |
|
33 | const mountPath = mount.Source;
|
34 | let isMountPathSharedToDocker = false;
|
35 | for (let dockerSharedPath of dockerSharedPaths) {
|
36 | if (mountPath.startsWith(dockerSharedPath)) {
|
37 | isMountPathSharedToDocker = true;
|
38 | break;
|
39 | }
|
40 | }
|
41 | if (!isMountPathSharedToDocker) {
|
42 | pathsOutofSharedPaths.push(mountPath);
|
43 | }
|
44 | }
|
45 | return pathsOutofSharedPaths;
|
46 | }
|
47 |
|
48 | module.exports = { findPathsOutofSharedPaths }; |
\ | No newline at end of file |