dev-cockpit 0.2.5 → 0.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/commands/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAwBvD,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,WAAW,CAC1B,YAAY,EAAE,SAAS,KAAK,EAAE,EAC9B,cAAc,EAAE,SAAS,KAAK,EAAE,GAC9B,KAAK,EAAE,CAKT;AA0GD,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEhF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrF"}
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/commands/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAwBvD,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAWD,wBAAgB,WAAW,CAC1B,YAAY,EAAE,SAAS,KAAK,EAAE,EAC9B,cAAc,EAAE,SAAS,KAAK,EAAE,GAC9B,KAAK,EAAE,CAKT;AA2GD,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EhF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrF"}
@@ -200,17 +200,30 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
200
200
  enabled?: boolean | undefined;
201
201
  exclude?: string[] | undefined;
202
202
  }>>>;
203
- mounts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
203
+ mounts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
204
204
  hostPath: z.ZodString;
205
- containerPath: z.ZodString;
205
+ containerPath: z.ZodOptional<z.ZodString>;
206
+ kind: z.ZodOptional<z.ZodEnum<["bind", "symlink-only"]>>;
206
207
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
207
208
  }, "strip", z.ZodTypeAny, {
208
209
  hostPath: string;
209
- containerPath: string;
210
+ containerPath?: string | undefined;
211
+ kind?: "bind" | "symlink-only" | undefined;
210
212
  meta?: Record<string, unknown> | undefined;
211
213
  }, {
212
214
  hostPath: string;
213
- containerPath: string;
215
+ containerPath?: string | undefined;
216
+ kind?: "bind" | "symlink-only" | undefined;
217
+ meta?: Record<string, unknown> | undefined;
218
+ }>, {
219
+ hostPath: string;
220
+ containerPath?: string | undefined;
221
+ kind?: "bind" | "symlink-only" | undefined;
222
+ meta?: Record<string, unknown> | undefined;
223
+ }, {
224
+ hostPath: string;
225
+ containerPath?: string | undefined;
226
+ kind?: "bind" | "symlink-only" | undefined;
214
227
  meta?: Record<string, unknown> | undefined;
215
228
  }>, "many">>>;
216
229
  mount: z.ZodDefault<z.ZodOptional<z.ZodObject<{
@@ -336,7 +349,8 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
336
349
  };
337
350
  mounts: {
338
351
  hostPath: string;
339
- containerPath: string;
352
+ containerPath?: string | undefined;
353
+ kind?: "bind" | "symlink-only" | undefined;
340
354
  meta?: Record<string, unknown> | undefined;
341
355
  }[];
342
356
  mount: {
@@ -427,7 +441,8 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
427
441
  } | undefined;
428
442
  mounts?: {
429
443
  hostPath: string;
430
- containerPath: string;
444
+ containerPath?: string | undefined;
445
+ kind?: "bind" | "symlink-only" | undefined;
431
446
  meta?: Record<string, unknown> | undefined;
432
447
  }[] | undefined;
433
448
  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;AA+HhC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAdlC;;;;;;WAMG;;QAEH,iDAAiD;;;;;;;;;IAwBjD,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,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC3B,iBAAiB,CA0CnB"}
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;AAqIhC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAdlC;;;;;;WAMG;;QAEH,iDAAiD;;;;;;;;;IAwBjD,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,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC3B,iBAAiB,CA0CnB"}
@@ -59,7 +59,22 @@ export interface Repo {
59
59
  }
