-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.js
executable file
·32 lines (29 loc) · 909 Bytes
/
install.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env node
const fs = require("fs-extra");
const path = require("path");
const homelinks = fs.readdirSync(path.resolve(__dirname, "homelinks"));
const doLink = (src, dest) => {
console.log(`ensuring ${src} ==> ${dest}`);
// wrong destination check
try {
if (fs.lstatSync(dest).isSymbolicLink()) {
fs.unlinkSync(dest);
}
} catch (e) {}
fs.ensureSymlinkSync(src, dest);
};
for (const file of homelinks) {
const src = path.resolve(__dirname, "homelinks", file);
const dest = path.resolve(process.env.HOME, file);
// we copy directory links one layer deep for config
if (fs.lstatSync(src).isDirectory()) {
const subdirContents = fs.readdirSync(src);
for (subFile of subdirContents) {
const subSrc = path.resolve(src, subFile);
const subDest = path.resolve(dest, subFile);
doLink(subSrc, subDest);
}
} else {
doLink(src, dest);
}
}