@polderlabs/bizar 10.29.1 → 10.29.2
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/cli/install/index.mjs
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* that delegates to the provisioner.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
|
|
8
10
|
import { runProvision, forceCleanInstall, clearSavedEnv } from '../provision.mjs';
|
|
9
11
|
import { runDoctor } from '../doctor.mjs';
|
|
12
|
+
import { runStatuslineInstall } from '../commands/statusline.mjs';
|
|
10
13
|
import { showBanner, sectionHeading } from './banner.mjs';
|
|
11
14
|
import { printInstallLocations } from './paths.mjs';
|
|
12
15
|
import { runInteractiveSetup } from './interactive-setup.mjs';
|
|
@@ -32,9 +35,19 @@ import { runInteractiveSetup } from './interactive-setup.mjs';
|
|
|
32
35
|
* @param {boolean} [opts.quiet] - Only print the location card
|
|
33
36
|
* @param {string} [opts.mode] - 'install' | 'update'
|
|
34
37
|
* @param {boolean} [opts.yes] - assume yes for any non-destructive prompts
|
|
38
|
+
* @param {Function} [opts.statuslineInstall] - injectable statusline installer for tests
|
|
39
|
+
* @param {Function} [opts.provision] - injectable provisioner for tests
|
|
35
40
|
*/
|
|
36
41
|
export async function runInstaller(opts = {}) {
|
|
37
|
-
const {
|
|
42
|
+
const {
|
|
43
|
+
dryRun = false,
|
|
44
|
+
force = false,
|
|
45
|
+
quiet = false,
|
|
46
|
+
mode = 'install',
|
|
47
|
+
yes = false,
|
|
48
|
+
statuslineInstall = runStatuslineInstall,
|
|
49
|
+
provision = runProvision,
|
|
50
|
+
} = opts;
|
|
38
51
|
|
|
39
52
|
if (quiet) {
|
|
40
53
|
printInstallLocations({ dryRun, force });
|
|
@@ -78,7 +91,7 @@ export async function runInstaller(opts = {}) {
|
|
|
78
91
|
// Always pass `force: true` downstream so `runProvision` re-emits the
|
|
79
92
|
// template-owned keys (permissions.allow wildcards, mcpServers, hooks)
|
|
80
93
|
// into the freshly-empty settings file.
|
|
81
|
-
const provisionResult = await
|
|
94
|
+
const provisionResult = await provision({
|
|
82
95
|
mode,
|
|
83
96
|
dryRun,
|
|
84
97
|
force: true,
|
|
@@ -87,6 +100,22 @@ export async function runInstaller(opts = {}) {
|
|
|
87
100
|
initializeOpenKanProject: interactive?.initializeOpenKanProject === true,
|
|
88
101
|
});
|
|
89
102
|
|
|
103
|
+
// Auto-install statusline (v10.29.2+). Skipped on dry-run, non-fatal on failure.
|
|
104
|
+
// Idempotent: re-running is safe — updateStatuslineSettings re-writes the same field.
|
|
105
|
+
if (!dryRun) {
|
|
106
|
+
try {
|
|
107
|
+
const statuslineResult = await statuslineInstall([]);
|
|
108
|
+
if (statuslineResult?.ok) {
|
|
109
|
+
provisionResult.statuslineInstalled = true;
|
|
110
|
+
} else {
|
|
111
|
+
console.log(chalk.yellow(` ! statusline auto-install failed: ${statuslineResult?.error || 'unknown'}`));
|
|
112
|
+
}
|
|
113
|
+
} catch (err) {
|
|
114
|
+
// Non-fatal: the user can still run `bizar statusline install` manually.
|
|
115
|
+
console.log(chalk.yellow(` ! statusline auto-install skipped: ${err?.message || err}`));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
90
119
|
// F-183 — post-install health check. Surfaced as a warning rather
|
|
91
120
|
// than a hard failure so a forced install that completes without
|
|
92
121
|
// error still reports its doctor summary; the operator decides
|
package/package.json
CHANGED