60
60
  export interface Mount {
61
61
  hostPath: string;
62
- containerPath: string;
62
+ /**
63
+ * Absolute path inside the container. Required for `kind: 'bind'` (the
64
+ * default); ignored — and may be omitted — when `kind: 'symlink-only'`.
65
+ */
66
+ containerPath?: string;
67
+ /**
68
+ * Discriminator for how this mount is materialised.
69
+ *
70
+ * - `'bind'` (default): emit a docker-compose bind into the overlay AND
71
+ * optionally manage an IDE-facing symlink via `Profile.mountSymlinks`.
72
+ * - `'symlink-only'`: no docker bind. The mount exists purely so that
73
+ * `Profile.mountSymlinks.linkPath` can place a host-side symlink (e.g.
74
+ * a wrapper-level `./project` symlink whose downstream effect is to
75
+ * redirect a pre-existing compose bind to the dev clone).
76
+ */
77
+ kind?: 'bind' | 'symlink-only';
63
78
  /**
64
79
  * Optional metadata attached by profiles (e.g. `{name, type, installPath}`)
65
80
  * for richer status output and lifecycle decisions. dev-cockpit treats this
@@ -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
@@ -4819,7 +4819,7 @@ var require_cross_spawn = __commonJS({
4819
4819
  enoent.hookChildProcess(spawned, parsed);
4820
4820
  return spawned;
4821
4821
  }
4822
- function spawnSync2(command, args, options2) {
4822
+ function spawnSync3(command, args, options2) {
4823
4823
  const parsed = parse(command, args, options2);
4824
4824
  const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
4825
4825
  result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
@@ -4827,7 +4827,7 @@ var require_cross_spawn = __commonJS({
4827
4827
  }
4828
4828
  module.exports = spawn2;
4829
4829
  module.exports.spawn = spawn2;
4830
- module.exports.sync = spawnSync2;
4830
+ module.exports.sync = spawnSync3;
4831
4831
  module.exports._parse = parse;
4832
4832
  module.exports._enoent = enoent;
4833
4833
  }
@@ -83970,9 +83970,13 @@ var NotificationsSchema = external_exports.object({
83970
83970
  });
83971
83971
  var MountSchema = external_exports.object({
83972
83972
  hostPath: external_exports.string(),
83973
- containerPath: external_exports.string(),
83973
+ containerPath: external_exports.string().optional(),
83974
+ kind: external_exports.enum(["bind", "symlink-only"]).optional(),
83974
83975
  meta: external_exports.record(external_exports.unknown()).optional()
83975
- });
83976
+ }).refine(
83977
+ (m) => m.kind === "symlink-only" ? true : typeof m.containerPath === "string" && m.containerPath.length > 0,
83978
+ { message: "Mount with kind='bind' (default) requires containerPath" }
83979
+ );
83976
83980
  var ActionSchema = external_exports.object({
83977
83981
  id: external_exports.string(),
83978
83982
  label: external_exports.string(),
@@ -92349,11 +92353,12 @@ function renderDockerOverlay(mounts, opts) {
92349
92353
  lines.push(opts.banner ?? "# Generated by `dev-cockpit mount`. Do not edit by hand \u2014 re-run the command.");
92350
92354
  lines.push("services:");
92351
92355
  lines.push(` ${opts.service}:`);
92352
- if (mounts.length === 0) {
92356
+ const binds = mounts.filter((m) => m.kind !== "symlink-only" && typeof m.containerPath === "string");
92357
+ if (binds.length === 0) {
92353
92358
  lines.push(" volumes: []");
92354
92359
  } else {
92355
92360
  lines.push(" volumes:");
92356
- for (const m of mounts) {
92361
+ for (const m of binds) {
92357
92362
  const source = m.hostPath.replace(/\\/g, "/");
92358
92363
  lines.push(" - type: bind");
92359
92364
  lines.push(` source: ${source}`);
@@ -92379,33 +92384,66 @@ function resolveOverlayPath(opts) {
92379
92384
  // src/mount/symlinks.ts
92380
92385
  import fs14 from "node:fs";
92381
92386
  import path19 from "node:path";
92387
+ import { spawnSync as spawnSync2 } from "node:child_process";
92382
92388
  function applyManagedSymlinks(workspaceRoot, mounts, strategy) {
92383
- const report = { created: [], skipped: [] };
92389
+ const report = { created: [], replaced: [], skipped: [] };
92384
92390
  for (const m of mounts) {
92385
92391
  const linkPath = strategy.linkPath(m, workspaceRoot);
92386
92392
  if (!linkPath) continue;
92387
- try {
92388
- const lstat3 = fs14.lstatSync(linkPath);
92389
- if (lstat3.isSymbolicLink()) {
92390
- const existing = fs14.readlinkSync(linkPath);
92391
- if (existing === m.hostPath) {
92392
- report.created.push(linkPath);
92393
- continue;
92394
- }
92393
+ const outcome = applyOneSymlink(linkPath, m.hostPath);
92394
+ if (outcome === "created") report.created.push(linkPath);
92395
+ else if (outcome === "replaced") report.replaced.push(linkPath);
92396
+ else report.skipped.push(linkPath);
92397
+ }
92398
+ return report;
92399
+ }
92400
+ function applyOneSymlink(linkPath, hostPath) {
92401
+ let preExistingRealDir = false;
92402
+ let existing = null;
92403
+ try {
92404
+ existing = fs14.lstatSync(linkPath);
92405
+ } catch {
92406
+ }
92407
+ if (existing) {
92408
+ if (existing.isSymbolicLink()) {
92409
+ try {
92410
+ if (fs14.readlinkSync(linkPath) === hostPath) return "created";
92395
92411
  fs14.unlinkSync(linkPath);
92396
- } else if (lstat3.isDirectory()) {
92397
- report.skipped.push(linkPath);
92398
- continue;
92399
- } else {
92412
+ } catch {
92413
+ return "skipped";
92414
+ }
92415
+ } else if (existing.isDirectory()) {
92416
+ preExistingRealDir = true;
92417
+ if (!tryRemoveDir(linkPath)) return "skipped";
92418
+ } else {
92419
+ try {
92400
92420
  fs14.unlinkSync(linkPath);
92421
+ } catch {
92422
+ return "skipped";
92401
92423
  }
92402
- } catch {
92403
92424
  }
92425
+ }
92426
+ try {
92404
92427
  fs14.mkdirSync(path19.dirname(linkPath), { recursive: true });
92405
- fs14.symlinkSync(m.hostPath, linkPath);
92406
- report.created.push(linkPath);
92428
+ fs14.symlinkSync(hostPath, linkPath);
92429
+ } catch {
92430
+ return "skipped";
92407
92431
  }
92408
- return report;
92432
+ return preExistingRealDir ? "replaced" : "created";
92433
+ }
92434
+ function tryRemoveDir(p) {
92435
+ try {
92436
+ fs14.rmSync(p, { recursive: true, force: true });
92437
+ } catch {
92438
+ if (process.platform === "darwin") {
92439
+ spawnSync2("chmod", ["-RN", p], { stdio: "ignore" });
92440
+ try {
92441
+ fs14.rmSync(p, { recursive: true, force: true });
92442
+ } catch {
92443
+ }
92444
+ }
92445
+ }
92446
+ return !fs14.existsSync(p);
92409
92447
  }
92410
92448
  function removeManagedSymlinks(workspaceRoot, mounts, strategy) {
92411
92449
  for (const m of mounts) {
@@ -92475,10 +92513,14 @@ async function readGitInfo(hostPath) {
92475
92513
  }
92476
92514
 
92477
92515
  // src/commands/mount.ts
92516
+ function mountKey(m) {
92517
+ if (m.kind === "symlink-only") return `symlink:${m.hostPath}`;
92518
+ return `bind:${m.containerPath ?? m.hostPath}`;
92519
+ }
92478
92520
  function mergeMounts(configMounts, providerMounts) {
92479
92521
  const seen = /* @__PURE__ */ new Map();
92480
- for (const m of providerMounts) seen.set(m.containerPath, m);
92481
- for (const m of configMounts) seen.set(m.containerPath, m);
92522
+ for (const m of providerMounts) seen.set(mountKey(m), m);
92523
+ for (const m of configMounts) seen.set(mountKey(m), m);
92482
92524
  return Array.from(seen.values());
92483
92525
  }
