@codetreker/daynight 0.6.2 → 0.8.5

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.
Files changed (84) hide show
  1. package/dist/api/client.d.ts +1 -0
  2. package/dist/api/client.js +17 -0
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/cli/cancellation.d.ts +5 -0
  5. package/dist/cli/cancellation.js +24 -0
  6. package/dist/cli/cancellation.js.map +1 -0
  7. package/dist/cli/commands.js +4 -0
  8. package/dist/cli/commands.js.map +1 -1
  9. package/dist/cli/context.d.ts +2 -0
  10. package/dist/cli/context.js +2 -0
  11. package/dist/cli/context.js.map +1 -1
  12. package/dist/cli/prompts.d.ts +22 -0
  13. package/dist/cli/prompts.js +83 -0
  14. package/dist/cli/prompts.js.map +1 -0
  15. package/dist/commands/completion/command.js +14 -6
  16. package/dist/commands/completion/command.js.map +1 -1
  17. package/dist/commands/completion/definition.js +18 -4
  18. package/dist/commands/completion/definition.js.map +1 -1
  19. package/dist/commands/completion/setup.d.ts +21 -0
  20. package/dist/commands/completion/setup.js +210 -0
  21. package/dist/commands/completion/setup.js.map +1 -0
  22. package/dist/commands/project/command.js +23 -2
  23. package/dist/commands/project/command.js.map +1 -1
  24. package/dist/commands/project/definition.js +3 -3
  25. package/dist/commands/project/definition.js.map +1 -1
  26. package/dist/commands/review/adapters/copilot.js +3 -3
  27. package/dist/commands/review/adapters/copilot.js.map +1 -1
  28. package/dist/commands/review/command.js +3 -2
  29. package/dist/commands/review/command.js.map +1 -1
  30. package/dist/commands/review/config.js +10 -3
  31. package/dist/commands/review/config.js.map +1 -1
  32. package/dist/commands/review/repositories.d.ts +2 -0
  33. package/dist/commands/review/repositories.js +2 -2
  34. package/dist/commands/review/repositories.js.map +1 -1
  35. package/dist/commands/review/skill.js +5 -83
  36. package/dist/commands/review/skill.js.map +1 -1
  37. package/dist/commands/review/skills/daynight-review/SKILL.md +43 -14
  38. package/dist/commands/server/runtime.js +19 -3
  39. package/dist/commands/server/runtime.js.map +1 -1
  40. package/dist/commands/setup/command.d.ts +2 -0
  41. package/dist/commands/setup/command.js +21 -0
  42. package/dist/commands/setup/command.js.map +1 -0
  43. package/dist/commands/setup/definition.d.ts +2 -0
  44. package/dist/commands/setup/definition.js +12 -0
  45. package/dist/commands/setup/definition.js.map +1 -0
  46. package/dist/commands/skill/agents.d.ts +23 -0
  47. package/dist/commands/skill/agents.js +14 -0
  48. package/dist/commands/skill/agents.js.map +1 -0
  49. package/dist/commands/skill/command.d.ts +12 -0
  50. package/dist/commands/skill/command.js +76 -0
  51. package/dist/commands/skill/command.js.map +1 -0
  52. package/dist/commands/skill/definition.d.ts +2 -0
  53. package/dist/commands/skill/definition.js +12 -0
  54. package/dist/commands/skill/definition.js.map +1 -0
  55. package/dist/commands/skill/install.d.ts +12 -0
  56. package/dist/commands/skill/install.js +118 -0
  57. package/dist/commands/skill/install.js.map +1 -0
  58. package/dist/commands/skill/skills/daynight/SKILL.md +95 -0
  59. package/dist/commands/skill/skills/daynight/references/commands.md +155 -0
  60. package/dist/commands/skill/targets.d.ts +10 -0
  61. package/dist/commands/skill/targets.js +29 -0
  62. package/dist/commands/skill/targets.js.map +1 -0
  63. package/dist/commands/task/command.js +9 -0
  64. package/dist/commands/task/command.js.map +1 -1
  65. package/dist/commands/task/definition.js +6 -0
  66. package/dist/commands/task/definition.js.map +1 -1
  67. package/dist/config/errors.d.ts +9 -0
  68. package/dist/config/errors.js +24 -0
  69. package/dist/config/errors.js.map +1 -0
  70. package/dist/config/files.d.ts +1 -1
  71. package/dist/config/files.js +36 -2
  72. package/dist/config/files.js.map +1 -1
  73. package/dist/config/server.js +2 -1
  74. package/dist/config/server.js.map +1 -1
  75. package/dist/config/setup.d.ts +10 -0
  76. package/dist/config/setup.js +123 -0
  77. package/dist/config/setup.js.map +1 -0
  78. package/dist/platform/skill-bundle.d.ts +10 -0
  79. package/dist/platform/skill-bundle.js +82 -0
  80. package/dist/platform/skill-bundle.js.map +1 -0
  81. package/dist/repository/git.d.ts +1 -0
  82. package/dist/repository/git.js +6 -3
  83. package/dist/repository/git.js.map +1 -1
  84. package/package.json +6 -2
