@codetreker/daynight 0.2.4 → 0.6.1
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/api/client.d.ts +43 -0
- package/dist/api/client.js +285 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.js +5 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/json.d.ts +3 -0
- package/dist/api/json.js +25 -0
- package/dist/api/json.js.map +1 -0
- package/dist/api/operation.d.ts +23 -0
- package/dist/api/operation.js +78 -0
- package/dist/api/operation.js.map +1 -0
- package/dist/api/parse.d.ts +12 -0
- package/dist/api/parse.js +160 -0
- package/dist/api/parse.js.map +1 -0
- package/dist/api/types.d.ts +75 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/cli/application.d.ts +3 -0
- package/dist/cli/application.js +31 -0
- package/dist/cli/application.js.map +1 -0
- package/dist/cli/commands.d.ts +7 -0
- package/dist/cli/commands.js +38 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/context.d.ts +17 -0
- package/dist/cli/context.js +19 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/schema.d.ts +52 -0
- package/dist/cli/schema.js +108 -0
- package/dist/cli/schema.js.map +1 -0
- package/dist/commands/completion/bash.d.ts +2 -0
- package/dist/commands/completion/bash.js +272 -0
- package/dist/commands/completion/bash.js.map +1 -0
- package/dist/commands/completion/command.d.ts +2 -0
- package/dist/commands/completion/command.js +20 -0
- package/dist/commands/completion/command.js.map +1 -0
- package/dist/commands/completion/definition.d.ts +2 -0
- package/dist/commands/completion/definition.js +8 -0
- package/dist/commands/completion/definition.js.map +1 -0
- package/dist/commands/completion/zsh.d.ts +2 -0
- package/dist/commands/completion/zsh.js +136 -0
- package/dist/commands/completion/zsh.js.map +1 -0
- package/dist/commands/project/command.d.ts +6 -0
- package/dist/commands/project/command.js +39 -0
- package/dist/commands/project/command.js.map +1 -0
- package/dist/commands/project/definition.d.ts +2 -0
- package/dist/commands/project/definition.js +34 -0
- package/dist/commands/project/definition.js.map +1 -0
- package/dist/commands/project/rendering.d.ts +4 -0
- package/dist/commands/project/rendering.js +17 -0
- package/dist/commands/project/rendering.js.map +1 -0
- package/dist/{copilot.d.ts → commands/review/adapters/copilot.d.ts} +20 -12
- package/dist/commands/review/adapters/copilot.js +360 -0
- package/dist/commands/review/adapters/copilot.js.map +1 -0
- package/dist/{github.d.ts → commands/review/adapters/github.d.ts} +2 -19
- package/dist/{github.js → commands/review/adapters/github.js} +0 -43
- package/dist/commands/review/adapters/github.js.map +1 -0
- package/dist/{git.d.ts → commands/review/adapters/worktrees.d.ts} +3 -2
- package/dist/{git.js → commands/review/adapters/worktrees.js} +3 -3
- package/dist/commands/review/adapters/worktrees.js.map +1 -0
- package/dist/commands/review/command.d.ts +11 -0
- package/dist/commands/review/command.js +42 -0
- package/dist/commands/review/command.js.map +1 -0
- package/dist/{config.d.ts → commands/review/config.d.ts} +8 -8
- package/dist/{config.js → commands/review/config.js} +25 -44
- package/dist/commands/review/config.js.map +1 -0
- package/dist/{coordinator.d.ts → commands/review/coordinator.d.ts} +8 -7
- package/dist/{coordinator.js → commands/review/coordinator.js} +8 -3
- package/dist/commands/review/coordinator.js.map +1 -0
- package/dist/commands/review/definition.d.ts +2 -0
- package/dist/commands/review/definition.js +33 -0
- package/dist/commands/review/definition.js.map +1 -0
- package/dist/commands/review/instance-lock.js.map +1 -0
- package/dist/commands/review/listing.d.ts +5 -0
- package/dist/{review-list.js → commands/review/listing.js} +3 -9
- package/dist/commands/review/listing.js.map +1 -0
- package/dist/commands/review/model.d.ts +79 -0
- package/dist/commands/review/model.js +2 -0
- package/dist/commands/review/model.js.map +1 -0
- package/dist/commands/review/paths.d.ts +11 -0
- package/dist/commands/review/paths.js +16 -0
- package/dist/commands/review/paths.js.map +1 -0
- package/dist/commands/review/polling.d.ts +21 -0
- package/dist/commands/review/polling.js +44 -0
- package/dist/commands/review/polling.js.map +1 -0
- package/dist/{processes.d.ts → commands/review/processes.d.ts} +3 -3
- package/dist/commands/review/processes.js.map +1 -0
- package/dist/{repositories.d.ts → commands/review/repositories.d.ts} +2 -2
- package/dist/commands/review/repositories.js +70 -0
- package/dist/commands/review/repositories.js.map +1 -0
- package/dist/{runtime.d.ts → commands/review/runtime.d.ts} +9 -6
- package/dist/{runtime.js → commands/review/runtime.js} +11 -8
- package/dist/commands/review/runtime.js.map +1 -0
- package/dist/commands/review/skill.d.ts +11 -0
- package/dist/commands/review/skill.js +242 -0
- package/dist/commands/review/skill.js.map +1 -0
- package/dist/commands/review/skills/daynight-review/SKILL.md +63 -0
- package/dist/{store.d.ts → commands/review/store.d.ts} +5 -79
- package/dist/{store.js → commands/review/store.js} +8 -0
- package/dist/commands/review/store.js.map +1 -0
- package/dist/commands/server/runtime.d.ts +16 -0
- package/dist/commands/server/runtime.js +52 -0
- package/dist/commands/server/runtime.js.map +1 -0
- package/dist/commands/task/command.d.ts +8 -0
- package/dist/commands/task/command.js +106 -0
- package/dist/commands/task/command.js.map +1 -0
- package/dist/commands/task/definition.d.ts +2 -0
- package/dist/commands/task/definition.js +50 -0
- package/dist/commands/task/definition.js.map +1 -0
- package/dist/commands/task/rendering.d.ts +5 -0
- package/dist/commands/task/rendering.js +49 -0
- package/dist/commands/task/rendering.js.map +1 -0
- package/dist/commands/update/command.d.ts +6 -0
- package/dist/commands/update/command.js +23 -0
- package/dist/commands/update/command.js.map +1 -0
- package/dist/commands/update/definition.d.ts +2 -0
- package/dist/commands/update/definition.js +7 -0
- package/dist/commands/update/definition.js.map +1 -0
- package/dist/{update.d.ts → commands/update/updater.d.ts} +2 -2
- package/dist/{update.js → commands/update/updater.js} +3 -3
- package/dist/commands/update/updater.js.map +1 -0
- package/dist/config/document.d.ts +9 -0
- package/dist/config/document.js +45 -0
- package/dist/config/document.js.map +1 -0
- package/dist/config/files.d.ts +7 -0
- package/dist/config/files.js +69 -0
- package/dist/config/files.js.map +1 -0
- package/dist/config/paths.d.ts +6 -0
- package/dist/config/paths.js +9 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/server.d.ts +7 -0
- package/dist/config/server.js +34 -0
- package/dist/config/server.js.map +1 -0
- package/dist/main.js +6 -2
- package/dist/main.js.map +1 -1
- package/dist/platform/diagnostics.js.map +1 -0
- package/dist/platform/files.d.ts +1 -0
- package/dist/platform/files.js +48 -0
- package/dist/platform/files.js.map +1 -0
- package/dist/{paths.d.ts → platform/filesystem.d.ts} +0 -11
- package/dist/{paths.js → platform/filesystem.js} +1 -17
- package/dist/platform/filesystem.js.map +1 -0
- package/dist/platform/terminal.d.ts +1 -0
- package/dist/platform/terminal.js +10 -0
- package/dist/platform/terminal.js.map +1 -0
- package/dist/platform/text.d.ts +2 -0
- package/dist/platform/text.js +3 -0
- package/dist/platform/text.js.map +1 -0
- package/dist/repository/binding.d.ts +21 -0
- package/dist/repository/binding.js +242 -0
- package/dist/repository/binding.js.map +1 -0
- package/dist/repository/context.d.ts +10 -0
- package/dist/repository/context.js +32 -0
- package/dist/repository/context.js.map +1 -0
- package/dist/repository/git.d.ts +20 -0
- package/dist/repository/git.js +213 -0
- package/dist/repository/git.js.map +1 -0
- package/dist/repository/identity.d.ts +5 -0
- package/dist/repository/identity.js +154 -0
- package/dist/repository/identity.js.map +1 -0
- package/dist/repository/index.d.ts +4 -0
- package/dist/repository/index.js +3 -0
- package/dist/repository/index.js.map +1 -0
- package/package.json +6 -5
- package/dist/cli.d.ts +0 -19
- package/dist/cli.js +0 -202
- package/dist/cli.js.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/coordinator.js.map +0 -1
- package/dist/copilot.js +0 -263
- package/dist/copilot.js.map +0 -1
- package/dist/diagnostics.js.map +0 -1
- package/dist/git.js.map +0 -1
- package/dist/github.js.map +0 -1
- package/dist/instance-lock.js.map +0 -1
- package/dist/paths.js.map +0 -1
- package/dist/processes.js.map +0 -1
- package/dist/repositories.js +0 -159
- package/dist/repositories.js.map +0 -1
- package/dist/review-list.d.ts +0 -5
- package/dist/review-list.js.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/update.js.map +0 -1
- /package/dist/{instance-lock.d.ts → commands/review/instance-lock.d.ts} +0 -0
- /package/dist/{instance-lock.js → commands/review/instance-lock.js} +0 -0
- /package/dist/{processes.js → commands/review/processes.js} +0 -0
- /package/dist/{diagnostics.d.ts → platform/diagnostics.d.ts} +0 -0
- /package/dist/{diagnostics.js → platform/diagnostics.js} +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { isNonemptyText, isText } from "../platform/text.js";
|
|
2
|
+
export class ProtocolError extends Error {
|
|
3
|
+
constructor(message = "The server returned an invalid response.") { super(message); this.name = "ProtocolError"; }
|
|
4
|
+
}
|
|
5
|
+
const malformed = () => { throw new ProtocolError(); };
|
|
6
|
+
const record = (value) => {
|
|
7
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
8
|
+
return malformed();
|
|
9
|
+
return value;
|
|
10
|
+
};
|
|
11
|
+
const text = (value, nonempty = false) => {
|
|
12
|
+
if (!isText(value) || (nonempty && !isNonemptyText(value)))
|
|
13
|
+
return malformed();
|
|
14
|
+
return value;
|
|
15
|
+
};
|
|
16
|
+
const bool = (value) => typeof value === "boolean" ? value : malformed();
|
|
17
|
+
const count = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : malformed();
|
|
18
|
+
export const canonicalId = (value) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value) ? value.toLowerCase() : null;
|
|
19
|
+
const id = (value) => {
|
|
20
|
+
const parsed = text(value);
|
|
21
|
+
if (canonicalId(parsed) !== parsed)
|
|
22
|
+
return malformed();
|
|
23
|
+
return parsed;
|
|
24
|
+
};
|
|
25
|
+
const timestamp = (value) => {
|
|
26
|
+
const parsed = text(value);
|
|
27
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/.test(parsed))
|
|
28
|
+
return malformed();
|
|
29
|
+
const milliseconds = Date.parse(parsed);
|
|
30
|
+
if (!Number.isFinite(milliseconds) || new Date(milliseconds).toISOString().slice(0, 19) !== parsed.slice(0, 19))
|
|
31
|
+
return malformed();
|
|
32
|
+
return parsed;
|
|
33
|
+
};
|
|
34
|
+
const array = (value, parse) => Array.isArray(value) ? value.map(parse) : malformed();
|
|
35
|
+
const ids = (value) => {
|
|
36
|
+
const parsed = array(value, id);
|
|
37
|
+
if (new Set(parsed).size !== parsed.length)
|
|
38
|
+
return malformed();
|
|
39
|
+
return parsed;
|
|
40
|
+
};
|
|
41
|
+
const status = (value) => value === "todo" || value === "in_progress" || value === "done" ? value : malformed();
|
|
42
|
+
export const parseProject = (value, expectedId) => {
|
|
43
|
+
const data = record(value);
|
|
44
|
+
const parsed = { id: id(data.id), name: text(data.name, true), repoUrl: text(data.repoUrl, true), createdAt: timestamp(data.createdAt), updatedAt: timestamp(data.updatedAt) };
|
|
45
|
+
if (expectedId !== undefined && parsed.id !== expectedId)
|
|
46
|
+
return malformed();
|
|
47
|
+
return parsed;
|
|
48
|
+
};
|
|
49
|
+
const dependencyState = (data) => {
|
|
50
|
+
const parsed = { id: id(data.id), status: status(data.status), dependsOn: ids(data.dependsOn), blockedBy: ids(data.blockedBy), ready: bool(data.ready), createdAt: timestamp(data.createdAt), updatedAt: timestamp(data.updatedAt) };
|
|
51
|
+
if (parsed.dependsOn.includes(parsed.id) || parsed.blockedBy.some((item) => !parsed.dependsOn.includes(item)) || parsed.ready !== (parsed.status === "todo" && parsed.blockedBy.length === 0))
|
|
52
|
+
return malformed();
|
|
53
|
+
return parsed;
|
|
54
|
+
};
|
|
55
|
+
export const parseTask = (value, projectId, taskId) => {
|
|
56
|
+
const data = record(value);
|
|
57
|
+
const version = data.version;
|
|
58
|
+
if (typeof version !== "bigint" || version < 1n || version > 9223372036854775807n)
|
|
59
|
+
return malformed();
|
|
60
|
+
const parsed = { ...dependencyState(data), projectId: id(data.projectId), title: text(data.title, true), description: text(data.description), version };
|
|
61
|
+
if (parsed.projectId !== projectId || (taskId !== undefined && parsed.id !== taskId))
|
|
62
|
+
return malformed();
|
|
63
|
+
return parsed;
|
|
64
|
+
};
|
|
65
|
+
export const parsePage = (value, parse) => {
|
|
66
|
+
const data = record(value);
|
|
67
|
+
const items = array(data.items, parse);
|
|
68
|
+
if (items.length > 100 || new Set(items.map((item) => item.id)).size !== items.length)
|
|
69
|
+
return malformed();
|
|
70
|
+
let nextCursor = null;
|
|
71
|
+
if (data.nextCursor !== null) {
|
|
72
|
+
nextCursor = text(data.nextCursor, true);
|
|
73
|
+
if (items.length === 0)
|
|
74
|
+
return malformed();
|
|
75
|
+
}
|
|
76
|
+
return { items, nextCursor };
|
|
77
|
+
};
|
|
78
|
+
const graphTask = (value) => {
|
|
79
|
+
const data = record(value);
|
|
80
|
+
const parsed = { ...dependencyState(data), titlePreview: text(data.titlePreview), titleTruncated: bool(data.titleTruncated) };
|
|
81
|
+
const characters = Array.from(parsed.titlePreview).length;
|
|
82
|
+
if (characters === 0 || characters > 160 || (parsed.titleTruncated && characters !== 160))
|
|
83
|
+
return malformed();
|
|
84
|
+
return parsed;
|
|
85
|
+
};
|
|
86
|
+
const summary = (value) => {
|
|
87
|
+
const data = record(value);
|
|
88
|
+
return { total: count(data.total), todo: count(data.todo), inProgress: count(data.inProgress), done: count(data.done), ready: count(data.ready), blocked: count(data.blocked) };
|
|
89
|
+
};
|
|
90
|
+
export const parseTaskGraph = (value, projectId) => {
|
|
91
|
+
const data = record(value);
|
|
92
|
+
const parsed = { project: parseProject(data.project, projectId), summary: summary(data.summary), tasks: array(data.tasks, graphTask) };
|
|
93
|
+
const byId = new Map(parsed.tasks.map((task) => [task.id, task]));
|
|
94
|
+
if (parsed.tasks.length > 1000 || byId.size !== parsed.tasks.length || parsed.tasks.reduce((sum, task) => sum + task.dependsOn.length, 0) > 5000)
|
|
95
|
+
return malformed();
|
|
96
|
+
const expected = { total: parsed.tasks.length, todo: 0, inProgress: 0, done: 0, ready: 0, blocked: 0 };
|
|
97
|
+
for (const task of parsed.tasks) {
|
|
98
|
+
if (task.status === "todo") {
|
|
99
|
+
expected.todo++;
|
|
100
|
+
if (task.ready)
|
|
101
|
+
expected.ready++;
|
|
102
|
+
else
|
|
103
|
+
expected.blocked++;
|
|
104
|
+
}
|
|
105
|
+
else if (task.status === "in_progress")
|
|
106
|
+
expected.inProgress++;
|
|
107
|
+
else
|
|
108
|
+
expected.done++;
|
|
109
|
+
const blocked = task.dependsOn.filter((dependency) => {
|
|
110
|
+
const target = byId.get(dependency);
|
|
111
|
+
if (target === undefined)
|
|
112
|
+
return malformed();
|
|
113
|
+
return target.status !== "done";
|
|
114
|
+
});
|
|
115
|
+
if (blocked.length !== task.blockedBy.length || blocked.some((dependency) => !task.blockedBy.includes(dependency)))
|
|
116
|
+
return malformed();
|
|
117
|
+
}
|
|
118
|
+
for (const key of Object.keys(expected))
|
|
119
|
+
if (expected[key] !== parsed.summary[key])
|
|
120
|
+
return malformed();
|
|
121
|
+
const visited = new Set();
|
|
122
|
+
const active = new Set();
|
|
123
|
+
const visit = (taskId) => {
|
|
124
|
+
if (active.has(taskId))
|
|
125
|
+
return malformed();
|
|
126
|
+
if (visited.has(taskId))
|
|
127
|
+
return;
|
|
128
|
+
active.add(taskId);
|
|
129
|
+
for (const dependency of byId.get(taskId).dependsOn)
|
|
130
|
+
visit(dependency);
|
|
131
|
+
active.delete(taskId);
|
|
132
|
+
visited.add(taskId);
|
|
133
|
+
};
|
|
134
|
+
for (const task of parsed.tasks)
|
|
135
|
+
visit(task.id);
|
|
136
|
+
return parsed;
|
|
137
|
+
};
|
|
138
|
+
export const parseServerError = (value) => {
|
|
139
|
+
const data = record(record(value).error);
|
|
140
|
+
const code = text(data.code, true);
|
|
141
|
+
const requestId = text(data.requestId, true);
|
|
142
|
+
const message = text(data.message, true);
|
|
143
|
+
if (!/^[a-z][a-z0-9_]{0,63}$/.test(code) || !/^[a-z0-9][a-z0-9._-]{0,63}$/i.test(requestId))
|
|
144
|
+
return malformed();
|
|
145
|
+
let details;
|
|
146
|
+
if (data.details !== undefined) {
|
|
147
|
+
const raw = record(data.details);
|
|
148
|
+
details = {
|
|
149
|
+
...(raw.taskIds === undefined ? {} : { taskIds: ids(raw.taskIds) }),
|
|
150
|
+
...(raw.nodeCount === undefined ? {} : { nodeCount: count(raw.nodeCount) }),
|
|
151
|
+
...(raw.edgeCount === undefined ? {} : { edgeCount: count(raw.edgeCount) }),
|
|
152
|
+
...(raw.maxNodes === undefined ? {} : { maxNodes: count(raw.maxNodes) }),
|
|
153
|
+
...(raw.maxEdges === undefined ? {} : { maxEdges: count(raw.maxEdges) }),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
if (code === "graph_limit_exceeded" && (details?.nodeCount === undefined || details.edgeCount === undefined || details.maxNodes !== 1000 || details.maxEdges !== 5000 || (details.nodeCount <= details.maxNodes && details.edgeCount <= details.maxEdges)))
|
|
157
|
+
return malformed();
|
|
158
|
+
return { code, message, requestId, ...(details === undefined ? {} : { details }) };
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/api/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export type TaskStatus = "todo" | "in_progress" | "done";
|
|
2
|
+
export type Project = {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly repoUrl: string;
|
|
6
|
+
readonly createdAt: string;
|
|
7
|
+
readonly updatedAt: string;
|
|
8
|
+
};
|
|
9
|
+
export type Task = {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly projectId: string;
|
|
12
|
+
readonly title: string;
|
|
13
|
+
readonly description: string;
|
|
14
|
+
readonly status: TaskStatus;
|
|
15
|
+
readonly version: bigint;
|
|
16
|
+
readonly createdAt: string;
|
|
17
|
+
readonly updatedAt: string;
|
|
18
|
+
readonly dependsOn: readonly string[];
|
|
19
|
+
readonly blockedBy: readonly string[];
|
|
20
|
+
readonly ready: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type GraphTask = Omit<Task, "projectId" | "title" | "description" | "version"> & {
|
|
23
|
+
readonly titlePreview: string;
|
|
24
|
+
readonly titleTruncated: boolean;
|
|
25
|
+
};
|
|
26
|
+
export type TaskGraphSummary = {
|
|
27
|
+
readonly total: number;
|
|
28
|
+
readonly todo: number;
|
|
29
|
+
readonly inProgress: number;
|
|
30
|
+
readonly done: number;
|
|
31
|
+
readonly ready: number;
|
|
32
|
+
readonly blocked: number;
|
|
33
|
+
};
|
|
34
|
+
export type TaskGraph = {
|
|
35
|
+
readonly project: Project;
|
|
36
|
+
readonly summary: TaskGraphSummary;
|
|
37
|
+
readonly tasks: readonly GraphTask[];
|
|
38
|
+
};
|
|
39
|
+
export type Page<T> = {
|
|
40
|
+
readonly items: readonly T[];
|
|
41
|
+
readonly nextCursor: string | null;
|
|
42
|
+
};
|
|
43
|
+
export type CreateProjectInput = {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly repoUrl: string;
|
|
46
|
+
};
|
|
47
|
+
export type CreateTaskInput = {
|
|
48
|
+
readonly title: string;
|
|
49
|
+
readonly description?: string;
|
|
50
|
+
readonly dependsOn?: readonly string[];
|
|
51
|
+
};
|
|
52
|
+
export type UpdateTaskInput = {
|
|
53
|
+
readonly version: bigint;
|
|
54
|
+
readonly title?: string;
|
|
55
|
+
readonly description?: string;
|
|
56
|
+
readonly status?: TaskStatus;
|
|
57
|
+
readonly dependsOn?: readonly string[];
|
|
58
|
+
};
|
|
59
|
+
export type TaskFilters = {
|
|
60
|
+
readonly status?: TaskStatus;
|
|
61
|
+
readonly ready?: boolean;
|
|
62
|
+
};
|
|
63
|
+
export type ErrorDetails = {
|
|
64
|
+
readonly taskIds?: readonly string[];
|
|
65
|
+
readonly nodeCount?: number;
|
|
66
|
+
readonly edgeCount?: number;
|
|
67
|
+
readonly maxNodes?: number;
|
|
68
|
+
readonly maxEdges?: number;
|
|
69
|
+
};
|
|
70
|
+
export type ServerError = {
|
|
71
|
+
readonly code: string;
|
|
72
|
+
readonly message: string;
|
|
73
|
+
readonly requestId: string;
|
|
74
|
+
readonly details?: ErrorDetails;
|
|
75
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { formatError } from "../platform/diagnostics.js";
|
|
2
|
+
import { commands, commandTree } from "./commands.js";
|
|
3
|
+
import { UsageError } from "./context.js";
|
|
4
|
+
import { renderCommandHelp, selectCommand } from "./schema.js";
|
|
5
|
+
export const runCli = async (args, context, registry = commands) => {
|
|
6
|
+
try {
|
|
7
|
+
const definition = registry === commands ? commandTree : { ...commandTree, commands: registry };
|
|
8
|
+
const selection = selectCommand(definition, args);
|
|
9
|
+
if (selection.kind === "help") {
|
|
10
|
+
context.stdout(renderCommandHelp(definition));
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
if (selection.kind === "version") {
|
|
14
|
+
context.stdout(`${context.version}\n`);
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
const registration = registry.find(({ name }) => name === selection.command.name);
|
|
18
|
+
const command = await registration.load();
|
|
19
|
+
await command.run(selection.remaining, context);
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof UsageError) {
|
|
24
|
+
context.stderr(`${formatError(error)} Run ${error.helpCommand} for usage.\n`);
|
|
25
|
+
return 2;
|
|
26
|
+
}
|
|
27
|
+
context.stderr(`${formatError(error)}\n`);
|
|
28
|
+
return 1;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/cli/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EACzB,IAAuB,EACvB,OAAmB,EACnB,QAAQ,GAAmC,QAAQ,EAClC,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAChG,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;QACnF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,WAAW,eAAe,CAAC,CAAC;YAC9E,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CliCommand } from "./context.js";
|
|
2
|
+
import type { CommandDefinition } from "./schema.js";
|
|
3
|
+
export type CommandRegistration = CommandDefinition & {
|
|
4
|
+
load: () => Promise<CliCommand>;
|
|
5
|
+
};
|
|
6
|
+
export declare const commands: readonly CommandRegistration[];
|
|
7
|
+
export declare const commandTree: CommandDefinition;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { completionDefinition } from "../commands/completion/definition.js";
|
|
2
|
+
import { reviewDefinition } from "../commands/review/definition.js";
|
|
3
|
+
import { projectDefinition } from "../commands/project/definition.js";
|
|
4
|
+
import { taskDefinition } from "../commands/task/definition.js";
|
|
5
|
+
import { updateDefinition } from "../commands/update/definition.js";
|
|
6
|
+
export const commands = [
|
|
7
|
+
{
|
|
8
|
+
...reviewDefinition,
|
|
9
|
+
load: async () => ({ run: (await import("../commands/review/command.js")).runReviewCommand }),
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
...updateDefinition,
|
|
13
|
+
load: async () => ({ run: (await import("../commands/update/command.js")).runUpdateCommand }),
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
...completionDefinition,
|
|
17
|
+
load: async () => ({ run: (await import("../commands/completion/command.js")).runCompletionCommand }),
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
...projectDefinition,
|
|
21
|
+
load: async () => ({ run: (await import("../commands/project/command.js")).runProjectCommand }),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
...taskDefinition,
|
|
25
|
+
load: async () => ({ run: (await import("../commands/task/command.js")).runTaskCommand }),
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export const commandTree = {
|
|
29
|
+
name: "daynight",
|
|
30
|
+
description: "A client command toolkit for development workflows",
|
|
31
|
+
commands: commands.map(({ load, ...definition }) => definition),
|
|
32
|
+
options: [
|
|
33
|
+
{ names: ["-h", "--help"], description: "Show this help", action: "help" },
|
|
34
|
+
{ names: ["-v", "--version"], description: "Show the installed version", action: "version" },
|
|
35
|
+
],
|
|
36
|
+
details: "Run daynight <command> --help for command usage.",
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type CliContext = {
|
|
2
|
+
version: string;
|
|
3
|
+
packageDirectory: string;
|
|
4
|
+
homeDirectory: () => string;
|
|
5
|
+
workingDirectory: () => string;
|
|
6
|
+
stdout: (text: string) => void;
|
|
7
|
+
stderr: (text: string) => void;
|
|
8
|
+
};
|
|
9
|
+
export type CliCommand = {
|
|
10
|
+
run: (args: readonly string[], context: CliContext) => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export declare class UsageError extends Error {
|
|
13
|
+
readonly helpCommand: string;
|
|
14
|
+
constructor(message: string, helpCommand?: string);
|
|
15
|
+
}
|
|
16
|
+
export declare const isHelp: (argument: string | undefined) => boolean;
|
|
17
|
+
export declare const createCliContext: (version: string, packageDirectory: string) => CliContext;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
export class UsageError extends Error {
|
|
3
|
+
helpCommand;
|
|
4
|
+
constructor(message, helpCommand = "daynight --help") {
|
|
5
|
+
super(message);
|
|
6
|
+
this.helpCommand = helpCommand;
|
|
7
|
+
this.name = "UsageError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export const isHelp = (argument) => argument === "--help" || argument === "-h";
|
|
11
|
+
export const createCliContext = (version, packageDirectory) => ({
|
|
12
|
+
version,
|
|
13
|
+
packageDirectory,
|
|
14
|
+
homeDirectory: homedir,
|
|
15
|
+
workingDirectory: process.cwd,
|
|
16
|
+
stdout: (text) => { process.stdout.write(text); },
|
|
17
|
+
stderr: (text) => { process.stderr.write(text); },
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export type CommandOption = {
|
|
2
|
+
names: readonly string[];
|
|
3
|
+
description: string;
|
|
4
|
+
value?: {
|
|
5
|
+
name: string;
|
|
6
|
+
kind: "directory" | "text";
|
|
7
|
+
allowEmpty?: boolean;
|
|
8
|
+
choices?: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
required?: boolean;
|
|
11
|
+
repeatable?: boolean;
|
|
12
|
+
action?: "help" | "version";
|
|
13
|
+
};
|
|
14
|
+
export type CommandArgument = {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
choices?: readonly string[];
|
|
18
|
+
};
|
|
19
|
+
export type CommandDefinition = {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
aliases?: readonly string[];
|
|
23
|
+
commands?: readonly CommandDefinition[];
|
|
24
|
+
options?: readonly CommandOption[];
|
|
25
|
+
arguments?: readonly CommandArgument[];
|
|
26
|
+
details?: string;
|
|
27
|
+
};
|
|
28
|
+
type CommandLocation = {
|
|
29
|
+
command: CommandDefinition;
|
|
30
|
+
path: readonly string[];
|
|
31
|
+
};
|
|
32
|
+
export type CommandSelection = CommandLocation & ({
|
|
33
|
+
kind: "help";
|
|
34
|
+
} | {
|
|
35
|
+
kind: "version";
|
|
36
|
+
} | {
|
|
37
|
+
kind: "selected";
|
|
38
|
+
remaining: readonly string[];
|
|
39
|
+
});
|
|
40
|
+
export type ParsedCommand = CommandLocation & ({
|
|
41
|
+
kind: "help";
|
|
42
|
+
} | {
|
|
43
|
+
kind: "version";
|
|
44
|
+
} | {
|
|
45
|
+
kind: "run";
|
|
46
|
+
values: readonly string[];
|
|
47
|
+
options: ReadonlyMap<string, string | readonly string[] | true>;
|
|
48
|
+
});
|
|
49
|
+
export declare const selectCommand: (definition: CommandDefinition, args: readonly string[], path?: readonly string[], helpCommand?: string) => CommandSelection;
|
|
50
|
+
export declare const parseCommand: (definition: CommandDefinition, args: readonly string[], path?: readonly string[], helpCommand?: string) => ParsedCommand;
|
|
51
|
+
export declare const renderCommandHelp: (definition: CommandDefinition, path?: readonly string[]) => string;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { UsageError } from "./context.js";
|
|
2
|
+
const matchesCommand = (command, name) => command.name === name || command.aliases?.includes(name) === true;
|
|
3
|
+
const informationAction = (command, args) => args.length === 1 ? command.options?.find((option) => option.names.includes(args[0]))?.action : undefined;
|
|
4
|
+
export const selectCommand = (definition, args, path = [definition.name], helpCommand = `${path.join(" ")} --help`) => {
|
|
5
|
+
const action = informationAction(definition, args);
|
|
6
|
+
if (action !== undefined)
|
|
7
|
+
return { kind: action, command: definition, path };
|
|
8
|
+
if (args.length === 0)
|
|
9
|
+
return { kind: "help", command: definition, path };
|
|
10
|
+
const command = definition.commands?.find((candidate) => matchesCommand(candidate, args[0]));
|
|
11
|
+
if (command === undefined)
|
|
12
|
+
throw new UsageError(`Unknown command ${JSON.stringify(args[0])}.`, helpCommand);
|
|
13
|
+
return { kind: "selected", command, path: [...path, command.name], remaining: args.slice(1) };
|
|
14
|
+
};
|
|
15
|
+
export const parseCommand = (definition, args, path = [definition.name], helpCommand = `${path.join(" ")} --help`) => {
|
|
16
|
+
if (definition.commands !== undefined) {
|
|
17
|
+
const selection = selectCommand(definition, args, path, helpCommand);
|
|
18
|
+
if (selection.kind !== "selected")
|
|
19
|
+
return selection;
|
|
20
|
+
return parseCommand(selection.command, selection.remaining, selection.path, helpCommand);
|
|
21
|
+
}
|
|
22
|
+
const action = informationAction(definition, args);
|
|
23
|
+
if (action !== undefined)
|
|
24
|
+
return { kind: action, command: definition, path };
|
|
25
|
+
const values = [];
|
|
26
|
+
const options = new Map();
|
|
27
|
+
for (let index = 0; index < args.length; index++) {
|
|
28
|
+
const argument = args[index];
|
|
29
|
+
if (argument.startsWith("-")) {
|
|
30
|
+
const separator = argument.indexOf("=");
|
|
31
|
+
const inline = separator !== -1;
|
|
32
|
+
const optionName = inline ? argument.slice(0, separator) : argument;
|
|
33
|
+
const option = definition.options?.find((candidate) => candidate.names.includes(optionName));
|
|
34
|
+
if (option === undefined || option.action !== undefined || inline && option.value?.kind !== "text") {
|
|
35
|
+
throw new UsageError(`Unknown ${definition.name} option ${JSON.stringify(argument)}.`, helpCommand);
|
|
36
|
+
}
|
|
37
|
+
const name = option.names[0];
|
|
38
|
+
if (options.has(name) && option.repeatable !== true)
|
|
39
|
+
throw new UsageError(`Specify ${name} only once.`, helpCommand);
|
|
40
|
+
if (option.value === undefined) {
|
|
41
|
+
options.set(name, true);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const value = inline ? argument.slice(separator + 1) : args[++index];
|
|
45
|
+
if (value === undefined || value === "" && option.value.allowEmpty !== true || !inline && value.startsWith("-")) {
|
|
46
|
+
throw new UsageError(`${name} requires a ${option.value.name} value.`, helpCommand);
|
|
47
|
+
}
|
|
48
|
+
if (option.value.choices !== undefined && !option.value.choices.includes(value)) {
|
|
49
|
+
throw new UsageError(`Unknown ${option.value.name} ${JSON.stringify(value)}. Expected ${option.value.choices.join(" or ")}.`, helpCommand);
|
|
50
|
+
}
|
|
51
|
+
if (option.repeatable === true) {
|
|
52
|
+
const previous = options.get(name);
|
|
53
|
+
if (previous === undefined)
|
|
54
|
+
options.set(name, [value]);
|
|
55
|
+
else
|
|
56
|
+
previous.push(value);
|
|
57
|
+
}
|
|
58
|
+
else
|
|
59
|
+
options.set(name, value);
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const positional = definition.arguments?.[values.length];
|
|
64
|
+
if (positional === undefined)
|
|
65
|
+
throw new UsageError(`Unexpected ${definition.name} argument ${JSON.stringify(argument)}.`, helpCommand);
|
|
66
|
+
if (argument.trim() === "")
|
|
67
|
+
throw new UsageError(`${definition.name} requires a ${positional.name} value.`, helpCommand);
|
|
68
|
+
if (positional.choices !== undefined && !positional.choices.includes(argument)) {
|
|
69
|
+
throw new UsageError(`Unknown ${positional.name} ${JSON.stringify(argument)}. Expected ${positional.choices.join(" or ")}.`, helpCommand);
|
|
70
|
+
}
|
|
71
|
+
values.push(argument);
|
|
72
|
+
}
|
|
73
|
+
const missing = definition.arguments?.[values.length];
|
|
74
|
+
if (missing !== undefined)
|
|
75
|
+
throw new UsageError(`${definition.name} requires a ${missing.name} value.`, helpCommand);
|
|
76
|
+
for (const option of definition.options ?? []) {
|
|
77
|
+
const name = option.names[0];
|
|
78
|
+
if (option.required === true && !options.has(name))
|
|
79
|
+
throw new UsageError(`${definition.name} requires ${name}.`, helpCommand);
|
|
80
|
+
}
|
|
81
|
+
return { kind: "run", command: definition, path, values, options };
|
|
82
|
+
};
|
|
83
|
+
const optionLabel = (option) => `${option.names.join(", ")}${option.value === undefined ? "" : ` <${option.value.name}>`}`;
|
|
84
|
+
const optionUsage = (option) => `${option.names[0]}${option.value === undefined ? "" : ` <${option.value.name}>`}${option.repeatable === true ? "..." : ""}`;
|
|
85
|
+
const renderRows = (rows) => {
|
|
86
|
+
const width = Math.max(...rows.map(([label]) => label.length)) + 2;
|
|
87
|
+
return rows.map(([label, description]) => ` ${label.padEnd(width)}${description}`).join("\n");
|
|
88
|
+
};
|
|
89
|
+
export const renderCommandHelp = (definition, path = [definition.name]) => {
|
|
90
|
+
const suffix = definition.commands !== undefined ? " <command>" : [
|
|
91
|
+
...(definition.arguments ?? []).map(({ name }) => ` <${name}>`),
|
|
92
|
+
...(definition.options ?? []).filter(({ action }) => action === undefined).map((option) => option.required === true ? ` ${optionUsage(option)}` : ` [${optionUsage(option)}]`),
|
|
93
|
+
].join("");
|
|
94
|
+
const paths = [path, ...(definition.aliases ?? []).map((alias) => [...path.slice(0, -1), alias])];
|
|
95
|
+
const sections = [paths.map((parts, index) => `${index === 0 ? "Usage: " : " "}${parts.join(" ")}${suffix}`).join("\n")];
|
|
96
|
+
if (definition.commands === undefined)
|
|
97
|
+
sections.push(definition.description);
|
|
98
|
+
if (definition.commands !== undefined)
|
|
99
|
+
sections.push(`Commands:\n${renderRows(definition.commands.map((command) => [[command.name, ...(command.aliases ?? [])].join(", "), command.description]))}`);
|
|
100
|
+
if (definition.arguments !== undefined)
|
|
101
|
+
sections.push(`Arguments:\n${renderRows(definition.arguments.map(({ name, description }) => [`<${name}>`, description]))}`);
|
|
102
|
+
if (definition.options !== undefined)
|
|
103
|
+
sections.push(`Options:\n${renderRows(definition.options.map((option) => [optionLabel(option), option.description]))}`);
|
|
104
|
+
if (definition.details !== undefined)
|
|
105
|
+
sections.push(definition.details);
|
|
106
|
+
return `${sections.join("\n\n")}\n`;
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/cli/schema.ts"],"names":[],"mappings":"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"}
|