92484
92526
  async function resolveContext(opts) {
@@ -92553,7 +92595,8 @@ function applyExclude(mounts, exclude) {
92553
92595
  async function pickMounts(candidates) {
92554
92596
  const { checkbox } = await import("@inquirer/prompts");
92555
92597
  const choices = candidates.map((m) => {
92556
- const name = m.meta?.["name"] ?? m.containerPath;
92598
+ const fallbackName = m.containerPath ?? (m.kind === "symlink-only" ? `(symlink) ${m.hostPath}` : m.hostPath);
92599
+ const name = m.meta?.["name"] ?? fallbackName;
92557
92600
  const type = m.meta?.["type"];
92558
92601
  const label = type ? `${name} (${type}) ${m.hostPath}` : `${name} ${m.hostPath}`;
92559
92602
  return { name: label, value: m, checked: true };
@@ -92606,7 +92649,14 @@ async function mountCommand(opts = {}) {
92606
92649
  const report = applyManagedSymlinks(workspaceRoot, selected, profile.mountSymlinks);
92607
92650
  for (const p of report.created) process.stdout.write(`dev-cockpit mount: symlink \u2192 ${p}
92608
92651
  `);
92609
- for (const p of report.skipped) process.stdout.write(`dev-cockpit mount: skipped (real dir) \u2192 ${p}
92652
+ for (const p of report.replaced) {
92653
+ process.stdout.write(
92654
+ `dev-cockpit mount: replaced real dir with symlink \u2192 ${p}
92655
+ (previous contents discarded; run \`mount clear\` to restore via composer/npm install)
92656
+ `
92657
+ );
92658
+ }
92659
+ for (const p of report.skipped) process.stdout.write(`dev-cockpit mount: skipped (could not replace) \u2192 ${p}
92610
92660
  `);
92611
92661
  }
92612
92662
  if (profile?.onMountApply) {
@@ -92665,7 +92715,7 @@ dev-cockpit mount status \u2014 service: ${manifest.service}
92665
92715
  const headers = ["NAME", "BRANCH", "DIRTY", ...Array.from(extraKeys)];
92666
92716
  const widths = headers.map((h2) => h2.length);
92667
92717
  const dataRows = rows.map((r) => {
92668
- const name = r.mount.meta?.["name"] ?? r.mount.containerPath;
92718
+ const name = r.mount.meta?.["name"] ?? r.mount.containerPath ?? r.mount.hostPath;
92669
92719
  const branch = (r.info.branch ?? "?").slice(0, 24);
92670
92720
  const dirty = r.info.dirty === void 0 ? "?" : r.info.dirty ? "yes" : "no";
92671
92721
  const extras = Array.from(extraKeys).map((k) => r.info.extra?.[k] ?? "");