dev-cockpit 0.2.8 → 0.2.9
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/dist/commands/mount.d.ts +15 -0
- package/dist/commands/mount.d.ts.map +1 -1
- package/dist/core/config.d.ts +7 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +160 -18
- package/dist/index.js.map +3 -3
- package/dist/mount/types.d.ts +6 -0
- package/dist/mount/types.d.ts.map +1 -1
- package/examples/cockpit.schema.json +5 -0
- package/package.json +1 -1
package/dist/commands/mount.d.ts
CHANGED
|
@@ -25,6 +25,21 @@ export interface MountCommandOptions {
|
|
|
25
25
|
quiet?: boolean;
|
|
26
26
|
}
|
|
27
27
|
export declare function mergeMounts(configMounts: readonly Mount[], providerMounts: readonly Mount[]): Mount[];
|
|
28
|
+
/**
|
|
29
|
+
* Interactive picker. Lazy-imports @inquirer/prompts to keep the `dev`
|
|
30
|
+
* command's startup time clean. Three phases:
|
|
31
|
+
*
|
|
32
|
+
* 1. Checkbox of discovered candidates (skipped if none).
|
|
33
|
+
* 2. For any selected mount with `alternativeSources` to choose from, offer
|
|
34
|
+
* a per-row source override via list-picker (with the current `hostPath`
|
|
35
|
+
* preselected and a `Custom path...` escape hatch).
|
|
36
|
+
* 3. `Add a custom mount?` loop — free-form bind entries with an auto-
|
|
37
|
+
* suggested `containerPath` drawn from the discovered candidates.
|
|
38
|
+
*
|
|
39
|
+
* Returns the final mount set in source-of-truth order. The caller writes
|
|
40
|
+
* the overlay / manifest from this list.
|
|
41
|
+
*/
|
|
42
|
+
export declare function pickMounts(candidates: readonly Mount[]): Promise<Mount[]>;
|
|
28
43
|
export declare function mountCommand(opts?: MountCommandOptions): Promise<void>;
|
|
29
44
|
export declare function mountStatusCommand(opts?: MountCommandOptions): Promise<void>;
|
|
30
45
|
export declare function mountClearCommand(opts?: MountCommandOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/commands/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/commands/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAoBvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD,wBAAgB,WAAW,CACzB,YAAY,EAAE,SAAS,KAAK,EAAE,EAC9B,cAAc,EAAE,SAAS,KAAK,EAAE,GAC/B,KAAK,EAAE,CAKT;AAyHD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAuK/E;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FhF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrF"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -204,26 +204,31 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
204
204
|
hostPath: z.ZodString;
|
|
205
205
|
containerPath: z.ZodOptional<z.ZodString>;
|
|
206
206
|
kind: z.ZodOptional<z.ZodEnum<["bind", "symlink-only"]>>;
|
|
207
|
+
alternativeSources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
207
208
|
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
208
209
|
}, "strip", z.ZodTypeAny, {
|
|
209
210
|
hostPath: string;
|
|
210
211
|
containerPath?: string | undefined;
|
|
211
212
|
kind?: "bind" | "symlink-only" | undefined;
|
|
213
|
+
alternativeSources?: string[] | undefined;
|
|
212
214
|
meta?: Record<string, unknown> | undefined;
|
|
213
215
|
}, {
|
|
214
216
|
hostPath: string;
|
|
215
217
|
containerPath?: string | undefined;
|
|
216
218
|
kind?: "bind" | "symlink-only" | undefined;
|
|
219
|
+
alternativeSources?: string[] | undefined;
|
|
217
220
|
meta?: Record<string, unknown> | undefined;
|
|
218
221
|
}>, {
|
|
219
222
|
hostPath: string;
|
|
220
223
|
containerPath?: string | undefined;
|
|
221
224
|
kind?: "bind" | "symlink-only" | undefined;
|
|
225
|
+
alternativeSources?: string[] | undefined;
|
|
222
226
|
meta?: Record<string, unknown> | undefined;
|
|
223
227
|
}, {
|
|
224
228
|
hostPath: string;
|
|
225
229
|
containerPath?: string | undefined;
|
|
226
230
|
kind?: "bind" | "symlink-only" | undefined;
|
|
231
|
+
alternativeSources?: string[] | undefined;
|
|
227
232
|
meta?: Record<string, unknown> | undefined;
|
|
228
233
|
}>, "many">>>;
|
|
229
234
|
mount: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
@@ -355,6 +360,7 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
355
360
|
hostPath: string;
|
|
356
361
|
containerPath?: string | undefined;
|
|
357
362
|
kind?: "bind" | "symlink-only" | undefined;
|
|
363
|
+
alternativeSources?: string[] | undefined;
|
|
358
364
|
meta?: Record<string, unknown> | undefined;
|
|
359
365
|
}[];
|
|
360
366
|
mount: {
|
|
@@ -448,6 +454,7 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
448
454
|
hostPath: string;
|
|
449
455
|
containerPath?: string | undefined;
|
|
450
456
|
kind?: "bind" | "symlink-only" | undefined;
|
|
457
|
+
alternativeSources?: string[] | undefined;
|
|
451
458
|
meta?: Record<string, unknown> | undefined;
|
|
452
459
|
}[] | undefined;
|
|
453
460
|
mount?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,mFAAmF;AACnF,eAAO,MAAM,cAAc,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,mFAAmF;AACnF,eAAO,MAAM,cAAc,IAAI,CAAC;AA2IhC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAhBlC;;;;;;WAMG;;QAEH,iDAAiD;;QAEjD,gEAAgE;;;;;;;;;;;IAwBhE,2EAA2E;;IAE3E,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEzE;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,QAAQ,EAAE,MAAM;aAChB,KAAK,EAAE,OAAO;aACd,SAAS,EAAE,MAAM;gBAFjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM;CAOpC;AAED,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,QAAQ,EAAE,MAAM;aAChB,KAAK,EAAE,OAAO;gBADd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO;CAKjC;AAID,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,iBAAiB,CA0C5F"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -75,6 +75,14 @@ export interface Mount {
|
|
|
75
75
|
* redirect a pre-existing compose bind to the dev clone).
|
|
76
76
|
*/
|
|
77
77
|
kind?: 'bind' | 'symlink-only';
|
|
78
|
+
/**
|
|
79
|
+
* Optional list of alternative parent-dir clones the user can swap in for
|
|
80
|
+
* `hostPath` via the interactive picker (e.g. forks of the same package
|
|
81
|
+
* sitting alongside the auto-detected default). The profile populates this
|
|
82
|
+
* from its source scan; dev-cockpit only consumes it at picker time. When
|
|
83
|
+
* empty/absent the picker has nothing to offer and accepts `hostPath` as-is.
|
|
84
|
+
*/
|
|
85
|
+
alternativeSources?: string[];
|
|
78
86
|
/**
|
|
79
87
|
* Optional metadata attached by profiles (e.g. `{name, type, installPath}`)
|
|
80
88
|
* for richer status output and lifecycle decisions. dev-cockpit treats this
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -83972,6 +83972,7 @@ var MountSchema = external_exports.object({
|
|
|
83972
83972
|
hostPath: external_exports.string(),
|
|
83973
83973
|
containerPath: external_exports.string().optional(),
|
|
83974
83974
|
kind: external_exports.enum(["bind", "symlink-only"]).optional(),
|
|
83975
|
+
alternativeSources: external_exports.array(external_exports.string()).optional(),
|
|
83975
83976
|
meta: external_exports.record(external_exports.unknown()).optional()
|
|
83976
83977
|
}).refine(
|
|
83977
83978
|
(m) => m.kind === "symlink-only" ? true : typeof m.containerPath === "string" && m.containerPath.length > 0,
|
|
@@ -92625,19 +92626,155 @@ var stdoutSink = (line2) => process.stdout.write(`${line2}
|
|
|
92625
92626
|
`);
|
|
92626
92627
|
var stderrSink = (line2) => process.stderr.write(`${line2}
|
|
92627
92628
|
`);
|
|
92628
|
-
|
|
92629
|
-
const
|
|
92630
|
-
const
|
|
92631
|
-
|
|
92632
|
-
|
|
92633
|
-
|
|
92634
|
-
|
|
92635
|
-
|
|
92636
|
-
|
|
92637
|
-
|
|
92638
|
-
|
|
92639
|
-
|
|
92629
|
+
function mountLabel(m) {
|
|
92630
|
+
const fallbackName = m.containerPath ?? (m.kind === "symlink-only" ? `(symlink) ${m.hostPath}` : m.hostPath);
|
|
92631
|
+
const name = m.meta?.["name"] ?? fallbackName;
|
|
92632
|
+
const type = m.meta?.["type"];
|
|
92633
|
+
return type ? `${name} (${type})` : name;
|
|
92634
|
+
}
|
|
92635
|
+
function isUnmatched(m) {
|
|
92636
|
+
return m.meta?.["unmatched"] === true;
|
|
92637
|
+
}
|
|
92638
|
+
var CUSTOM_PATH_SENTINEL = "__custom__";
|
|
92639
|
+
async function pickSourceForMount(m, prompts) {
|
|
92640
|
+
const alts = m.alternativeSources ?? [];
|
|
92641
|
+
const choices = [
|
|
92642
|
+
...alts.map((s) => ({ name: s, value: s })),
|
|
92643
|
+
{ name: "Custom path...", value: CUSTOM_PATH_SENTINEL }
|
|
92644
|
+
];
|
|
92645
|
+
const chosen = await prompts.select({
|
|
92646
|
+
message: `Source for ${mountLabel(m)}:`,
|
|
92647
|
+
choices,
|
|
92648
|
+
default: alts.includes(m.hostPath) ? m.hostPath : void 0
|
|
92640
92649
|
});
|
|
92650
|
+
if (chosen !== CUSTOM_PATH_SENTINEL) return chosen;
|
|
92651
|
+
return (await prompts.input({
|
|
92652
|
+
message: "Host path (absolute):",
|
|
92653
|
+
validate: (v) => v.trim().length > 0 && path20.isAbsolute(v.trim()) ? true : "must be an absolute path"
|
|
92654
|
+
})).trim();
|
|
92655
|
+
}
|
|
92656
|
+
async function pickMounts(candidates) {
|
|
92657
|
+
const { checkbox, confirm, input, select } = await import("@inquirer/prompts");
|
|
92658
|
+
const prompts = { select, input };
|
|
92659
|
+
let selected = [];
|
|
92660
|
+
if (candidates.length > 0) {
|
|
92661
|
+
const choices = candidates.map((m) => {
|
|
92662
|
+
const unmatched = isUnmatched(m);
|
|
92663
|
+
const suffix = unmatched ? " (no source found \u2014 pick one)" : ` ${m.hostPath}`;
|
|
92664
|
+
return {
|
|
92665
|
+
name: `${mountLabel(m)}${suffix}`,
|
|
92666
|
+
value: m,
|
|
92667
|
+
checked: !unmatched
|
|
92668
|
+
};
|
|
92669
|
+
});
|
|
92670
|
+
selected = await checkbox({ message: "Select mounts to apply:", choices });
|
|
92671
|
+
}
|
|
92672
|
+
const unmatchedRows = selected.filter(isUnmatched);
|
|
92673
|
+
const matchedWithAlts = selected.filter(
|
|
92674
|
+
(m) => !isUnmatched(m) && (m.alternativeSources?.length ?? 0) > 0
|
|
92675
|
+
);
|
|
92676
|
+
for (const m of unmatchedRows) {
|
|
92677
|
+
const chosen = await pickSourceForMount(m, prompts);
|
|
92678
|
+
const next = { ...m, hostPath: chosen };
|
|
92679
|
+
if (next.meta && "unmatched" in next.meta) {
|
|
92680
|
+
const cleaned = { ...next.meta };
|
|
92681
|
+
delete cleaned["unmatched"];
|
|
92682
|
+
next.meta = cleaned;
|
|
92683
|
+
}
|
|
92684
|
+
const idx = selected.indexOf(m);
|
|
92685
|
+
if (idx >= 0) selected[idx] = next;
|
|
92686
|
+
}
|
|
92687
|
+
const overridable = matchedWithAlts;
|
|
92688
|
+
if (overridable.length > 0) {
|
|
92689
|
+
const wantOverride = await confirm({
|
|
92690
|
+
message: "Override the source dir for any of the selected mounts?",
|
|
92691
|
+
default: false
|
|
92692
|
+
});
|
|
92693
|
+
if (wantOverride) {
|
|
92694
|
+
const toEdit = await checkbox({
|
|
92695
|
+
message: "Pick the mounts whose source you want to change:",
|
|
92696
|
+
choices: overridable.map((m) => ({
|
|
92697
|
+
name: `${mountLabel(m)} (current: ${m.hostPath})`,
|
|
92698
|
+
value: m,
|
|
92699
|
+
checked: false
|
|
92700
|
+
}))
|
|
92701
|
+
});
|
|
92702
|
+
for (const m of toEdit) {
|
|
92703
|
+
const chosen = await pickSourceForMount(m, prompts);
|
|
92704
|
+
const idx = selected.indexOf(m);
|
|
92705
|
+
if (idx >= 0) selected[idx] = { ...m, hostPath: chosen };
|
|
92706
|
+
}
|
|
92707
|
+
}
|
|
92708
|
+
}
|
|
92709
|
+
const knownContainerPaths = Array.from(
|
|
92710
|
+
new Set(
|
|
92711
|
+
candidates.map((c3) => c3.containerPath).filter((p) => typeof p === "string" && p.length > 0)
|
|
92712
|
+
)
|
|
92713
|
+
);
|
|
92714
|
+
const knownHostPaths = Array.from(
|
|
92715
|
+
new Set(candidates.flatMap((c3) => c3.alternativeSources ?? []))
|
|
92716
|
+
);
|
|
92717
|
+
while (await confirm({
|
|
92718
|
+
message: candidates.length === 0 ? "Add a custom mount?" : "Add another (custom) mount?",
|
|
92719
|
+
default: false
|
|
92720
|
+
})) {
|
|
92721
|
+
let hostPath;
|
|
92722
|
+
if (knownHostPaths.length > 0) {
|
|
92723
|
+
const picked = await select({
|
|
92724
|
+
message: "Host path:",
|
|
92725
|
+
choices: [
|
|
92726
|
+
...knownHostPaths.map((s) => ({ name: s, value: s })),
|
|
92727
|
+
{ name: "Custom path...", value: CUSTOM_PATH_SENTINEL }
|
|
92728
|
+
]
|
|
92729
|
+
});
|
|
92730
|
+
if (picked === CUSTOM_PATH_SENTINEL) {
|
|
92731
|
+
hostPath = (await input({
|
|
92732
|
+
message: "Host path (absolute):",
|
|
92733
|
+
validate: (v) => v.trim().length > 0 && path20.isAbsolute(v.trim()) ? true : "must be an absolute path"
|
|
92734
|
+
})).trim();
|
|
92735
|
+
} else {
|
|
92736
|
+
hostPath = picked;
|
|
92737
|
+
}
|
|
92738
|
+
} else {
|
|
92739
|
+
hostPath = (await input({
|
|
92740
|
+
message: "Host path (absolute):",
|
|
92741
|
+
validate: (v) => v.trim().length > 0 && path20.isAbsolute(v.trim()) ? true : "must be an absolute path"
|
|
92742
|
+
})).trim();
|
|
92743
|
+
}
|
|
92744
|
+
let containerPath;
|
|
92745
|
+
if (knownContainerPaths.length > 0) {
|
|
92746
|
+
const picked = await select({
|
|
92747
|
+
message: "Container path:",
|
|
92748
|
+
choices: [
|
|
92749
|
+
...knownContainerPaths.map((p) => ({ name: p, value: p })),
|
|
92750
|
+
{ name: "Custom path...", value: CUSTOM_PATH_SENTINEL }
|
|
92751
|
+
]
|
|
92752
|
+
});
|
|
92753
|
+
if (picked === CUSTOM_PATH_SENTINEL) {
|
|
92754
|
+
containerPath = (await input({
|
|
92755
|
+
message: "Container path (absolute):",
|
|
92756
|
+
validate: (v) => v.trim().length > 0 && path20.isAbsolute(v.trim()) ? true : "must be an absolute path"
|
|
92757
|
+
})).trim();
|
|
92758
|
+
} else {
|
|
92759
|
+
containerPath = picked;
|
|
92760
|
+
}
|
|
92761
|
+
} else {
|
|
92762
|
+
containerPath = (await input({
|
|
92763
|
+
message: "Container path (absolute):",
|
|
92764
|
+
validate: (v) => v.trim().length > 0 && path20.isAbsolute(v.trim()) ? true : "must be an absolute path"
|
|
92765
|
+
})).trim();
|
|
92766
|
+
}
|
|
92767
|
+
const name = (await input({
|
|
92768
|
+
message: "Name (optional, used for status table + log lines):"
|
|
92769
|
+
})).trim();
|
|
92770
|
+
selected.push({
|
|
92771
|
+
hostPath,
|
|
92772
|
+
containerPath,
|
|
92773
|
+
kind: "bind",
|
|
92774
|
+
...name ? { meta: { name } } : {}
|
|
92775
|
+
});
|
|
92776
|
+
}
|
|
92777
|
+
return selected;
|
|
92641
92778
|
}
|
|
92642
92779
|
async function mountCommand(opts = {}) {
|
|
92643
92780
|
const ctx = await resolveContext(opts);
|
|
@@ -92652,20 +92789,25 @@ async function mountCommand(opts = {}) {
|
|
|
92652
92789
|
profile
|
|
92653
92790
|
} = ctx;
|
|
92654
92791
|
const merged = mergeMounts(configMounts, providerMounts);
|
|
92655
|
-
if (merged.length === 0) {
|
|
92656
|
-
process.stdout.write(
|
|
92657
|
-
"dev-cockpit mount: no mount candidates from config.mounts[] or profile.mountCandidatesProvider.\n"
|
|
92658
|
-
);
|
|
92659
|
-
return;
|
|
92660
|
-
}
|
|
92661
92792
|
let selected;
|
|
92662
92793
|
if (opts.quiet || configMounts.length > 0 && providerMounts.length === 0) {
|
|
92794
|
+
if (merged.length === 0) {
|
|
92795
|
+
process.stdout.write(
|
|
92796
|
+
"dev-cockpit mount: no mount candidates from config.mounts[] or profile.mountCandidatesProvider.\n"
|
|
92797
|
+
);
|
|
92798
|
+
return;
|
|
92799
|
+
}
|
|
92663
92800
|
selected = merged;
|
|
92664
92801
|
if (opts.quiet) {
|
|
92665
92802
|
process.stdout.write(`dev-cockpit mount: applying all ${selected.length} candidate(s).
|
|
92666
92803
|
`);
|
|
92667
92804
|
}
|
|
92668
92805
|
} else {
|
|
92806
|
+
if (merged.length === 0) {
|
|
92807
|
+
process.stdout.write(
|
|
92808
|
+
"dev-cockpit mount: no mount candidates discovered. You can add custom mounts interactively below, or Ctrl-C to bail.\n"
|
|
92809
|
+
);
|
|
92810
|
+
}
|
|
92669
92811
|
selected = await pickMounts(merged);
|
|
92670
92812
|
if (selected.length === 0) {
|
|
92671
92813
|
process.stdout.write("dev-cockpit mount: nothing selected; nothing to apply.\n");
|