/
copy_test_files.js
145 lines (136 loc) · 4.22 KB
/
copy_test_files.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// @ts-check
const { remove, copy } = require("../dist/lib/utils/fs");
const { join } = require("path");
const { spawn } = require("child_process");
function promiseFromChildProcess(childProcess) {
return new Promise(function (resolve, reject) {
childProcess.on("error", function (error) {
reject(
new Error(
childProcess.spawnargs.join(" ") + " : " + error.message
)
);
});
childProcess.on("exit", function (code) {
if (code !== 0) {
reject(
new Error(
childProcess.spawnargs.join(" ") +
" : exited with code " +
code
)
);
} else {
resolve();
}
});
});
}
const isWindows = process.platform === "win32";
const npmCommand = isWindows ? "npm.cmd" : "npm";
function ensureNpmVersion() {
return Promise.resolve().then(() => {
const npmProc = spawn(npmCommand, ["--version"], {
stdio: ["ignore", "pipe", "inherit"],
});
let npmVersion = "";
npmProc.stdout.on("data", (data) => {
npmVersion += data;
});
return promiseFromChildProcess(npmProc).then(() => {
npmVersion = npmVersion.trim();
let firstDot = npmVersion.indexOf(".");
const npmMajorVer = parseInt(
npmVersion.slice(0, npmVersion.indexOf("."))
);
if (npmMajorVer < 7) {
throw new Error(
"npm version must be at least 7, version installed is " +
npmVersion
);
}
});
});
}
function prepareMonorepoFolder() {
return Promise.resolve()
.then(() => {
return promiseFromChildProcess(
spawn(
"git",
["clone", "https://github.com/efokschaner/ts-monorepo.git"],
{
cwd: join(__dirname, "../dist/test/packages"),
stdio: "inherit",
}
)
);
})
.then(() => {
return promiseFromChildProcess(
spawn(
"git",
["checkout", "73bdd4c6458ad4cc3de35498e65d55a1a44a8499"],
{
cwd: join(
__dirname,
"../dist/test/packages/ts-monorepo"
),
stdio: "inherit",
}
)
);
})
.then(() => {
return promiseFromChildProcess(
spawn(npmCommand, ["install"], {
cwd: join(__dirname, "../dist/test/packages/ts-monorepo"),
stdio: "inherit",
})
);
})
.then(() => {
return promiseFromChildProcess(
spawn(npmCommand, ["run", "build"], {
cwd: join(__dirname, "../dist/test/packages/ts-monorepo"),
stdio: "inherit",
})
);
});
}
function prepareSinglePackageExample() {
return Promise.resolve().then(() => {
return promiseFromChildProcess(
spawn(npmCommand, ["run", "build"], {
cwd: join(
__dirname,
"../dist/test/packages/typedoc-single-package-example"
),
stdio: "inherit",
})
);
});
}
const toCopy = [
"test/converter",
"test/converter2",
"test/renderer",
"test/module",
"test/packages",
"test/utils/options/readers/data",
];
const copies = toCopy.map(async (dir) => {
const source = join(__dirname, "../src", dir);
const target = join(__dirname, "../dist", dir);
await remove(target);
await copy(source, target);
});
Promise.all(copies)
.then(ensureNpmVersion)
.then(() =>
Promise.all([prepareMonorepoFolder(), prepareSinglePackageExample()])
)
.catch((reason) => {
console.error(reason);
process.exit(1);
});