

















@@ -63,13 +63,13 @@ const defaultRuntime: OutputRuntimeEnv = {
6363// Defense-in-depth: replace the redaction sentinel with `[REDACTED]`
6464// before writing, even if upstream emits it.
6565export function scrubSentinel(s: string): string {
66-if (!s.includes(REDACTED_SENTINEL)) return s;
66+if (!s.includes(REDACTED_SENTINEL)) {return s;}
6767return s.split(REDACTED_SENTINEL).join(SCRUB_PLACEHOLDER);
6868}
69697070function detectMode(options: PathCommandOptions): OutputMode {
71-if (options.json === true) return "json";
72-if (options.human === true) return "human";
71+if (options.json === true) {return "json";}
72+if (options.human === true) {return "human";}
7373return process.stdout.isTTY ? "human" : "json";
7474}
7575@@ -157,8 +157,8 @@ function catchSentinel<T>(
157157async function loadAst(absPath: string, fileName: string): Promise<OcAst> {
158158const raw = await fs.readFile(absPath, "utf-8");
159159const kind = inferKind(fileName);
160-if (kind === "jsonc") return parseJsonc(raw).ast;
161-if (kind === "jsonl") return parseJsonl(raw).ast;
160+if (kind === "jsonc") {return parseJsonc(raw).ast;}
161+if (kind === "jsonl") {return parseJsonl(raw).ast;}
162162return parseMd(raw).ast;
163163}
164164@@ -176,15 +176,15 @@ function emitForKind(ast: OcAst, fileName?: string): string {
176176}
177177178178function resolveFsPath(path: OcPath, options: PathCommandOptions): string {
179-if (options.file !== undefined) return resolvePath(options.file);
179+if (options.file !== undefined) {return resolvePath(options.file);}
180180return resolvePath(options.cwd ?? process.cwd(), path.file);
181181}
182182183183function formatMatchHuman(match: OcMatch): string {
184184if (match.kind === "leaf") {
185185return `leaf @ L${match.line}: ${JSON.stringify(match.valueText)} (${match.leafType})`;
186186}
187-if (match.kind === "node") return `node @ L${match.line} [${match.descriptor}]`;
187+if (match.kind === "node") {return `node @ L${match.line} [${match.descriptor}]`;}
188188if (match.kind === "insertion-point") {
189189return `insertion-point @ L${match.line} [${match.container}]`;
190190}
@@ -199,9 +199,9 @@ export async function pathResolveCommand(
199199runtime: OutputRuntimeEnv,
200200): Promise<void> {
201201const mode = detectMode(options);
202-if (!requireArg(pathStr, "resolve: missing <oc-path> argument", runtime, mode)) return;
202+if (!requireArg(pathStr, "resolve: missing <oc-path> argument", runtime, mode)) {return;}
203203const ocPath = tryParse(pathStr, runtime, mode);
204-if (ocPath === null) return;
204+if (ocPath === null) {return;}
205205const ast = await loadAst(resolveFsPath(ocPath, options), ocPath.file);
206206let match: OcMatch | null;
207207try {
@@ -230,15 +230,15 @@ export async function pathSetCommand(
230230runtime: OutputRuntimeEnv,
231231): Promise<void> {
232232const mode = detectMode(options);
233-if (!requireArg(pathStr, "set: requires <oc-path> <value>", runtime, mode)) return;
234-if (!requireArg(value, "set: requires <oc-path> <value>", runtime, mode)) return;
233+if (!requireArg(pathStr, "set: requires <oc-path> <value>", runtime, mode)) {return;}
234+if (!requireArg(value, "set: requires <oc-path> <value>", runtime, mode)) {return;}
235235const ocPath = tryParse(pathStr, runtime, mode);
236-if (ocPath === null) return;
236+if (ocPath === null) {return;}
237237const fsPath = resolveFsPath(ocPath, options);
238238const ast = await loadAst(fsPath, ocPath.file);
239239240240const result = catchSentinel("set", runtime, mode, () => setOcPath(ast, ocPath, value));
241-if (result === null) return;
241+if (result === null) {return;}
242242if (!result.ok) {
243243const detail = "detail" in result ? result.detail : undefined;
244244emit(
@@ -254,7 +254,7 @@ export async function pathSetCommand(
254254const newBytes = catchSentinel("emit", runtime, mode, () =>
255255emitForKind(result.ast, ocPath.file),
256256);
257-if (newBytes === null) return;
257+if (newBytes === null) {return;}
258258259259if (options.dryRun === true) {
260260emit(
@@ -280,9 +280,9 @@ export async function pathFindCommand(
280280runtime: OutputRuntimeEnv,
281281): Promise<void> {
282282const mode = detectMode(options);
283-if (!requireArg(patternStr, "find: missing <pattern> argument", runtime, mode)) return;
283+if (!requireArg(patternStr, "find: missing <pattern> argument", runtime, mode)) {return;}
284284const pattern = tryParse(patternStr, runtime, mode);
285-if (pattern === null) return;
285+if (pattern === null) {return;}
286286// File-slot wildcards would silently ENOENT during readFile; reject.
287287if (/[*?]/.test(pattern.file)) {
288288emitError(
@@ -306,7 +306,7 @@ export async function pathFindCommand(
306306matches: matches.map((m) => ({ path: formatOcPath(m.path), match: m.match })),
307307},
308308() => {
309-if (matches.length === 0) return `0 matches for ${patternStr}`;
309+if (matches.length === 0) {return `0 matches for ${patternStr}`;}
310310const plural = matches.length === 1 ? "" : "es";
311311const lines = [`${matches.length} match${plural} for ${patternStr}:`];
312312for (const m of matches) {
@@ -315,7 +315,7 @@ export async function pathFindCommand(
315315return lines.join("\n");
316316},
317317);
318-if (matches.length === 0) runtime.exit(1);
318+if (matches.length === 0) {runtime.exit(1);}
319319}
320320321321export function pathValidateCommand(
@@ -324,7 +324,7 @@ export function pathValidateCommand(
324324runtime: OutputRuntimeEnv,
325325): void {
326326const mode = detectMode(options);
327-if (!requireArg(pathStr, "validate: missing <oc-path> argument", runtime, mode)) return;
327+if (!requireArg(pathStr, "validate: missing <oc-path> argument", runtime, mode)) {return;}
328328try {
329329const ocPath = parseOcPath(pathStr);
330330emit(
@@ -344,10 +344,10 @@ export function pathValidateCommand(
344344},
345345() => {
346346const lines = [`valid: ${pathStr}`, ` file: ${ocPath.file}`];
347-if (ocPath.section !== undefined) lines.push(` section: ${ocPath.section}`);
348-if (ocPath.item !== undefined) lines.push(` item: ${ocPath.item}`);
349-if (ocPath.field !== undefined) lines.push(` field: ${ocPath.field}`);
350-if (ocPath.session !== undefined) lines.push(` session: ${ocPath.session}`);
347+if (ocPath.section !== undefined) {lines.push(` section: ${ocPath.section}`);}
348+if (ocPath.item !== undefined) {lines.push(` item: ${ocPath.item}`);}
349+if (ocPath.field !== undefined) {lines.push(` field: ${ocPath.field}`);}
350+if (ocPath.session !== undefined) {lines.push(` session: ${ocPath.session}`);}
351351return lines.join("\n");
352352},
353353);
@@ -372,15 +372,15 @@ export async function pathEmitCommand(
372372runtime: OutputRuntimeEnv,
373373): Promise<void> {
374374const mode = detectMode(options);
375-if (!requireArg(fileArg, "emit: missing <file> argument", runtime, mode)) return;
375+if (!requireArg(fileArg, "emit: missing <file> argument", runtime, mode)) {return;}
376376const fsPath =
377377options.file !== undefined
378378 ? resolvePath(options.file)
379379 : resolvePath(options.cwd ?? process.cwd(), fileArg);
380380const fileName = fsPath.split(/[\\/]/).pop() ?? fileArg;
381381const ast = await loadAst(fsPath, fileName);
382382const bytes = catchSentinel("emit", runtime, mode, () => emitForKind(ast, fileName));
383-if (bytes === null) return;
383+if (bytes === null) {return;}
384384if (mode === "json") {
385385runtime.writeStdout(scrubSentinel(JSON.stringify({ ok: true, kind: ast.kind, bytes })));
386386return;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。