@navbook/cli 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/complete.js +124 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/{cli/commands → commands}/compose.js +5 -3
- package/dist/commands/compose.js.map +1 -0
- package/dist/commands/doctor.js +56 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/entity.js +252 -0
- package/dist/commands/entity.js.map +1 -0
- package/dist/commands/feature.js +202 -0
- package/dist/commands/feature.js.map +1 -0
- package/dist/commands/init.js +23 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/{cli/commands → commands}/install.js +1 -2
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/issue.js +89 -0
- package/dist/commands/issue.js.map +1 -0
- package/dist/commands/policy.js +49 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/pr.js +311 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/context.js +21 -0
- package/dist/context.js.map +1 -0
- package/dist/{cli/editor.js → editor.js} +1 -1
- package/dist/editor.js.map +1 -0
- package/dist/errors.js.map +1 -0
- package/dist/install/completions.js.map +1 -0
- package/dist/{cli/install → install}/hook.js +1 -1
- package/dist/install/hook.js.map +1 -0
- package/dist/{cli/main.js → main.js} +10 -0
- package/dist/main.js.map +1 -0
- package/dist/{cli/program.js → program.js} +162 -23
- package/dist/program.js.map +1 -0
- package/dist/{cli/prompt.js → prompt.js} +11 -0
- package/dist/prompt.js.map +1 -0
- package/dist/render/colors.js.map +1 -0
- package/dist/render/detail.js +197 -0
- package/dist/render/detail.js.map +1 -0
- package/dist/render/table.js.map +1 -0
- package/dist/sort.js +77 -0
- package/dist/sort.js.map +1 -0
- package/package.json +15 -21
- package/README.md +0 -165
- package/dist/cli/commands/complete.d.ts +0 -9
- package/dist/cli/commands/complete.js +0 -72
- package/dist/cli/commands/complete.js.map +0 -1
- package/dist/cli/commands/compose.d.ts +0 -27
- package/dist/cli/commands/compose.js.map +0 -1
- package/dist/cli/commands/doctor.d.ts +0 -14
- package/dist/cli/commands/doctor.js +0 -127
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/entity.d.ts +0 -55
- package/dist/cli/commands/entity.js +0 -209
- package/dist/cli/commands/entity.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -11
- package/dist/cli/commands/init.js +0 -39
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/install.d.ts +0 -17
- package/dist/cli/commands/install.js.map +0 -1
- package/dist/cli/commands/issue.d.ts +0 -12
- package/dist/cli/commands/issue.js +0 -42
- package/dist/cli/commands/issue.js.map +0 -1
- package/dist/cli/commands/pr.d.ts +0 -64
- package/dist/cli/commands/pr.js +0 -466
- package/dist/cli/commands/pr.js.map +0 -1
- package/dist/cli/commit-flow.d.ts +0 -27
- package/dist/cli/commit-flow.js +0 -47
- package/dist/cli/commit-flow.js.map +0 -1
- package/dist/cli/context.d.ts +0 -39
- package/dist/cli/context.js +0 -93
- package/dist/cli/context.js.map +0 -1
- package/dist/cli/editor.d.ts +0 -23
- package/dist/cli/editor.js.map +0 -1
- package/dist/cli/errors.d.ts +0 -17
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/history-checks.d.ts +0 -21
- package/dist/cli/history-checks.js +0 -134
- package/dist/cli/history-checks.js.map +0 -1
- package/dist/cli/install/completions.d.ts +0 -19
- package/dist/cli/install/completions.js.map +0 -1
- package/dist/cli/install/hook.d.ts +0 -20
- package/dist/cli/install/hook.js.map +0 -1
- package/dist/cli/main.d.ts +0 -14
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/program.d.ts +0 -23
- package/dist/cli/program.js.map +0 -1
- package/dist/cli/prompt.d.ts +0 -22
- package/dist/cli/prompt.js.map +0 -1
- package/dist/cli/render/colors.d.ts +0 -13
- package/dist/cli/render/colors.js.map +0 -1
- package/dist/cli/render/detail.d.ts +0 -10
- package/dist/cli/render/detail.js +0 -105
- package/dist/cli/render/detail.js.map +0 -1
- package/dist/cli/render/table.d.ts +0 -19
- package/dist/cli/render/table.js.map +0 -1
- package/dist/cli/resolve.d.ts +0 -17
- package/dist/cli/resolve.js +0 -68
- package/dist/cli/resolve.js.map +0 -1
- package/dist/cli/workspace.d.ts +0 -52
- package/dist/cli/workspace.js +0 -178
- package/dist/cli/workspace.js.map +0 -1
- package/dist/core/comments.d.ts +0 -31
- package/dist/core/comments.js +0 -80
- package/dist/core/comments.js.map +0 -1
- package/dist/core/files.d.ts +0 -88
- package/dist/core/files.js +0 -441
- package/dist/core/files.js.map +0 -1
- package/dist/core/frontmatter.d.ts +0 -63
- package/dist/core/frontmatter.js +0 -149
- package/dist/core/frontmatter.js.map +0 -1
- package/dist/core/id.d.ts +0 -46
- package/dist/core/id.js +0 -66
- package/dist/core/id.js.map +0 -1
- package/dist/core/index.d.ts +0 -19
- package/dist/core/index.js +0 -20
- package/dist/core/index.js.map +0 -1
- package/dist/core/json.d.ts +0 -18
- package/dist/core/json.js +0 -51
- package/dist/core/json.js.map +0 -1
- package/dist/core/ops.d.ts +0 -92
- package/dist/core/ops.js +0 -173
- package/dist/core/ops.js.map +0 -1
- package/dist/core/person.d.ts +0 -20
- package/dist/core/person.js +0 -50
- package/dist/core/person.js.map +0 -1
- package/dist/core/query.d.ts +0 -30
- package/dist/core/query.js +0 -106
- package/dist/core/query.js.map +0 -1
- package/dist/core/refs.d.ts +0 -12
- package/dist/core/refs.js +0 -36
- package/dist/core/refs.js.map +0 -1
- package/dist/core/slug.d.ts +0 -22
- package/dist/core/slug.js +0 -40
- package/dist/core/slug.js.map +0 -1
- package/dist/core/time.d.ts +0 -14
- package/dist/core/time.js +0 -37
- package/dist/core/time.js.map +0 -1
- package/dist/core/tree.d.ts +0 -94
- package/dist/core/tree.js +0 -237
- package/dist/core/tree.js.map +0 -1
- package/dist/core/validate.d.ts +0 -55
- package/dist/core/validate.js +0 -312
- package/dist/core/validate.js.map +0 -1
- package/dist/git/config.d.ts +0 -12
- package/dist/git/config.js +0 -27
- package/dist/git/config.js.map +0 -1
- package/dist/git/exec.d.ts +0 -35
- package/dist/git/exec.js +0 -58
- package/dist/git/exec.js.map +0 -1
- package/dist/git/history.d.ts +0 -35
- package/dist/git/history.js +0 -82
- package/dist/git/history.js.map +0 -1
- package/dist/git/index-ops.d.ts +0 -20
- package/dist/git/index-ops.js +0 -45
- package/dist/git/index-ops.js.map +0 -1
- package/dist/git/merge.d.ts +0 -27
- package/dist/git/merge.js +0 -57
- package/dist/git/merge.js.map +0 -1
- package/dist/git/refscan.d.ts +0 -32
- package/dist/git/refscan.js +0 -82
- package/dist/git/refscan.js.map +0 -1
- package/dist/git/repo.d.ts +0 -45
- package/dist/git/repo.js +0 -95
- package/dist/git/repo.js.map +0 -1
- /package/dist/{cli/errors.js → errors.js} +0 -0
- /package/dist/{cli/install → install}/completions.js +0 -0
- /package/dist/{cli/render → render}/colors.js +0 -0
- /package/dist/{cli/render → render}/table.js +0 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nav pr <verb>` — spec 04 §4.3.
|
|
3
|
+
*
|
|
4
|
+
* The eight shared verbs come from `entity.ts`; this module adds the four that
|
|
5
|
+
* only pull requests have (`update`, `request`, `review`, `merge`) and the
|
|
6
|
+
* parts of the shared verbs that must reach across branches, because a PR's
|
|
7
|
+
* files live on the branch it proposes to merge (spec 03 §3.5).
|
|
8
|
+
*/
|
|
9
|
+
import { applyComment, bindReviewRevision, commitReport, continuePrMerge, countOpenPrsOnOtherRefs, currentAuthor, entityJson, executePrMerge, findPrToWrite, listEntities, listPrsAcrossRefs, materializePrIfAbsent, newCommentFile, newPrFile, openPr, parseListQuery, parsePerson, planPrMerge, preparePrOpen, readReviewers, readReviewPolicy, requestReview, reviewSummary, sameEmail, stringField, toNdjson, updatePr, validateComment, validatePr, } from "@navbook/core";
|
|
10
|
+
import { fail } from "../errors.js";
|
|
11
|
+
import { askYesNo, isInteractive } from "../prompt.js";
|
|
12
|
+
import { composeFile } from "./compose.js";
|
|
13
|
+
import { cmdClose, reportList, } from "./entity.js";
|
|
14
|
+
import { describeShortfall, mergeAction, warnPolicyProblems } from "./policy.js";
|
|
15
|
+
export function cmdPrOpen(ctx, opts) {
|
|
16
|
+
const draft = preparePrOpen(ctx, { target: opts.target, title: opts.title });
|
|
17
|
+
const composed = composeFile(ctx, {
|
|
18
|
+
message: opts.message,
|
|
19
|
+
bufferName: "NAVBOOK_PR.md",
|
|
20
|
+
noun: "pull request",
|
|
21
|
+
render: (body) => newPrFile({
|
|
22
|
+
title: draft.title,
|
|
23
|
+
author: currentAuthor(ctx),
|
|
24
|
+
created: draft.created,
|
|
25
|
+
target: draft.target,
|
|
26
|
+
source: draft.source,
|
|
27
|
+
revisions: [draft.revision],
|
|
28
|
+
body,
|
|
29
|
+
draft: opts.draft,
|
|
30
|
+
reviewers: opts.reviewer,
|
|
31
|
+
labels: opts.label,
|
|
32
|
+
assignee: opts.assignee,
|
|
33
|
+
milestone: opts.milestone,
|
|
34
|
+
features: opts.feature,
|
|
35
|
+
}),
|
|
36
|
+
validate: validatePr,
|
|
37
|
+
});
|
|
38
|
+
const { id, dirPath, run } = openPr(ctx, { content: composed.content, fallbackTitle: draft.title }, { commit: opts.commit });
|
|
39
|
+
ctx.stdout.write(`Created ${ctx.navDir}/${dirPath}/ (#${id})\n`);
|
|
40
|
+
ctx.stdout.write(`Targets ${draft.target}, from ${draft.source} at ${draft.head.slice(0, 12)}\n`);
|
|
41
|
+
if (opts.commit)
|
|
42
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
43
|
+
}
|
|
44
|
+
/* ------------------------------------------------------------------- update */
|
|
45
|
+
export function cmdPrUpdate(ctx, prefix, opts) {
|
|
46
|
+
const { entity, head, revisionCount, run } = updatePr(ctx, prefix, { commit: opts.commit });
|
|
47
|
+
ctx.stdout.write(`Recorded revision ${revisionCount} of #${entity.id} head ${head.slice(0, 12)}\n`);
|
|
48
|
+
if (opts.commit)
|
|
49
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
50
|
+
}
|
|
51
|
+
export function cmdPrRequest(ctx, prefix, people, opts) {
|
|
52
|
+
const { entity, changed, unchanged, run } = requestReview(ctx, prefix, people, {
|
|
53
|
+
commit: opts.commit,
|
|
54
|
+
remove: opts.remove,
|
|
55
|
+
});
|
|
56
|
+
const verb = opts.remove ? "No longer reviewing" : "Asked to review";
|
|
57
|
+
ctx.stdout.write(`${verb} #${entity.id}: ${changed.join(", ")}\n`);
|
|
58
|
+
// Naming who was already there matters most when only some of a list moved:
|
|
59
|
+
// the count alone would leave the caller counting names themselves.
|
|
60
|
+
for (const person of unchanged) {
|
|
61
|
+
ctx.stdout.write(`${ctx.colors.dim(opts.remove ? "not listed:" : "already listed:")} ${person}\n`);
|
|
62
|
+
}
|
|
63
|
+
if (opts.commit)
|
|
64
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
65
|
+
}
|
|
66
|
+
export function cmdPrReview(ctx, prefix, opts) {
|
|
67
|
+
const entity = findPrToWrite(ctx, prefix);
|
|
68
|
+
const chosen = [opts.approve, opts.requestChanges, opts.comment].filter(Boolean).length;
|
|
69
|
+
if (chosen > 1) {
|
|
70
|
+
fail("choose one of --approve, --request-changes or --comment, not several");
|
|
71
|
+
}
|
|
72
|
+
const revision = bindReviewRevision(entity, opts.revision);
|
|
73
|
+
if (opts.line && !opts.file)
|
|
74
|
+
fail("--line needs --file");
|
|
75
|
+
// This verb files reviews, so with no flag the verdict is the one that judges
|
|
76
|
+
// nothing (spec 04 §4.3). The exception is an inline anchor: a note about one
|
|
77
|
+
// line is discussion, and recording it as a review would say its author had
|
|
78
|
+
// read the whole revision. `nav pr comment` remains the unbound comment.
|
|
79
|
+
const verdict = opts.approve
|
|
80
|
+
? "approve"
|
|
81
|
+
: opts.requestChanges
|
|
82
|
+
? "request-changes"
|
|
83
|
+
: opts.file === undefined || opts.comment
|
|
84
|
+
? "comment"
|
|
85
|
+
: undefined;
|
|
86
|
+
const isReview = verdict !== undefined || opts.file !== undefined;
|
|
87
|
+
const base = {
|
|
88
|
+
author: currentAuthor(ctx),
|
|
89
|
+
body: "",
|
|
90
|
+
...(verdict ? { verdict } : {}),
|
|
91
|
+
...(isReview ? { revision } : {}),
|
|
92
|
+
...(opts.file ? { file: opts.file } : {}),
|
|
93
|
+
...(opts.line ? { line: opts.line } : {}),
|
|
94
|
+
};
|
|
95
|
+
const composed = composeFile(ctx, {
|
|
96
|
+
message: opts.message,
|
|
97
|
+
bufferName: "NAVBOOK_REVIEW.md",
|
|
98
|
+
noun: verdict ? "review" : "comment",
|
|
99
|
+
render: (body) => newCommentFile({ ...base, body }),
|
|
100
|
+
validate: (parsed) => validateComment(parsed, { onPr: true }),
|
|
101
|
+
});
|
|
102
|
+
const { id, path, run } = applyComment(ctx, entity, { content: composed.content, review: isReview }, { commit: opts.commit });
|
|
103
|
+
const label = verdict ? `Reviewed (${verdict})` : "Commented on";
|
|
104
|
+
ctx.stdout.write(`${label} #${entity.id} ${ctx.navDir}/${path} (#${id})\n`);
|
|
105
|
+
if (isReview)
|
|
106
|
+
ctx.stdout.write(`Bound to revision ${revision.slice(0, 12)}\n`);
|
|
107
|
+
if (opts.commit)
|
|
108
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
109
|
+
warnIfOwnVerdict(ctx, entity, verdict);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Warn an author that their own verdict will not be counted.
|
|
113
|
+
*
|
|
114
|
+
* After the file is written, never instead of it: the review is a record of
|
|
115
|
+
* what somebody said and it is never refused (spec 02 §2.7). What the warning
|
|
116
|
+
* prevents is approving your own work and believing you moved the decision —
|
|
117
|
+
* which is exactly what a repository allowing self-review did decide to let
|
|
118
|
+
* you do, so it says nothing there.
|
|
119
|
+
*/
|
|
120
|
+
function warnIfOwnVerdict(ctx, entity, verdict) {
|
|
121
|
+
if (verdict === undefined || verdict === "comment")
|
|
122
|
+
return;
|
|
123
|
+
const { policy } = readReviewPolicy(ctx);
|
|
124
|
+
if (policy.selfReview)
|
|
125
|
+
return;
|
|
126
|
+
const author = parsePerson(stringField(entity, "author"))?.email;
|
|
127
|
+
const mine = parsePerson(currentAuthor(ctx))?.email;
|
|
128
|
+
if (!author || !mine || !sameEmail(author, mine))
|
|
129
|
+
return;
|
|
130
|
+
ctx.stderr.write(`${ctx.colors.yellow("warning:")} #${entity.id} is your own pull request; ` +
|
|
131
|
+
`this ${verdict} will not count toward its review\n`);
|
|
132
|
+
}
|
|
133
|
+
export function cmdPrList(ctx, terms, opts) {
|
|
134
|
+
const reading = readReviewPolicy(ctx);
|
|
135
|
+
warnPolicyProblems(ctx, reading);
|
|
136
|
+
// Read once per entity: the decision decides both whether the column appears
|
|
137
|
+
// and what every row of it says, and each reading walks the comment files.
|
|
138
|
+
const summaries = new Map();
|
|
139
|
+
const summaryOf = (entity) => {
|
|
140
|
+
const cached = summaries.get(entity.id);
|
|
141
|
+
if (cached)
|
|
142
|
+
return cached;
|
|
143
|
+
const summary = reviewSummary(entity, reading.policy);
|
|
144
|
+
summaries.set(entity.id, summary);
|
|
145
|
+
return summary;
|
|
146
|
+
};
|
|
147
|
+
const extraColumns = [
|
|
148
|
+
{ header: "target", value: (entity) => stringField(entity, "target") },
|
|
149
|
+
// Derived rather than stored (spec 02 §2.7), and shown only where there is
|
|
150
|
+
// something to show: a listing of pull requests nobody was asked to review
|
|
151
|
+
// says nothing about reviews.
|
|
152
|
+
{
|
|
153
|
+
header: "reviewer",
|
|
154
|
+
value: (entity) => readReviewers(entity.fm).join(","),
|
|
155
|
+
when: (entities) => entities.some((entity) => readReviewers(entity.fm).length > 0),
|
|
156
|
+
flexible: true,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
header: "review",
|
|
160
|
+
value: (entity) => summaryOf(entity).decision,
|
|
161
|
+
when: (entities) => entities.some((entity) => summaryOf(entity).reviewers.length > 0),
|
|
162
|
+
},
|
|
163
|
+
];
|
|
164
|
+
const query = parseListQuery(ctx, terms, "pr");
|
|
165
|
+
if (!opts.allRefs) {
|
|
166
|
+
const here = listEntities(ctx, "pr", query);
|
|
167
|
+
reportList(ctx, "pr", here, { ...opts, extraColumns });
|
|
168
|
+
if (here.length === 0)
|
|
169
|
+
hintOtherRefs(ctx, opts);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const matched = listPrsAcrossRefs(ctx, query);
|
|
173
|
+
if (opts.json) {
|
|
174
|
+
if (matched.length === 0)
|
|
175
|
+
return;
|
|
176
|
+
ctx.stdout.write(`${toNdjson(matched.map((entry) => entityJson(ctx.navDir, entry.entity, { refs: entry.refs.map((ref) => ref.short) })))}\n`);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (matched.length === 0) {
|
|
180
|
+
ctx.stdout.write("No pull requests match this query on any fetched branch.\n");
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
reportList(ctx, "pr", listEntities(ctx, "pr", query, { entities: matched.map((e) => e.entity) }), {
|
|
184
|
+
...opts,
|
|
185
|
+
extraColumns: [
|
|
186
|
+
...extraColumns,
|
|
187
|
+
{
|
|
188
|
+
header: "refs",
|
|
189
|
+
value: (entity) => (matched.find((entry) => entry.entity.id === entity.id)?.refs ?? [])
|
|
190
|
+
.map((ref) => ref.short)
|
|
191
|
+
.join(","),
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Point at `--all-refs` when this checkout has nothing to show and other
|
|
198
|
+
* branches do.
|
|
199
|
+
*
|
|
200
|
+
* An open pull request's files live on its source branch (spec 03 §3.5), so a
|
|
201
|
+
* listing run from the default branch — or from any worktree but the one the
|
|
202
|
+
* work is on — is empty however many are in flight, and "No pull requests
|
|
203
|
+
* match this query." reads as "there are none". The hint is a signpost, not a
|
|
204
|
+
* listing: the count is all it says, the table still reports this branch and
|
|
205
|
+
* this branch only, and it goes to stderr so a pipe sees the same bytes as
|
|
206
|
+
* before.
|
|
207
|
+
*/
|
|
208
|
+
function hintOtherRefs(ctx, opts) {
|
|
209
|
+
if (opts.json)
|
|
210
|
+
return;
|
|
211
|
+
const count = countOpenPrsOnOtherRefs(ctx);
|
|
212
|
+
if (count === 0)
|
|
213
|
+
return;
|
|
214
|
+
ctx.stderr.write(`${ctx.colors.dim(`${count} open pull ${count === 1 ? "request" : "requests"} on other branches; ` +
|
|
215
|
+
"nav pr list --all-refs to see them")}\n`);
|
|
216
|
+
}
|
|
217
|
+
export function cmdPrMerge(ctx, prefix, opts) {
|
|
218
|
+
const syncSource = opts.syncSource !== false;
|
|
219
|
+
if (opts.continue) {
|
|
220
|
+
const result = continuePrMerge(ctx, prefix, { syncSource });
|
|
221
|
+
// A merge already under way: the moment to have asked has passed, so an
|
|
222
|
+
// unmet policy is reported and nothing is put to the user.
|
|
223
|
+
warnPolicyProblems(ctx, result.review.reading);
|
|
224
|
+
const shortfall = declaredShortfall(result.review);
|
|
225
|
+
if (shortfall) {
|
|
226
|
+
ctx.stderr.write(`${ctx.colors.yellow("warning:")} #${result.entity.id} was merged with ${shortfall}\n`);
|
|
227
|
+
}
|
|
228
|
+
reportMerge(ctx, result);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (!prefix)
|
|
232
|
+
fail("nav pr merge needs the ID of the pull request to merge");
|
|
233
|
+
const plan = planPrMerge(ctx, prefix, { noFf: opts.noFf, syncSource });
|
|
234
|
+
warnPolicyProblems(ctx, plan.review.reading);
|
|
235
|
+
confirmAgainstPolicy(ctx, plan.entity.id, plan.review, opts.yes === true);
|
|
236
|
+
reportMerge(ctx, executePrMerge(ctx, plan));
|
|
237
|
+
}
|
|
238
|
+
/** What the pull request is short of, but only where a policy was declared. */
|
|
239
|
+
function declaredShortfall(review) {
|
|
240
|
+
return review.reading.declared ? describeShortfall(review.summary) : null;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Say what a declared policy is missing, and ask before merging short of it.
|
|
244
|
+
*
|
|
245
|
+
* Never a refusal. `--yes` answers in advance, a run with no terminal says its
|
|
246
|
+
* piece and carries on — a pipeline that stopped for a question nobody can
|
|
247
|
+
* answer would be the gate spec 02 §2.7 forbids, arrived at by accident. What
|
|
248
|
+
* exits 1 is the user answering no, which is their decision and not the tool's.
|
|
249
|
+
*/
|
|
250
|
+
function confirmAgainstPolicy(ctx, id, review, assumeYes) {
|
|
251
|
+
const shortfall = declaredShortfall(review);
|
|
252
|
+
if (shortfall === null)
|
|
253
|
+
return;
|
|
254
|
+
ctx.stdout.write(`#${id} has ${shortfall}\n`);
|
|
255
|
+
switch (mergeAction({ shortfall, assumeYes, interactive: isInteractive(ctx) })) {
|
|
256
|
+
case "proceed":
|
|
257
|
+
return;
|
|
258
|
+
case "warn-and-proceed":
|
|
259
|
+
ctx.stderr.write(`${ctx.colors.yellow("warning:")} merging #${id} anyway; pass --yes to say so\n`);
|
|
260
|
+
return;
|
|
261
|
+
case "ask":
|
|
262
|
+
if (!askYesNo(ctx, "Merge anyway? [y/N] "))
|
|
263
|
+
fail(`#${id} was not merged`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function reportMerge(ctx, result) {
|
|
267
|
+
ctx.stdout.write(`Merged #${result.entity.id} ${ctx.navDir}/${result.dirPath}/\n`);
|
|
268
|
+
if (result.mergeSha)
|
|
269
|
+
ctx.stdout.write(`Merge commit ${result.mergeSha.slice(0, 12)}\n`);
|
|
270
|
+
reportSourceSync(ctx, result.source, stringField(result.entity, "target"));
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Say what became of the source branch. A move is one line; a branch that
|
|
274
|
+
* could not be moved is a warning, because somebody now has to do by hand what
|
|
275
|
+
* forgetting leaves wrong rather than stale; the rest costs nothing.
|
|
276
|
+
*/
|
|
277
|
+
function reportSourceSync(ctx, source, target) {
|
|
278
|
+
const warn = (text) => {
|
|
279
|
+
ctx.stderr.write(`${ctx.colors.yellow("warning:")} ${text}\n`);
|
|
280
|
+
};
|
|
281
|
+
switch (source.outcome) {
|
|
282
|
+
case "fast-forwarded":
|
|
283
|
+
ctx.stdout.write(`Fast-forwarded ${source.ref} to ${target}\n`);
|
|
284
|
+
return;
|
|
285
|
+
case "diverged":
|
|
286
|
+
warn(`${source.ref} was not moved: it has commits ${target} does not; merge ${target} into it`);
|
|
287
|
+
return;
|
|
288
|
+
case "checked-out":
|
|
289
|
+
warn(`${source.ref} was not moved: it is checked out at ${source.worktree}; run 'git merge --ff-only ${target}' there`);
|
|
290
|
+
return;
|
|
291
|
+
default:
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/* --------------------------------------------------------------------- close */
|
|
296
|
+
/**
|
|
297
|
+
* Decline a pull request.
|
|
298
|
+
*
|
|
299
|
+
* Its files usually live on the source branch, so when the ID is not in the
|
|
300
|
+
* current tree the directory is first checked out from the ref that has it —
|
|
301
|
+
* which is exactly the manual recipe spec 02 §2.8 describes for keeping a
|
|
302
|
+
* durable record of a declined PR on the default branch.
|
|
303
|
+
*/
|
|
304
|
+
export function cmdPrClose(ctx, prefix, opts) {
|
|
305
|
+
const materialized = materializePrIfAbsent(ctx, prefix);
|
|
306
|
+
if (materialized) {
|
|
307
|
+
ctx.stdout.write(`Brought #${materialized.id} onto this branch from ${materialized.ref} so it can be recorded\n`);
|
|
308
|
+
}
|
|
309
|
+
cmdClose(ctx, "pr", prefix, opts);
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's context: a workspace context plus the terminal it reports to.
|
|
3
|
+
*
|
|
4
|
+
* Everything that is not presentation — repository paths, the clock, ID
|
|
5
|
+
* minting, identity — lives in `workspace/ctx.ts` and is shared with any other
|
|
6
|
+
* front end. This module adds only what a terminal program needs on top.
|
|
7
|
+
*/
|
|
8
|
+
import { makeWsCtx } from "@navbook/core";
|
|
9
|
+
import { makeColors } from "./render/colors.js";
|
|
10
|
+
export function makeContext(opts = {}) {
|
|
11
|
+
const env = opts.env ?? process.env;
|
|
12
|
+
const stdout = opts.stdout ?? process.stdout;
|
|
13
|
+
const stderr = opts.stderr ?? process.stderr;
|
|
14
|
+
const ws = makeWsCtx({
|
|
15
|
+
cwd: opts.cwd,
|
|
16
|
+
env,
|
|
17
|
+
...(opts.requireRepo !== undefined ? { requireRepo: opts.requireRepo } : {}),
|
|
18
|
+
});
|
|
19
|
+
return { ...ws, colors: makeColors(stdout, env), stdout, stderr };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AACtD,OAAO,EAAe,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAiB7D,MAAM,UAAU,WAAW,CAAC,OAA2B,EAAE;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAE7C,MAAM,EAAE,GAAG,SAAS,CAAC;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { spawnSync } from "node:child_process";
|
|
8
8
|
import { readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
9
9
|
import { join } from "node:path";
|
|
10
|
-
import { gitDir } from "
|
|
10
|
+
import { gitDir } from "@navbook/core";
|
|
11
11
|
import { fail } from "./errors.js";
|
|
12
12
|
/** Single-quote a path for a POSIX shell, escaping any embedded quotes. */
|
|
13
13
|
export function shellQuote(value) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,GAAsB;IAClD,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,GAAQ,EAAE,YAAoB;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC,sBAAsB,EAAE;YAC3B,0EAA0E;SAC3E,CAAC,CAAC;IACL,CAAC;IACD,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE;QAChE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,GAAG,CAAC,QAAQ;QACjB,GAAG,EAAE,GAAG,CAAC,GAAG;KACb,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK;QAAE,IAAI,CAAC,2BAA2B,MAAM,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,WAAW,MAAM,wBAAwB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACjG,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ,EAAE,IAAY,EAAE,OAAe;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxB,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAW;IAC5B,iEAAiE;IACxD,OAAO,CAAW;IAE3B,YAAY,OAAe,EAAE,OAAoD,EAAE;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,UAAoB,EAAE;IAC1D,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,UAAoB,EAAE;IAChE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/install/completions.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { chmodSync, existsSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
10
10
|
import { dirname, join } from "node:path";
|
|
11
|
-
import { hooksDir } from "
|
|
11
|
+
import { hooksDir } from "@navbook/core";
|
|
12
12
|
export const MARKER_BEGIN = "# >>> navbook >>>";
|
|
13
13
|
export const MARKER_END = "# <<< navbook <<<";
|
|
14
14
|
export const HOOK_NAME = "pre-commit";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/install/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* `nav` entry point.
|
|
4
4
|
*/
|
|
5
5
|
import { realpathSync } from "node:fs";
|
|
6
|
+
import { WorkspaceError } from "@navbook/core";
|
|
6
7
|
import { CommanderError } from "commander";
|
|
7
8
|
import { makeContext } from "./context.js";
|
|
8
9
|
import { NavError } from "./errors.js";
|
|
@@ -46,6 +47,15 @@ function report(error, stderr) {
|
|
|
46
47
|
stderr.write(`${line}\n`);
|
|
47
48
|
return error.exitCode;
|
|
48
49
|
}
|
|
50
|
+
// The workspace and operation layers report failures without knowing what an
|
|
51
|
+
// exit code is. Every one of them is operational: a format violation reaches
|
|
52
|
+
// exit 2 only through `doctor`, which raises it here in the CLI.
|
|
53
|
+
if (error instanceof WorkspaceError) {
|
|
54
|
+
stderr.write(`nav: ${error.message}\n`);
|
|
55
|
+
for (const line of error.details)
|
|
56
|
+
stderr.write(`${line}\n`);
|
|
57
|
+
return 1;
|
|
58
|
+
}
|
|
49
59
|
stderr.write(`nav: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
50
60
|
return 1;
|
|
51
61
|
}
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|