@navbook/cli 0.3.0 → 0.5.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/args.d.ts +28 -0
- package/dist/args.js +48 -0
- package/dist/args.js.map +1 -0
- package/dist/commands/complete.d.ts +10 -0
- package/dist/commands/complete.js +59 -51
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/compose.d.ts +35 -0
- package/dist/commands/doctor.d.ts +15 -0
- package/dist/commands/entity.d.ts +73 -0
- package/dist/commands/entity.js +59 -44
- package/dist/commands/entity.js.map +1 -1
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/install.d.ts +17 -0
- package/dist/commands/install.js +6 -3
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/issue.d.ts +35 -0
- package/dist/commands/issue.js +4 -5
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/plugin.d.ts +36 -0
- package/dist/commands/plugin.js +386 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/policy.d.ts +58 -0
- package/dist/commands/policy.js +28 -2
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/pr-elsewhere.d.ts +40 -0
- package/dist/commands/pr-elsewhere.js +209 -0
- package/dist/commands/pr-elsewhere.js.map +1 -0
- package/dist/commands/pr.d.ts +69 -0
- package/dist/commands/pr.js +132 -68
- package/dist/commands/pr.js.map +1 -1
- package/dist/context.d.ts +42 -0
- package/dist/context.js +2 -0
- package/dist/context.js.map +1 -1
- package/dist/editor.d.ts +23 -0
- package/dist/editor.js +4 -0
- package/dist/editor.js.map +1 -1
- package/dist/errors.d.ts +17 -0
- package/dist/install/completions.d.ts +19 -0
- package/dist/install/hook.d.ts +32 -0
- package/dist/install/hook.js +48 -4
- package/dist/install/hook.js.map +1 -1
- package/dist/main.d.ts +21 -0
- package/dist/main.js +112 -8
- package/dist/main.js.map +1 -1
- package/dist/plugins/commands.d.ts +69 -0
- package/dist/plugins/commands.js +148 -0
- package/dist/plugins/commands.js.map +1 -0
- package/dist/plugins/hint.d.ts +23 -0
- package/dist/plugins/hint.js +65 -0
- package/dist/plugins/hint.js.map +1 -0
- package/dist/plugins/host.d.ts +125 -0
- package/dist/plugins/host.js +18 -0
- package/dist/plugins/host.js.map +1 -0
- package/dist/plugins/loader.d.ts +54 -0
- package/dist/plugins/loader.js +165 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/resolve.d.ts +50 -0
- package/dist/plugins/resolve.js +134 -0
- package/dist/plugins/resolve.js.map +1 -0
- package/dist/plugins/runtime.d.ts +69 -0
- package/dist/plugins/runtime.js +256 -0
- package/dist/plugins/runtime.js.map +1 -0
- package/dist/plugins/store.d.ts +96 -0
- package/dist/plugins/store.js +186 -0
- package/dist/plugins/store.js.map +1 -0
- package/dist/program.d.ts +49 -0
- package/dist/program.js +353 -114
- package/dist/program.js.map +1 -1
- package/dist/prompt.d.ts +31 -0
- package/dist/render/colors.d.ts +13 -0
- package/dist/render/detail.d.ts +22 -0
- package/dist/render/table.d.ts +32 -0
- package/dist/render/table.js +123 -13
- package/dist/render/table.js.map +1 -1
- package/dist/sort.d.ts +27 -0
- package/package.json +9 -2
- package/dist/commands/feature.js +0 -202
- package/dist/commands/feature.js.map +0 -1
package/dist/commands/pr.js
CHANGED
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
* parts of the shared verbs that must reach across branches, because a PR's
|
|
7
7
|
* files live on the branch it proposes to merge (spec 03 §3.5).
|
|
8
8
|
*/
|
|
9
|
-
import { applyComment, bindReviewRevision, commitReport, continuePrMerge, countOpenPrsOnOtherRefs, currentAuthor, entityJson, executePrMerge,
|
|
9
|
+
import { applyComment, bindReviewRevision, commitReport, continuePrMerge, countOpenPrsOnOtherRefs, currentAuthor, entityJson, executePrMerge, isMergeMethod, listEntities, listPrsAcrossRefs, MERGE_METHODS, materializePrIfAbsent, newCommentFile, newPrFile, openPr, parseListQuery, parsePerson, planPrMerge, preparePrOpen, readReviewers, readReviewPolicy, requestReview, reviewSummary, sameEmail, stringField, toNdjson, updatePr, validateComment, validatePr, } from "@navbook/core";
|
|
10
10
|
import { fail } from "../errors.js";
|
|
11
11
|
import { askYesNo, isInteractive } from "../prompt.js";
|
|
12
12
|
import { composeFile } from "./compose.js";
|
|
13
13
|
import { cmdClose, reportList, } from "./entity.js";
|
|
14
|
-
import { describeShortfall, mergeAction, warnPolicyProblems } from "./policy.js";
|
|
14
|
+
import { describeShortfall, mergeAction, warnMergePolicyProblems, warnPolicyProblems, } from "./policy.js";
|
|
15
|
+
import { withPrWriteSite } from "./pr-elsewhere.js";
|
|
15
16
|
export function cmdPrOpen(ctx, opts) {
|
|
16
17
|
const draft = preparePrOpen(ctx, { target: opts.target, title: opts.title });
|
|
17
18
|
const composed = composeFile(ctx, {
|
|
@@ -31,9 +32,9 @@ export function cmdPrOpen(ctx, opts) {
|
|
|
31
32
|
labels: opts.label,
|
|
32
33
|
assignee: opts.assignee,
|
|
33
34
|
milestone: opts.milestone,
|
|
34
|
-
|
|
35
|
+
...(opts.ext ? { ext: opts.ext } : {}),
|
|
35
36
|
}),
|
|
36
|
-
validate: validatePr,
|
|
37
|
+
validate: (parsed) => validatePr(parsed, ctx.ext),
|
|
37
38
|
});
|
|
38
39
|
const { id, dirPath, run } = openPr(ctx, { content: composed.content, fallbackTitle: draft.title }, { commit: opts.commit });
|
|
39
40
|
ctx.stdout.write(`Created ${ctx.navDir}/${dirPath}/ (#${id})\n`);
|
|
@@ -41,72 +42,83 @@ export function cmdPrOpen(ctx, opts) {
|
|
|
41
42
|
if (opts.commit)
|
|
42
43
|
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
43
44
|
}
|
|
44
|
-
/* ------------------------------------------------------------------- update */
|
|
45
45
|
export function cmdPrUpdate(ctx, prefix, opts) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
// The revision pinned is the HEAD of wherever this runs, so moving the write
|
|
47
|
+
// to a worktree on the source branch is what pins the right one — this
|
|
48
|
+
// checkout's HEAD was never the head under review.
|
|
49
|
+
withPrWriteSite(ctx, prefix, opts, (at) => {
|
|
50
|
+
const { entity, head, revisionCount, run } = updatePr(at, prefix, { commit: opts.commit });
|
|
51
|
+
ctx.stdout.write(`Recorded revision ${revisionCount} of #${entity.id} head ${head.slice(0, 12)}\n`);
|
|
52
|
+
if (opts.commit)
|
|
53
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
54
|
+
});
|
|
50
55
|
}
|
|
51
56
|
export function cmdPrRequest(ctx, prefix, people, opts) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
withPrWriteSite(ctx, prefix, opts, (at) => {
|
|
58
|
+
const { entity, changed, unchanged, run } = requestReview(at, prefix, people, {
|
|
59
|
+
commit: opts.commit,
|
|
60
|
+
remove: opts.remove,
|
|
61
|
+
});
|
|
62
|
+
const verb = opts.remove ? "No longer reviewing" : "Asked to review";
|
|
63
|
+
ctx.stdout.write(`${verb} #${entity.id}: ${changed.join(", ")}\n`);
|
|
64
|
+
// Naming who was already there matters most when only some of a list moved:
|
|
65
|
+
// the count alone would leave the caller counting names themselves.
|
|
66
|
+
for (const person of unchanged) {
|
|
67
|
+
ctx.stdout.write(`${ctx.colors.dim(opts.remove ? "not listed:" : "already listed:")} ${person}\n`);
|
|
68
|
+
}
|
|
69
|
+
if (opts.commit)
|
|
70
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
55
71
|
});
|
|
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
72
|
}
|
|
66
73
|
export function cmdPrReview(ctx, prefix, opts) {
|
|
67
|
-
|
|
74
|
+
// Checked before anything is resolved, so a mistyped flag never costs a
|
|
75
|
+
// temporary checkout.
|
|
68
76
|
const chosen = [opts.approve, opts.requestChanges, opts.comment].filter(Boolean).length;
|
|
69
77
|
if (chosen > 1) {
|
|
70
78
|
fail("choose one of --approve, --request-changes or --comment, not several");
|
|
71
79
|
}
|
|
72
|
-
const revision = bindReviewRevision(entity, opts.revision);
|
|
73
80
|
if (opts.line && !opts.file)
|
|
74
81
|
fail("--line needs --file");
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
? "
|
|
83
|
-
: opts.
|
|
84
|
-
? "
|
|
85
|
-
: undefined
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
82
|
+
withPrWriteSite(ctx, prefix, opts, (at, entity) => {
|
|
83
|
+
const revision = bindReviewRevision(entity, opts.revision);
|
|
84
|
+
// This verb files reviews, so with no flag the verdict is the one that judges
|
|
85
|
+
// nothing (spec 04 §4.3). The exception is an inline anchor: a note about one
|
|
86
|
+
// line is discussion, and recording it as a review would say its author had
|
|
87
|
+
// read the whole revision. `nav pr comment` remains the unbound comment.
|
|
88
|
+
const verdict = opts.approve
|
|
89
|
+
? "approve"
|
|
90
|
+
: opts.requestChanges
|
|
91
|
+
? "request-changes"
|
|
92
|
+
: opts.file === undefined || opts.comment
|
|
93
|
+
? "comment"
|
|
94
|
+
: undefined;
|
|
95
|
+
const isReview = verdict !== undefined || opts.file !== undefined;
|
|
96
|
+
const base = {
|
|
97
|
+
author: currentAuthor(at),
|
|
98
|
+
body: "",
|
|
99
|
+
...(verdict ? { verdict } : {}),
|
|
100
|
+
...(isReview ? { revision } : {}),
|
|
101
|
+
...(opts.file ? { file: opts.file } : {}),
|
|
102
|
+
...(opts.line ? { line: opts.line } : {}),
|
|
103
|
+
};
|
|
104
|
+
const composed = composeFile(ctx, {
|
|
105
|
+
message: opts.message,
|
|
106
|
+
bufferName: "NAVBOOK_REVIEW.md",
|
|
107
|
+
noun: verdict ? "review" : "comment",
|
|
108
|
+
render: (body) => newCommentFile({ ...base, body }),
|
|
109
|
+
validate: (parsed) => validateComment(parsed, { onPr: true }),
|
|
110
|
+
});
|
|
111
|
+
const { id, path, run } = applyComment(at, entity, { content: composed.content, review: isReview }, { commit: opts.commit });
|
|
112
|
+
const label = verdict ? `Reviewed (${verdict})` : "Commented on";
|
|
113
|
+
ctx.stdout.write(`${label} #${entity.id} ${at.navDir}/${path} (#${id})\n`);
|
|
114
|
+
if (isReview)
|
|
115
|
+
ctx.stdout.write(`Bound to revision ${revision.slice(0, 12)}\n`);
|
|
116
|
+
if (opts.commit)
|
|
117
|
+
ctx.stdout.write(`${commitReport(run)}\n`);
|
|
118
|
+
// The policy that decides whether a verdict counts is the one in the tree
|
|
119
|
+
// the review was written into.
|
|
120
|
+
warnIfOwnVerdict(at, entity, verdict);
|
|
101
121
|
});
|
|
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
122
|
}
|
|
111
123
|
/**
|
|
112
124
|
* Warn an author that their own verdict will not be counted.
|
|
@@ -161,10 +173,13 @@ export function cmdPrList(ctx, terms, opts) {
|
|
|
161
173
|
when: (entities) => entities.some((entity) => summaryOf(entity).reviewers.length > 0),
|
|
162
174
|
},
|
|
163
175
|
];
|
|
176
|
+
// The listing's own columns first, then whatever plugins contributed: the
|
|
177
|
+
// caller's are added to these, never replaced by them.
|
|
178
|
+
const columns = [...extraColumns, ...(opts.extraColumns ?? [])];
|
|
164
179
|
const query = parseListQuery(ctx, terms, "pr");
|
|
165
180
|
if (!opts.allRefs) {
|
|
166
181
|
const here = listEntities(ctx, "pr", query);
|
|
167
|
-
reportList(ctx, "pr", here, { ...opts, extraColumns });
|
|
182
|
+
reportList(ctx, "pr", here, { ...opts, extraColumns: columns });
|
|
168
183
|
if (here.length === 0)
|
|
169
184
|
hintOtherRefs(ctx, opts);
|
|
170
185
|
return;
|
|
@@ -173,7 +188,10 @@ export function cmdPrList(ctx, terms, opts) {
|
|
|
173
188
|
if (opts.json) {
|
|
174
189
|
if (matched.length === 0)
|
|
175
190
|
return;
|
|
176
|
-
ctx.stdout.write(`${toNdjson(matched.map((entry) => entityJson(ctx.navDir, entry.entity, {
|
|
191
|
+
ctx.stdout.write(`${toNdjson(matched.map((entry) => entityJson(ctx.navDir, entry.entity, {
|
|
192
|
+
...(opts.jsonExtra?.(entry.entity) ?? {}),
|
|
193
|
+
refs: entry.refs.map((ref) => ref.short),
|
|
194
|
+
})))}\n`);
|
|
177
195
|
return;
|
|
178
196
|
}
|
|
179
197
|
if (matched.length === 0) {
|
|
@@ -183,7 +201,7 @@ export function cmdPrList(ctx, terms, opts) {
|
|
|
183
201
|
reportList(ctx, "pr", listEntities(ctx, "pr", query, { entities: matched.map((e) => e.entity) }), {
|
|
184
202
|
...opts,
|
|
185
203
|
extraColumns: [
|
|
186
|
-
...
|
|
204
|
+
...columns,
|
|
187
205
|
{
|
|
188
206
|
header: "refs",
|
|
189
207
|
value: (entity) => (matched.find((entry) => entry.entity.id === entity.id)?.refs ?? [])
|
|
@@ -208,7 +226,15 @@ export function cmdPrList(ctx, terms, opts) {
|
|
|
208
226
|
function hintOtherRefs(ctx, opts) {
|
|
209
227
|
if (opts.json)
|
|
210
228
|
return;
|
|
211
|
-
|
|
229
|
+
let count;
|
|
230
|
+
try {
|
|
231
|
+
count = countOpenPrsOnOtherRefs(ctx);
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// The listing this follows has already been printed and is right; a branch
|
|
235
|
+
// git cannot read is `--all-refs`'s to report, not a reason to fail this.
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
212
238
|
if (count === 0)
|
|
213
239
|
return;
|
|
214
240
|
ctx.stderr.write(`${ctx.colors.dim(`${count} open pull ${count === 1 ? "request" : "requests"} on other branches; ` +
|
|
@@ -230,11 +256,26 @@ export function cmdPrMerge(ctx, prefix, opts) {
|
|
|
230
256
|
}
|
|
231
257
|
if (!prefix)
|
|
232
258
|
fail("nav pr merge needs the ID of the pull request to merge");
|
|
233
|
-
const plan = planPrMerge(ctx, prefix, {
|
|
259
|
+
const plan = planPrMerge(ctx, prefix, { method: readMethod(opts.method), syncSource });
|
|
234
260
|
warnPolicyProblems(ctx, plan.review.reading);
|
|
261
|
+
warnMergePolicyProblems(ctx, plan.mergePolicy);
|
|
235
262
|
confirmAgainstPolicy(ctx, plan.entity.id, plan.review, opts.yes === true);
|
|
236
263
|
reportMerge(ctx, executePrMerge(ctx, plan));
|
|
237
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Read `--method`, or nothing when it was not given.
|
|
267
|
+
*
|
|
268
|
+
* Checked here rather than left to the plan, so a mistyped name costs nothing:
|
|
269
|
+
* the merge has not read a ref or touched the index yet, and the answer is the
|
|
270
|
+
* list of what it could have been.
|
|
271
|
+
*/
|
|
272
|
+
function readMethod(value) {
|
|
273
|
+
if (value === undefined)
|
|
274
|
+
return undefined;
|
|
275
|
+
if (isMergeMethod(value))
|
|
276
|
+
return value;
|
|
277
|
+
fail(`'${value}' is not a merge method; expected one of ${MERGE_METHODS.join(", ")}`);
|
|
278
|
+
}
|
|
238
279
|
/** What the pull request is short of, but only where a policy was declared. */
|
|
239
280
|
function declaredShortfall(review) {
|
|
240
281
|
return review.reading.declared ? describeShortfall(review.summary) : null;
|
|
@@ -265,28 +306,51 @@ function confirmAgainstPolicy(ctx, id, review, assumeYes) {
|
|
|
265
306
|
}
|
|
266
307
|
function reportMerge(ctx, result) {
|
|
267
308
|
ctx.stdout.write(`Merged #${result.entity.id} ${ctx.navDir}/${result.dirPath}/\n`);
|
|
268
|
-
if (result.mergeSha)
|
|
269
|
-
|
|
270
|
-
|
|
309
|
+
if (result.mergeSha) {
|
|
310
|
+
const what = result.method === "squash" ? "Squash commit" : "Merge commit";
|
|
311
|
+
ctx.stdout.write(`${what} ${result.mergeSha.slice(0, 12)}\n`);
|
|
312
|
+
}
|
|
313
|
+
reportSourceSync(ctx, result.source, result.method, stringField(result.entity, "target"));
|
|
271
314
|
}
|
|
272
315
|
/**
|
|
273
316
|
* Say what became of the source branch. A move is one line; a branch that
|
|
274
317
|
* could not be moved is a warning, because somebody now has to do by hand what
|
|
275
318
|
* forgetting leaves wrong rather than stale; the rest costs nothing.
|
|
319
|
+
*
|
|
320
|
+
* The method is needed as well as the outcome, because a branch the target
|
|
321
|
+
* cannot reach means opposite things either side of a replay: after an
|
|
322
|
+
* ordinary merge it is a branch somebody still has to merge, and after a
|
|
323
|
+
* rebase it is the original of commits that are already on the target under
|
|
324
|
+
* new SHAs. Telling the second to "merge main into it" would undo the linear
|
|
325
|
+
* history they asked for.
|
|
276
326
|
*/
|
|
277
|
-
function reportSourceSync(ctx, source, target) {
|
|
327
|
+
function reportSourceSync(ctx, source, method, target) {
|
|
278
328
|
const warn = (text) => {
|
|
279
329
|
ctx.stderr.write(`${ctx.colors.yellow("warning:")} ${text}\n`);
|
|
280
330
|
};
|
|
331
|
+
const replayed = method === "rebase" || method === "rebase-no-ff";
|
|
281
332
|
switch (source.outcome) {
|
|
282
333
|
case "fast-forwarded":
|
|
283
334
|
ctx.stdout.write(`Fast-forwarded ${source.ref} to ${target}\n`);
|
|
284
335
|
return;
|
|
336
|
+
case "rebased":
|
|
337
|
+
ctx.stdout.write(`Rebased ${source.ref} onto ${target}\n`);
|
|
338
|
+
return;
|
|
339
|
+
case "squashed":
|
|
340
|
+
// Not a warning: this is the method doing what it says. What it is worth
|
|
341
|
+
// saying is that the branch is not contained in the target, because that
|
|
342
|
+
// is what somebody about to delete it would want to have known.
|
|
343
|
+
ctx.stdout.write(`${source.ref} was squashed; its own commits are not on ${target}, so it cannot be fast-forwarded\n`);
|
|
344
|
+
return;
|
|
285
345
|
case "diverged":
|
|
286
|
-
warn(
|
|
346
|
+
warn(replayed
|
|
347
|
+
? `${source.ref} was not moved: its commits were replayed onto ${target} under new SHAs; reset it with 'git reset --hard ${target}' there, or delete it`
|
|
348
|
+
: `${source.ref} was not moved: it has commits ${target} does not; merge ${target} into it`);
|
|
287
349
|
return;
|
|
288
350
|
case "checked-out":
|
|
289
|
-
warn(
|
|
351
|
+
warn(replayed
|
|
352
|
+
? `${source.ref} was not moved: it is checked out at ${source.worktree}; its commits were replayed onto ${target}, so reset it with 'git reset --hard ${target}' there`
|
|
353
|
+
: `${source.ref} was not moved: it is checked out at ${source.worktree}; run 'git merge --ff-only ${target}' there`);
|
|
290
354
|
return;
|
|
291
355
|
default:
|
|
292
356
|
return;
|
package/dist/commands/pr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 { type CoreExtensions, type WsCtx } from "@navbook/core";
|
|
9
|
+
import { type Colors } from "./render/colors.ts";
|
|
10
|
+
export interface Ctx extends WsCtx {
|
|
11
|
+
colors: Colors;
|
|
12
|
+
stdout: NodeJS.WriteStream;
|
|
13
|
+
stderr: NodeJS.WriteStream;
|
|
14
|
+
}
|
|
15
|
+
export interface MakeContextOptions {
|
|
16
|
+
cwd?: string;
|
|
17
|
+
env?: NodeJS.ProcessEnv;
|
|
18
|
+
stdout?: NodeJS.WriteStream;
|
|
19
|
+
stderr?: NodeJS.WriteStream;
|
|
20
|
+
/** Skip repository discovery, for commands that work outside a repository. */
|
|
21
|
+
requireRepo?: boolean;
|
|
22
|
+
/** The Navbook directory, when the caller already knows it; see `makeWsCtx`. */
|
|
23
|
+
navDir?: string;
|
|
24
|
+
/**
|
|
25
|
+
* What the loaded plugins registered (spec 02 §2.12).
|
|
26
|
+
*
|
|
27
|
+
* Supplied only for a command whose declaration says it needs the format
|
|
28
|
+
* extensions, because loading them means importing plugin code and that is
|
|
29
|
+
* what the budget of spec 05 §5.2 cannot afford on every invocation.
|
|
30
|
+
*/
|
|
31
|
+
ext?: CoreExtensions;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* How the program asks for its context: built on first use, and memoised.
|
|
35
|
+
*
|
|
36
|
+
* `requireRepo: false` is for a command that works outside a repository; the
|
|
37
|
+
* default refuses to build one there, which is the error most commands want.
|
|
38
|
+
*/
|
|
39
|
+
export type GetCtx = (opts?: {
|
|
40
|
+
requireRepo?: boolean;
|
|
41
|
+
}) => Ctx;
|
|
42
|
+
export declare function makeContext(opts?: MakeContextOptions): Ctx;
|
package/dist/context.js
CHANGED
|
@@ -15,6 +15,8 @@ export function makeContext(opts = {}) {
|
|
|
15
15
|
cwd: opts.cwd,
|
|
16
16
|
env,
|
|
17
17
|
...(opts.requireRepo !== undefined ? { requireRepo: opts.requireRepo } : {}),
|
|
18
|
+
...(opts.navDir !== undefined ? { navDir: opts.navDir } : {}),
|
|
19
|
+
...(opts.ext !== undefined ? { ext: opts.ext } : {}),
|
|
18
20
|
});
|
|
19
21
|
return { ...ws, colors: makeColors(stdout, env), stdout, stderr };
|
|
20
22
|
}
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAuB,SAAS,EAAc,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAe,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmC7D,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;QAC5E,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC"}
|
package/dist/editor.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `$EDITOR` integration for the `--edit` flows.
|
|
3
|
+
*
|
|
4
|
+
* The editor is always opened on the real Navbook file, exactly as spec 04 §4.3
|
|
5
|
+
* describes, so nothing has to be parsed back out of a scratch buffer.
|
|
6
|
+
*/
|
|
7
|
+
import type { Ctx } from "./context.ts";
|
|
8
|
+
/** Single-quote a path for a POSIX shell, escaping any embedded quotes. */
|
|
9
|
+
export declare function shellQuote(value: string): string;
|
|
10
|
+
/** The editor command to use, or null when none can be determined. */
|
|
11
|
+
export declare function editorCommand(env: NodeJS.ProcessEnv): string | null;
|
|
12
|
+
/** Open `absolutePath` in the user's editor, failing if it exits non-zero. */
|
|
13
|
+
export declare function openInEditor(ctx: Ctx, absolutePath: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Edit a Navbook file before it exists.
|
|
16
|
+
*
|
|
17
|
+
* The buffer is a real `.md` file (so editors highlight it) held next to
|
|
18
|
+
* `COMMIT_EDITMSG` in the git directory, and it is prefilled with the exact
|
|
19
|
+
* frontmatter the file will carry — the author can adjust the title, labels and
|
|
20
|
+
* body in one pass. Nothing is created in `.navbook/` until the text is valid,
|
|
21
|
+
* so an abort leaves no partial entity behind.
|
|
22
|
+
*/
|
|
23
|
+
export declare function editBuffer(ctx: Ctx, name: string, initial: string): string;
|
package/dist/editor.js
CHANGED
|
@@ -41,6 +41,10 @@ export function openInEditor(ctx, absolutePath) {
|
|
|
41
41
|
});
|
|
42
42
|
if (result.error)
|
|
43
43
|
fail(`could not start editor '${editor}': ${result.error.message}`);
|
|
44
|
+
// Ctrl-C reaches the editor too, and a killed process has a signal, not a
|
|
45
|
+
// status: "status null" would say nothing about what happened.
|
|
46
|
+
if (result.signal)
|
|
47
|
+
fail(`editor '${editor}' was interrupted (${result.signal}); nothing was written`);
|
|
44
48
|
if ((result.status ?? 1) !== 0)
|
|
45
49
|
fail(`editor '${editor}' exited with status ${result.status}`);
|
|
46
50
|
}
|
package/dist/editor.js.map
CHANGED
|
@@ -1 +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"}
|
|
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,0EAA0E;IAC1E,+DAA+D;IAC/D,IAAI,MAAM,CAAC,MAAM;QACf,IAAI,CAAC,WAAW,MAAM,sBAAsB,MAAM,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACrF,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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exit codes — spec 04 §4.2: 0 success, 1 operational error, 2 format violation.
|
|
3
|
+
*/
|
|
4
|
+
export type ExitCode = 0 | 1 | 2;
|
|
5
|
+
export declare class NavError extends Error {
|
|
6
|
+
readonly exitCode: ExitCode;
|
|
7
|
+
/** Extra lines printed under the message, e.g. candidate IDs. */
|
|
8
|
+
readonly details: string[];
|
|
9
|
+
constructor(message: string, opts?: {
|
|
10
|
+
exitCode?: ExitCode;
|
|
11
|
+
details?: string[];
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/** An operational error: not found, ambiguous, malformed input (exit 1). */
|
|
15
|
+
export declare function fail(message: string, details?: string[]): never;
|
|
16
|
+
/** A format violation detected by `doctor` (exit 2). */
|
|
17
|
+
export declare function failFormat(message: string, details?: string[]): never;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell completions.
|
|
3
|
+
*
|
|
4
|
+
* The scripts stay deliberately thin: anything that needs to know about the
|
|
5
|
+
* repository calls back into `nav __complete`, so completion behavior lives in
|
|
6
|
+
* one implementation rather than three shell dialects.
|
|
7
|
+
*/
|
|
8
|
+
export declare const SHELLS: readonly ["bash", "zsh", "fish"];
|
|
9
|
+
export type Shell = (typeof SHELLS)[number];
|
|
10
|
+
export declare function isShell(value: string): value is Shell;
|
|
11
|
+
/** Guess the user's shell from `$SHELL`, defaulting to bash. */
|
|
12
|
+
export declare function detectShell(env: NodeJS.ProcessEnv): Shell;
|
|
13
|
+
/** Where a shell looks for per-user completion scripts. */
|
|
14
|
+
export declare function completionPath(shell: Shell, env: NodeJS.ProcessEnv): string;
|
|
15
|
+
/** Extra advice printed after installing, where a shell needs configuration. */
|
|
16
|
+
export declare function completionNote(shell: Shell, path: string): string | null;
|
|
17
|
+
export declare function completionScript(shell: Shell): string;
|
|
18
|
+
export declare function installCompletions(shell: Shell, env: NodeJS.ProcessEnv): string;
|
|
19
|
+
export declare function uninstallCompletions(shell: Shell, env: NodeJS.ProcessEnv): string | null;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `pre-commit` hook — spec 04 §4.5.
|
|
3
|
+
*
|
|
4
|
+
* The hook is a thin shell script that calls the binary, so `--no-verify` and
|
|
5
|
+
* manual hook removal behave exactly as users expect. It is written as a marked
|
|
6
|
+
* block appended to any existing hook, and `nav uninstall --hooks` removes
|
|
7
|
+
* precisely that block and nothing else.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MARKER_BEGIN = "# >>> navbook >>>";
|
|
10
|
+
export declare const MARKER_END = "# <<< navbook <<<";
|
|
11
|
+
export declare const HOOK_NAME = "pre-commit";
|
|
12
|
+
export declare function hookPath(repoRoot: string): string;
|
|
13
|
+
export declare function isInstalled(repoRoot: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the hook has the block, and whether it is this `nav`'s.
|
|
16
|
+
*
|
|
17
|
+
* `outdated` is a block an older `nav` wrote: the markers are there but what
|
|
18
|
+
* is between them is not what this one would write — the block before the
|
|
19
|
+
* `set -e` fix, say. Seeing only the marker would leave every existing
|
|
20
|
+
* install with the old block for good.
|
|
21
|
+
*/
|
|
22
|
+
export declare function hookState(repoRoot: string): "absent" | "current" | "outdated";
|
|
23
|
+
/**
|
|
24
|
+
* Write the marked block: appended, creating the hook file if there is none,
|
|
25
|
+
* or put in place of an older block, leaving everything around it alone.
|
|
26
|
+
*/
|
|
27
|
+
export declare function installHook(repoRoot: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Remove exactly the marked block. A hook that contained nothing else is
|
|
30
|
+
* deleted; a hook the user also wrote by hand keeps everything they wrote.
|
|
31
|
+
*/
|
|
32
|
+
export declare function uninstallHook(repoRoot: string): void;
|
package/dist/install/hook.js
CHANGED
|
@@ -17,9 +17,15 @@ const BODY = `${MARKER_BEGIN}
|
|
|
17
17
|
# Validate staged Navbook files. Only a format violation (exit 2) blocks the
|
|
18
18
|
# commit; warnings never do, and a clone without nav installed is unaffected.
|
|
19
19
|
# Commit with --no-verify, or delete this block, to skip the check.
|
|
20
|
+
#
|
|
21
|
+
# The status is captured rather than tested on the next line: this block is
|
|
22
|
+
# appended to whatever hook was already here, and under 'set -e' a bare
|
|
23
|
+
# 'nav doctor --staged' would end the hook on exit 1 (an operational error,
|
|
24
|
+
# not a format violation) before the test below ever ran.
|
|
20
25
|
if command -v nav >/dev/null 2>&1; then
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
navbook_status=0
|
|
27
|
+
nav doctor --staged || navbook_status=$?
|
|
28
|
+
if [ "$navbook_status" -eq 2 ]; then
|
|
23
29
|
exit 1
|
|
24
30
|
fi
|
|
25
31
|
fi
|
|
@@ -31,13 +37,51 @@ export function isInstalled(repoRoot) {
|
|
|
31
37
|
const path = hookPath(repoRoot);
|
|
32
38
|
return existsSync(path) && readFileSync(path, "utf8").includes(MARKER_BEGIN);
|
|
33
39
|
}
|
|
34
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Whether the hook has the block, and whether it is this `nav`'s.
|
|
42
|
+
*
|
|
43
|
+
* `outdated` is a block an older `nav` wrote: the markers are there but what
|
|
44
|
+
* is between them is not what this one would write — the block before the
|
|
45
|
+
* `set -e` fix, say. Seeing only the marker would leave every existing
|
|
46
|
+
* install with the old block for good.
|
|
47
|
+
*/
|
|
48
|
+
export function hookState(repoRoot) {
|
|
49
|
+
const path = hookPath(repoRoot);
|
|
50
|
+
if (!existsSync(path))
|
|
51
|
+
return "absent";
|
|
52
|
+
const block = findBlock(readFileSync(path, "utf8"));
|
|
53
|
+
if (block === null)
|
|
54
|
+
return "absent";
|
|
55
|
+
return block.text === BODY ? "current" : "outdated";
|
|
56
|
+
}
|
|
57
|
+
/** The marked block's text and where it sits, or null when there is none. */
|
|
58
|
+
function findBlock(content) {
|
|
59
|
+
const start = content.indexOf(MARKER_BEGIN);
|
|
60
|
+
if (start === -1)
|
|
61
|
+
return null;
|
|
62
|
+
const close = content.indexOf(MARKER_END, start);
|
|
63
|
+
// An opening marker with no closing one is a block somebody cut short by
|
|
64
|
+
// hand; it runs to the end of the file, which is what uninstall assumes too.
|
|
65
|
+
const end = close === -1 ? content.length : close + MARKER_END.length;
|
|
66
|
+
return { start, end, text: content.slice(start, end) };
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Write the marked block: appended, creating the hook file if there is none,
|
|
70
|
+
* or put in place of an older block, leaving everything around it alone.
|
|
71
|
+
*/
|
|
35
72
|
export function installHook(repoRoot) {
|
|
36
73
|
const path = hookPath(repoRoot);
|
|
37
74
|
mkdirSync(dirname(path), { recursive: true });
|
|
38
75
|
const existing = existsSync(path) ? readFileSync(path, "utf8") : "";
|
|
39
|
-
|
|
76
|
+
const block = findBlock(existing);
|
|
77
|
+
if (block !== null) {
|
|
78
|
+
if (block.text === BODY)
|
|
79
|
+
return;
|
|
80
|
+
const replaced = `${existing.slice(0, block.start)}${BODY}${existing.slice(block.end)}`;
|
|
81
|
+
writeFileSync(path, replaced.endsWith("\n") ? replaced : `${replaced}\n`, "utf8");
|
|
82
|
+
chmodSync(path, statSync(path).mode | 0o111);
|
|
40
83
|
return;
|
|
84
|
+
}
|
|
41
85
|
const content = existing.trim() === ""
|
|
42
86
|
? `${SHEBANG}\n${BODY}\n`
|
|
43
87
|
: `${existing.replace(/\n*$/, "\n")}\n${BODY}\n`;
|