-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Expand file tree
/
Copy pathupdate-smoke-test-template.mjs
More file actions
69 lines (57 loc) · 2.21 KB
/
update-smoke-test-template.mjs
File metadata and controls
69 lines (57 loc) · 2.21 KB
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
#!/usr/bin/env node
import fs from "node:fs";
import path from "node:path";
const [appDir, targetDir] = process.argv.slice(2);
if (!appDir || !targetDir) {
console.error("Usage: update-smoke-test-template.sh <appDir> <targetDir>");
process.exit(1);
}
function readJson(filePath) {
return JSON.parse(fs.readFileSync(filePath, "utf8"));
}
function writeJson(filePath, data) {
fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
}
const resolvedAppDir = path.resolve(appDir);
const resolvedTargetDir = path.resolve(targetDir);
fs.rmSync(path.join(resolvedAppDir, ".ember-cli"), { force: true });
const pkgPath = path.join(resolvedAppDir, "package.json");
const pkg = readJson(pkgPath);
pkg.scripts = pkg.scripts || {};
pkg.scripts.test = "ember test";
if (pkg.devDependencies && pkg.devDependencies["@glimmer/component"]) {
pkg.devDependencies["@glimmer/component"] = "workspace:^";
} else if (pkg.dependencies && pkg.dependencies["@glimmer/component"]) {
pkg.dependencies["@glimmer/component"] = "workspace:^";
} else {
pkg.devDependencies = pkg.devDependencies || {};
pkg.devDependencies["@glimmer/component"] = "workspace:^";
}
if (pkg.devDependencies && pkg.devDependencies["ember-source"]) {
pkg.devDependencies["ember-source"] = "workspace:*";
}
writeJson(pkgPath, pkg);
const envPath = path.join(resolvedAppDir, "config", "environment.js");
const source = fs.readFileSync(envPath, "utf8");
if (!source.includes("_OVERRIDE_DEPRECATION_VERSION")) {
const block = [
"/* The following enables the infrastructure allow us to test as if deprecations",
" have been turned into errors at a specific version.",
"*/",
"_OVERRIDE_DEPRECATION_VERSION: process.env.OVERRIDE_DEPRECATION_VERSION,"
];
const updated = source.replace(
/EmberENV:\s*\{\s*\n([ \t]*)/,
(match, indent) => {
const pad = `${indent} `;
const injected = block.map((line) => pad + line).join("\n");
return match + injected + "\n" + indent;
}
);
if (updated === source) {
throw new Error("Failed to locate EmberENV block for injection.");
}
fs.writeFileSync(envPath, updated);
}
fs.rmSync(resolvedTargetDir, { recursive: true, force: true });
fs.renameSync(resolvedAppDir, resolvedTargetDir);