safelaunch 1.0.27 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/setup.js +36 -31
package/package.json
CHANGED
package/src/setup.js
CHANGED
|
@@ -19,45 +19,63 @@ const cyan = (s) => `${c.cyan}${s}${c.reset}`;
|
|
|
19
19
|
|
|
20
20
|
const HR = gray("─".repeat(49));
|
|
21
21
|
|
|
22
|
-
let version = "1.0.
|
|
22
|
+
let version = "1.0.27";
|
|
23
23
|
try { version = require("../package.json").version; } catch {}
|
|
24
24
|
|
|
25
25
|
async function run(options = {}) {
|
|
26
26
|
const { cwd = process.cwd() } = options;
|
|
27
27
|
|
|
28
|
-
console.log(`\n${bold("safelaunch")} ${gray(`v${version}`)}
|
|
29
|
-
console.log(
|
|
28
|
+
console.log(`\n${bold("safelaunch")} ${gray(`v${version}`)}`);
|
|
29
|
+
console.log("");
|
|
30
|
+
console.log(gray("Scanning your project..."));
|
|
31
|
+
console.log("");
|
|
30
32
|
|
|
31
|
-
// quiet: true — runScan returns results silently, setup owns all output
|
|
32
33
|
const { blockers, warnings, infos, elapsed } = await runScan({ hookMode: true, quiet: true, cwd });
|
|
33
34
|
|
|
34
35
|
const totalChecks = 16;
|
|
35
36
|
const issueCount = blockers.length + warnings.length;
|
|
36
37
|
const passed = totalChecks - issueCount;
|
|
37
38
|
|
|
39
|
+
console.log(HR);
|
|
40
|
+
console.log("");
|
|
41
|
+
|
|
38
42
|
if (issueCount === 0) {
|
|
39
|
-
console.log(
|
|
43
|
+
console.log(gray(` ${totalChecks} checks passed`));
|
|
44
|
+
console.log("");
|
|
45
|
+
console.log(green(" ✓ Safe to deploy"));
|
|
46
|
+
console.log(gray(" Hook active — your next push is protected."));
|
|
40
47
|
} else {
|
|
41
48
|
for (const issue of blockers) {
|
|
42
|
-
console.log(
|
|
43
|
-
console.log(
|
|
44
|
-
console.log(`
|
|
49
|
+
console.log(red(` ${issue.title}`));
|
|
50
|
+
console.log("");
|
|
51
|
+
console.log(` ${issue.impact}`);
|
|
52
|
+
console.log("");
|
|
53
|
+
console.log(cyan(` Fix: ${issue.fix}`));
|
|
54
|
+
console.log("");
|
|
55
|
+
console.log(HR);
|
|
45
56
|
console.log("");
|
|
46
57
|
}
|
|
47
58
|
for (const issue of warnings) {
|
|
48
|
-
console.log(
|
|
49
|
-
console.log(
|
|
50
|
-
console.log(`
|
|
59
|
+
console.log(yellow(` ${issue.title}`));
|
|
60
|
+
console.log("");
|
|
61
|
+
console.log(` ${issue.impact}`);
|
|
62
|
+
console.log("");
|
|
63
|
+
console.log(dim(` Fix: ${issue.fix}`));
|
|
64
|
+
console.log("");
|
|
65
|
+
console.log(HR);
|
|
51
66
|
console.log("");
|
|
52
67
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
);
|
|
68
|
+
const issueWord = issueCount === 1 ? "issue" : "issues";
|
|
69
|
+
console.log(gray(` ${issueCount} ${issueWord} found · ${passed} checks passed`));
|
|
70
|
+
console.log("");
|
|
71
|
+
console.log(red(" ✗ Not safe to deploy"));
|
|
72
|
+
console.log(gray(" Hook active — this push would have been blocked."));
|
|
59
73
|
}
|
|
60
74
|
|
|
75
|
+
console.log("");
|
|
76
|
+
console.log(HR);
|
|
77
|
+
console.log("");
|
|
78
|
+
|
|
61
79
|
console.log(gray("Generating env.manifest.json..."));
|
|
62
80
|
const manifestResult = await init.run({ cwd, silent: true });
|
|
63
81
|
if (manifestResult && manifestResult.count > 0) {
|
|
@@ -79,20 +97,7 @@ async function run(options = {}) {
|
|
|
79
97
|
console.log(dim(" Run: safelaunch hook install --force to replace it."));
|
|
80
98
|
}
|
|
81
99
|
|
|
82
|
-
console.log("
|
|
83
|
-
|
|
84
|
-
if (blockers.length === 0) {
|
|
85
|
-
console.log(`${green("You're protected.")}\n`);
|
|
86
|
-
console.log(gray("From now on, safelaunch runs before every push."));
|
|
87
|
-
console.log(gray("Broken deploys get stopped here — not in production.\n"));
|
|
88
|
-
if (warnings.length > 0) {
|
|
89
|
-
console.log(yellow(`Fix the ${warnings.length} warning${warnings.length > 1 ? "s" : ""} above when you can, then push.`));
|
|
90
|
-
console.log("");
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
console.log(`${red(`Fix the ${blockers.length} blocker${blockers.length > 1 ? "s" : ""} above, then push.`)}\n`);
|
|
94
|
-
console.log(gray("Your hook is installed. It will block pushes until these are resolved.\n"));
|
|
95
|
-
}
|
|
100
|
+
console.log("");
|
|
96
101
|
}
|
|
97
102
|
|
|
98
103
|
module.exports = { run };
|