@@ -32,6 +32,7 @@ export type ApiClient = {
32
32
  createTask(projectId: string, input: CreateTaskInput): Promise<Task>;
33
33
  getTask(projectId: string, taskId: string): Promise<Task>;
34
34
  listTasks(projectId: string, filters?: TaskFilters): Promise<readonly Task[]>;
35
+ listReadyTasks(projectId: string, limit: number): Promise<readonly Task[]>;
35
36
  updateTask(projectId: string, taskId: string, input: UpdateTaskInput): Promise<Task>;
36
37
  getTaskGraph(projectId: string): Promise<TaskGraph>;
37
38
  };
@@ -266,6 +266,23 @@ export const createApiClient = (options) => {
266
266
  return task;
267
267
  }, query);
268
268
  },
269
+ listReadyTasks: (projectId, limit) => {
270
+ const project = resourceId(projectId);
271
+ if (!Number.isInteger(limit) || limit < 1 || limit > 100)
272
+ throw new Error("Ready task limit must be an integer from 1 to 100.");
273
+ const query = new URLSearchParams({ ready: "true", limit: String(limit) });
274
+ return request({ operation: "task.ready", projectId: project }, `/projects/${encodeURIComponent(project)}/tasks?${query}`, "GET", (value) => {
275
+ const page = parsePage(value, (item) => {
276
+ const task = parseTask(item, project);
277
+ if (!task.ready)
278
+ throw new ProtocolError("Task does not match the requested ready filter.");
279
+ return task;
280
+ });
281
+ if (page.items.length > limit)
282
+ throw new ProtocolError("Ready task page exceeds the requested limit.");
283
+ return page.items;
284
+ });
285
+ },
269
286
  updateTask: (projectId, taskId, input) => {
270
287
  const project = resourceId(projectId), task = resourceId(taskId);
271
288
  return request({ operation: "task.update", projectId: project, taskId: task }, `/projects/${encodeURIComponent(project)}/tasks/${encodeURIComponent(task)}`, "PATCH", (value) => parseTask(value, project, task), {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CliContext } from "./context.js";
2
+ export declare class CliCancelledError extends Error {
3
+ constructor(message?: string, options?: ErrorOptions);
4
+ }
5
+ export declare const withCliCancellation: <Result>(context: CliContext, action: (signal: AbortSignal) => Promise<Result>, supplied?: AbortSignal, cancellation?: () => Error) => Promise<Result>;
@@ -0,0 +1,24 @@
1
+ export class CliCancelledError extends Error {
2
+ constructor(message = "Operation cancelled.", options) {
3
+ super(message, options);
4
+ this.name = "CliCancelledError";
5
+ }
6
+ }
7
+ export const withCliCancellation = async (context, action, supplied, cancellation = () => new CliCancelledError()) => {
8
+ const controller = new AbortController();
9
+ const signals = process.platform === "win32" ? ["SIGINT", "SIGTERM", "SIGBREAK"] : ["SIGINT", "SIGTERM"];
10
+ const cancel = () => controller.abort(cancellation());
11
+ if (supplied === undefined)
12
+ for (const signal of signals)
13
+ process.on(signal, cancel);
14
+ try {
15
+ return await action(supplied ?? controller.signal);
16
+ }
17
+ finally {
18
+ if (supplied === undefined)
19
+ for (const signal of signals)
20
+ process.off(signal, cancel);
21
+ context.prompt?.close();
22
+ }
23
+ };
24
+ //# sourceMappingURL=cancellation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/cli/cancellation.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAO,GAAG,sBAAsB,EAAE,OAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAmB,EACnB,MAAgD,EAChD,QAAsB,EACtB,YAAY,GAAgB,GAAG,EAAE,CAAC,IAAI,iBAAiB,EAAE,EACxC,EAAE;IACnB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAqB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3H,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS;QAAE,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrF,IAAI,CAAC;QAAC,OAAO,MAAM,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAAC,CAAC;YACnD,CAAC;QACP,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtF,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC"}
@@ -3,7 +3,11 @@ import { reviewDefinition } from "../commands/review/definition.js";
3
3
  import { projectDefinition } from "../commands/project/definition.js";
4
4
  import { taskDefinition } from "../commands/task/definition.js";
5
5
  import { updateDefinition } from "../commands/update/definition.js";
6
+ import { skillDefinition } from "../commands/skill/definition.js";
7
+ import { setupDefinition } from "../commands/setup/definition.js";
6
8
  export const commands = [
9
+ { ...skillDefinition, load: async () => ({ run: (await import("../commands/skill/command.js")).runSkillCommand }) },
10
+ { ...setupDefinition, load: async () => ({ run: (await import("../commands/setup/command.js")).runSetupCommand }) },
7
11
  {
8
12
  ...reviewDefinition,
9
13
  load: async () => ({ run: (await import("../commands/review/command.js")).runReviewCommand }),
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAMpE,MAAM,CAAC,MAAM,QAAQ,GAAmC;IACtD;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,oBAAoB;QACvB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;KACtG;IACD;QACE,GAAG,iBAAiB;QACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KAChG;IACD;QACE,GAAG,cAAc;QACjB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;KAC1F;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;IAC/D,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1E,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE;KAC7F;IACD,OAAO,EAAE,kDAAkD;CAC5D,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMlE,MAAM,CAAC,MAAM,QAAQ,GAAmC;IACtD,EAAE,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE;IACnH,EAAE,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE;IACnH;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,gBAAgB;QACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;KAC9F;IACD;QACE,GAAG,oBAAoB;QACvB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;KACtG;IACD;QACE,GAAG,iBAAiB;QACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KAChG;IACD;QACE,GAAG,cAAc;QACjB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;KAC1F;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;IAC/D,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1E,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE;KAC7F;IACD,OAAO,EAAE,kDAAkD;CAC5D,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { CliPrompt } from "./prompts.js";
1
2
  export type CliContext = {
2
3
  version: string;
3
4
  packageDirectory: string;
@@ -5,6 +6,7 @@ export type CliContext = {
5
6
  workingDirectory: () => string;
6
7
  stdout: (text: string) => void;
7
8
  stderr: (text: string) => void;
9
+ prompt?: CliPrompt;
8
10
  };
9
11
  export type CliCommand = {
10
12
  run: (args: readonly string[], context: CliContext) => Promise<void>;
@@ -1,4 +1,5 @@
1
1
  import { homedir } from "node:os";
2
+ import { createTerminalPrompt } from "./prompts.js";
2
3
  export class UsageError extends Error {
3
4
  helpCommand;
4
5
  constructor(message, helpCommand = "daynight --help") {
@@ -15,5 +16,6 @@ export const createCliContext = (version, packageDirectory) => ({
15
16
  workingDirectory: process.cwd,
16
17
  stdout: (text) => { process.stdout.write(text); },
17
18
  stderr: (text) => { process.stderr.write(text); },
19
+ prompt: createTerminalPrompt(),
18
20
  });
19
21
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAelC,MAAM,OAAO,UAAW,SAAQ,KAAK;IACG,WAAW;IAAjD,YAAY,OAAe,EAAW,WAAW,GAAG,iBAAiB;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;2BADqB,WAAW;QAE/C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAW,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC;AAE5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,gBAAwB,EAAc,EAAE,CAAC,CAAC;IAC1F,OAAO;IACP,gBAAgB;IAChB,aAAa,EAAE,OAAO;IACtB,gBAAgB,EAAE,OAAO,CAAC,GAAG;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAiBpD,MAAM,OAAO,UAAW,SAAQ,KAAK;IACG,WAAW;IAAjD,YAAY,OAAe,EAAW,WAAW,GAAG,iBAAiB;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;2BADqB,WAAW;QAE/C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAW,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC;AAE5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,gBAAwB,EAAc,EAAE,CAAC,CAAC;IAC1F,OAAO;IACP,gBAAgB;IAChB,aAAa,EAAE,OAAO;IACtB,gBAAgB,EAAE,OAAO,CAAC,GAAG;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,oBAAoB,EAAE;CAC/B,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export type PromptChoice<Value> = {
2
+ name: string;
3
+ value: Value;
4
+ };
5
+ export type PromptSelection<Value> = {
6
+ message: string;
7
+ choices: readonly PromptChoice<Value>[];
8
+ default: Value;
9
+ };
10
+ export type PromptMultipleSelection<Value> = {
11
+ message: string;
12
+ choices: readonly PromptChoice<Value>[];
13
+ requiredMessage: string;
14
+ };
15
+ export type CliPrompt = {
16
+ readonly isInteractive: boolean;
17
+ ask(question: string, signal: AbortSignal): Promise<string>;
18
+ select<Value>(selection: PromptSelection<Value>, signal: AbortSignal): Promise<Value>;
19
+ selectMany<Value>(selection: PromptMultipleSelection<Value>, signal: AbortSignal): Promise<Value[]>;
20
+ close(): void;
21
+ };
22
+ export declare const createTerminalPrompt: () => CliPrompt;
@@ -0,0 +1,83 @@
1
+ import { createInterface } from "node:readline";
2
+ import { CliCancelledError } from "./cancellation.js";
3
+ export const createTerminalPrompt = () => {
4
+ let terminal;
5
+ let closed = false;
6
+ let selecting = false;
7
+ const closing = new AbortController();
8
+ const lines = [];
9
+ let waiting;
10
+ const cancel = () => {
11
+ closed = true;
12
+ closing.abort(new CliCancelledError());
13
+ waiting?.reject(new CliCancelledError("Setup cancelled."));
14
+ waiting = undefined;
15
+ };
16
+ const selection = async (signal, action) => {
17
+ signal.throwIfAborted();
18
+ if (closed)
19
+ throw new CliCancelledError();
20
+ selecting = true;
21
+ terminal?.pause();
22
+ try {
23
+ return await action({ input: process.stdin, output: process.stderr, signal: AbortSignal.any([signal, closing.signal]) });
24
+ }
25
+ catch (cause) {
26
+ if (cause instanceof Error && ["ExitPromptError", "AbortPromptError"].includes(cause.name))
27
+ throw new CliCancelledError(undefined, { cause });
28
+ throw cause;
29
+ }
30
+ finally {
31
+ selecting = false;
32
+ if (!closed)
33
+ terminal?.resume();
34
+ }
35
+ };
36
+ return {
37
+ isInteractive: process.stdin.isTTY === true && process.stderr.isTTY === true,
38
+ ask: async (question, signal) => {
39
+ signal.throwIfAborted();
40
+ if (closed)
41
+ throw new CliCancelledError("Setup cancelled.");
42
+ if (terminal === undefined) {
43
+ terminal = createInterface({ input: process.stdin, output: process.stderr, terminal: true });
44
+ terminal.on("line", (line) => {
45
+ if (selecting)
46
+ return;
47
+ if (waiting === undefined)
48
+ lines.push(line);
49
+ else {
50
+ const pending = waiting;
51
+ waiting = undefined;
52
+ pending.resolve(line);
53
+ }
54
+ });
55
+ terminal.on("close", cancel);
56
+ terminal.on("SIGINT", cancel);
57
+ }
58
+ process.stderr.write(question);
59
+ if (lines.length !== 0)
60
+ return lines.shift();
61
+ return new Promise((resolve, reject) => {
62
+ const abort = () => { waiting = undefined; reject(new CliCancelledError("Setup cancelled.", { cause: signal.reason })); };
63
+ waiting = {
64
+ resolve: (line) => { signal.removeEventListener("abort", abort); resolve(line); },
65
+ reject: (cause) => { signal.removeEventListener("abort", abort); reject(cause); },
66
+ };
67
+ signal.addEventListener("abort", abort, { once: true });
68
+ if (signal.aborted)
69
+ abort();
70
+ });
71
+ },
72
+ select: async (config, signal) => selection(signal, async (context) => {
73
+ const { select } = await import("@inquirer/prompts");
74
+ return select({ ...config, choices: [...config.choices] }, context);
75
+ }),
76
+ selectMany: async (config, signal) => selection(signal, async (context) => {
77
+ const { checkbox } = await import("@inquirer/prompts");
78
+ return checkbox({ message: config.message, choices: [...config.choices], validate: (values) => values.length > 0 || config.requiredMessage }, context);
79
+ }),
80
+ close: () => { cancel(); terminal?.close(); },
81
+ };
82
+ };
83
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"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"}
@@ -5,16 +5,24 @@ import { renderBashCompletion } from "./bash.js";
5
5
  import { renderZshCompletion } from "./zsh.js";
6
6
  export const runCompletionCommand = async (args, context) => {
7
7
  const commandPath = [commandTree.name, completionDefinition.name];
8
- if (args.length === 0) {
9
- context.stdout(renderCommandHelp(completionDefinition, commandPath));
10
- return;
11
- }
12
8
  const parsed = parseCommand(completionDefinition, args, commandPath);
13
9
  if (parsed.kind !== "run") {
14
- context.stdout(renderCommandHelp(completionDefinition, commandPath));
10
+ context.stdout(renderCommandHelp(parsed.command, parsed.path));
11
+ return;
12
+ }
13
+ if (parsed.command.name === "setup") {
14
+ const shell = parsed.options.get("--shell");
15
+ const rcFile = parsed.options.get("--rc-file");
16
+ const { setupCompletion } = await import("./setup.js");
17
+ const result = await setupCompletion({ shell, rcFile }, context);
18
+ for (const file of result.files)
19
+ context.stdout(`Completion configuration ${file.installed ? "installed" : "already present"}: ${file.path}\n`);
20
+ if (result.shell === "zsh")
21
+ context.stdout("Initialize compinit in the current shell if needed: autoload -Uz compinit; compinit\n");
22
+ context.stdout(`Activate completion in the current shell:\n source <(daynight completion ${result.shell})\n`);
15
23
  return;
16
24
  }
17
- const render = parsed.values[0] === "bash" ? renderBashCompletion : renderZshCompletion;
25
+ const render = parsed.command.name === "bash" ? renderBashCompletion : renderZshCompletion;
18
26
  context.stdout(render(commandTree));
19
27
  };
20
28
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/completion/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAuB,EAAE,OAAmB,EAAiB,EAAE;IACxG,MAAM,WAAW,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,oBAAoB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACxF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/completion/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAuB,EAAE,OAAmB,EAAiB,EAAE;IACxG,MAAM,WAAW,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,YAAY,CAAC,oBAAoB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAgC,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAuB,CAAC;QACrE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAChJ,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,uFAAuF,CAAC,CAAC;QACpI,OAAO,CAAC,MAAM,CAAC,6EAA6E,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;QAC/G,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC3F,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC"}
@@ -1,8 +1,22 @@
1
+ const help = { names: ["-h", "--help"], description: "Show this help", action: "help" };
1
2
  export const completionDefinition = {
2
3
  name: "completion",
3
- description: "Generate shell completion for Bash or zsh",
4
- arguments: [{ name: "shell", description: "Shell to generate completion for (bash or zsh)", choices: ["bash", "zsh"] }],
5
- options: [{ names: ["-h", "--help"], description: "Show this help", action: "help" }],
6
- details: "Bash >=4.2: add source <(daynight completion bash) to ~/.bashrc.\nzsh: add source <(daynight completion zsh) after compinit in ~/.zshrc.\nReload the script in existing shells after updating daynight.",
4
+ description: "Generate or install shell completion for Bash or zsh",
5
+ commands: [
6
+ { name: "bash", description: "Generate Bash >=4.2 completion", options: [help] },
7
+ { name: "zsh", description: "Generate native zsh completion", options: [help] },
8
+ {
9
+ name: "setup",
10
+ description: "Install completion in shell startup files",
11
+ options: [
12
+ { names: ["--shell"], description: "Select the shell instead of detecting the calling shell", value: { name: "shell", kind: "text", choices: ["bash", "zsh"] } },
13
+ { names: ["--rc-file"], description: "Manage only this startup file", value: { name: "path", kind: "text" } },
14
+ help,
15
+ ],
16
+ details: "Without --shell, detect the calling Bash or zsh process.\nBash setup covers ~/.bashrc and the first existing login profile.\nzsh setup uses $ZDOTDIR/.zshrc, or ~/.zshrc when ZDOTDIR is unset.\nSetup installs startup configuration; activate the current shell with source <(daynight completion bash|zsh).",
17
+ },
18
+ ],
19
+ options: [help],
20
+ details: "Bash >=4.2: source <(daynight completion bash).\nzsh: initialize compinit, then source <(daynight completion zsh).\nRun daynight completion setup to install startup configuration.\nReload the script in existing shells after updating daynight.",
7
21
  };
8
22
  //# sourceMappingURL=definition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../src/commands/completion/definition.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,2CAA2C;IACxD,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,gDAAgD,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IACvH,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrF,OAAO,EAAE,yMAAyM;CACnN,CAAC"}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../src/commands/completion/definition.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AAEjG,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE;QACR,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;QAChF,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/E;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,yDAAyD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;gBAChK,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC7G,IAAI;aACL;YACD,OAAO,EAAE,gTAAgT;SAC1T;KACF;IACD,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,OAAO,EAAE,oPAAoP;CAC9P,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { CliContext } from "../../cli/context.js";
2
+ export type CompletionShell = "bash" | "zsh";
3
+ type SetupOptions = {
4
+ shell: CompletionShell | undefined;
5
+ rcFile: string | undefined;
6
+ };
7
+ type SetupResult = {
8
+ shell: CompletionShell;
9
+ files: {
10
+ path: string;
11
+ installed: boolean;
12
+ }[];
13
+ };
14
+ export type SetupDependencies = {
15
+ environment: NodeJS.ProcessEnv;
16
+ callingShell: () => Promise<CompletionShell | undefined>;
17
+ };
18
+ export declare const detectCallingShell: () => Promise<CompletionShell | undefined>;
19
+ export declare const renderSetupBlock: (shell: CompletionShell) => string;
20
+ export declare const setupCompletion: (options: SetupOptions, context: Pick<CliContext, "homeDirectory" | "workingDirectory">, dependencies?: SetupDependencies) => Promise<SetupResult>;
21
+ export {};
@@ -0,0 +1,210 @@
1
+ import { execFile } from "node:child_process";
2
+ import { constants } from "node:fs";
3
+ import { access, lstat, mkdir, open, readFile, realpath, unlink } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { setTimeout } from "node:timers/promises";
7
+ import { UsageError } from "../../cli/context.js";
8
+ const execute = promisify(execFile);
9
+ const begin = "# >>> daynight completion >>>";
10
+ const end = "# <<< daynight completion <<<";
11
+ const isMissing = (error) => error.code === "ENOENT";
12
+ export const detectCallingShell = async () => {
13
+ if (process.platform === "win32")
14
+ return undefined;
15
+ const { stdout } = await execute("ps", ["-p", String(process.ppid), "-o", "comm="], { timeout: 3_000, encoding: "utf8" });
16
+ const name = path.basename(stdout.trim()).replace(/^-/, "");
17
+ return name === "bash" || name === "zsh" ? name : undefined;
18
+ };
19
+ const loadScript = (shell, indent) => [
20
+ `if __daynight_completion_script="$(daynight completion ${shell})"; then`,
21
+ ' if eval "$__daynight_completion_script"; then',
22
+ ' unset __daynight_completion_script',
23
+ ' else',
24
+ ' __daynight_completion_status=$?',
25
+ ' unset __daynight_completion_script',
26
+ ' return "$__daynight_completion_status"',
27
+ ' fi',
28
+ 'else',
29
+ ' __daynight_completion_status=$?',
30
+ ' unset __daynight_completion_script',
31
+ ' return "$__daynight_completion_status"',
32
+ 'fi',
33
+ ].map((line) => `${indent}${line}`);
34
+ export const renderSetupBlock = (shell) => {
35
+ const lines = shell === "bash" ? [
36
+ begin,
37
+ 'if [ -n "${BASH_VERSION-}" ]; then',
38
+ ' case $- in',
39
+ ' *i*)',
40
+ ' if ! declare -F _daynight_completion >/dev/null || [ "$(complete -p daynight 2>/dev/null)" != \'complete -F _daynight_completion daynight\' ]; then',
41
+ ...loadScript(shell, " "),
42
+ ' fi',
43
+ ' ;;',
44
+ ' esac',
45
+ 'fi',
46
+ end,
47
+ ] : [
48
+ begin,
49
+ 'if [[ -o interactive ]]; then',
50
+ ' if (( $+functions[compdef] )) || { autoload -Uz compinit && compinit; }; then',
51
+ ' if [[ "${_comps[daynight]-}" != _daynight ]] || (( ! $+functions[_daynight] )); then',
52
+ ...loadScript(shell, " "),
53
+ ' fi',
54
+ ' else',
55
+ ' return $?',
56
+ ' fi',
57
+ 'fi',
58
+ end,
59
+ ];
60
+ return `${lines.join("\n")}\n`;
61
+ };
62
+ const configured = (content, shell, file) => {
63
+ const lines = content.toString("utf8").split(/\r?\n/);
64
+ const starts = lines.flatMap((line, index) => line.includes(begin) ? [index] : []);
65
+ const ends = lines.flatMap((line, index) => line.includes(end) ? [index] : []);
66
+ if (starts.length !== 0 || ends.length !== 0) {
67
+ if (starts.length !== 1 || ends.length !== 1 || starts[0] >= ends[0]) {
68
+ throw new Error(`Malformed or duplicate daynight completion block in ${file}. Remove or repair its markers before running setup.`);
69
+ }
70
+ const block = lines.slice(starts[0], ends[0] + 1).join("\n");
71
+ if (block !== renderSetupBlock(shell).trimEnd())
72
+ throw new Error(`Unrecognized daynight completion block in ${file}. Remove or repair it before running setup.`);
73
+ return true;
74
+ }
75
+ return lines.some((line) => line.trim() === `source <(daynight completion ${shell})`);
76
+ };
77
+ const targetPath = async (file) => {
78
+ try {
79
+ const info = await lstat(file);
80
+ if (info.isSymbolicLink()) {
81
+ const resolved = await realpath(file);
82
+ if (!(await lstat(resolved)).isFile())
83
+ throw new Error(`Completion startup target is not a regular file: ${file}`);
84
+ return resolved;
85
+ }
86
+ if (!info.isFile())
87
+ throw new Error(`Completion startup target is not a regular file: ${file}`);
88
+ return file;
89
+ }
90
+ catch (error) {
91
+ if (isMissing(error)) {
92
+ // A dangling link is not a new startup file: creating through it hides a broken configuration.
93
+ try {
94
+ await lstat(file);
95
+ }
96
+ catch (missing) {
97
+ if (isMissing(missing))
98
+ return file;
99
+ throw missing;
100
+ }
101
+ }
102
+ throw error;
103
+ }
104
+ };
105
+ const acquireLock = async (file) => {
106
+ for (let attempt = 0;; attempt += 1) {
107
+ try {
108
+ return await open(file, "wx", 0o600);
109
+ }
110
+ catch (error) {
111
+ if (error.code !== "EEXIST" || attempt === 40) {
112
+ throw new Error(`Cannot lock completion startup file. Another setup may be running; inspect ${file}.`, { cause: error });
113
+ }
114
+ await setTimeout(50);
115
+ }
116
+ }
117
+ };
118
+ const install = async (file, shell) => {
119
+ const resolved = await targetPath(file);
120
+ try {
121
+ if (configured(await readFile(resolved), shell, file))
122
+ return false;
123
+ }
124
+ catch (error) {
125
+ if (!isMissing(error))
126
+ throw error;
127
+ }
128
+ await mkdir(path.dirname(resolved), { recursive: true });
129
+ const lockPath = `${resolved}.daynight-completion.lock`;
130
+ const lock = await acquireLock(lockPath);
131
+ try {
132
+ if (await targetPath(file) !== resolved)
133
+ throw new Error(`Completion startup target changed during setup: ${file}`);
134
+ // Append keeps existing bytes, mode and symlink identity, including concurrent unrelated appends.
135
+ const handle = await open(resolved, constants.O_RDWR | constants.O_CREAT | constants.O_APPEND | constants.O_NOFOLLOW, 0o666);
136
+ try {
137
+ const before = await handle.stat();
138
+ if (!before.isFile())
139
+ throw new Error(`Completion startup target is not a regular file: ${file}`);
140
+ const content = await handle.readFile();
141
+ if (configured(content, shell, file))
142
+ return false;
143
+ const current = await lstat(resolved);
144
+ if (await targetPath(file) !== resolved || current.dev !== before.dev || current.ino !== before.ino || current.size !== before.size || current.mtimeMs !== before.mtimeMs) {
145
+ throw new Error(`Completion startup file changed during setup; run setup again: ${file}`);
146
+ }
147
+ const separator = content.length === 0 || content.at(-1) === 10 ? "" : "\n";
148
+ await handle.writeFile(`${separator}${renderSetupBlock(shell)}`);
149
+ await handle.sync();
150
+ return true;
151
+ }
152
+ finally {
153
+ await handle.close();
154
+ }
155
+ }
156
+ catch (error) {
157
+ throw new Error(`Cannot configure completion in ${file}.`, { cause: error });
158
+ }
159
+ finally {
160
+ await lock.close();
161
+ await unlink(lockPath);
162
+ }
163
+ };
164
+ const bashTargets = async (home) => {
165
+ let unreadable;
166
+ for (const name of [".bash_profile", ".bash_login", ".profile"]) {
167
+ const file = path.join(home, name);
168
+ try {
169
+ await lstat(file);
170
+ }
171
+ catch (error) {
172
+ if (isMissing(error))
173
+ continue;
174
+ throw error;
175
+ }
176
+ try {
177
+ await access(file, constants.R_OK);
178
+ return [path.join(home, ".bashrc"), file];
179
+ }
180
+ catch (error) {
181
+ if (error.code !== "EACCES")
182
+ throw error;
183
+ unreadable = error;
184
+ }
185
+ }
186
+ if (unreadable !== undefined)
187
+ throw new Error("No existing Bash login profile is readable. Make a profile readable before running setup.", { cause: unreadable });
188
+ return [path.join(home, ".bashrc"), path.join(home, ".bash_profile")];
189
+ };
190
+ export const setupCompletion = async (options, context, dependencies = { environment: process.env, callingShell: detectCallingShell }) => {
191
+ let shell = options.shell;
192
+ if (shell === undefined) {
193
+ try {
194
+ shell = await dependencies.callingShell();
195
+ }
196
+ catch (error) {
197
+ throw new Error("Cannot detect the calling shell. Specify --shell bash or --shell zsh.", { cause: error });
198
+ }
199
+ }
200
+ if (shell === undefined)
201
+ throw new UsageError("Cannot identify the calling Bash or zsh shell. Specify --shell bash or --shell zsh.", "daynight completion setup --help");
202
+ const targets = options.rcFile !== undefined ? [path.resolve(context.workingDirectory(), options.rcFile)] : shell === "bash"
203
+ ? await bashTargets(context.homeDirectory())
204
+ : [path.resolve(context.workingDirectory(), `${dependencies.environment.ZDOTDIR === undefined ? context.homeDirectory() : dependencies.environment.ZDOTDIR}/.zshrc`)];
205
+ const files = [];
206
+ for (const file of targets)
207
+ files.push({ path: file, installed: await install(file, shell) });
208
+ return { shell, files };
209
+ };
210
+ //# sourceMappingURL=setup.js.map