diff --git a/packages/cli/src/commands/event/view.ts b/packages/cli/src/commands/event/view.ts index 8eace9600..c6b6eb6ce 100644 --- a/packages/cli/src/commands/event/view.ts +++ b/packages/cli/src/commands/event/view.ts @@ -378,17 +378,19 @@ function issueForms(tokens: readonly string[]): IssueInput | null { prefix === undefined || prefix.includes("/") ? prefix : `${prefix}/`; if (second === undefined) { - const issue = issueFromEventId(id, target); - if (issue || !(prefix && looksLikeIssueShortId(prefix))) { - return issue; - } // `/`: the event of an issue. Short IDs are - // uppercase, and project slugs never are. - return { - eventId: ID_KINDS.event.validate(id), - targetArg: undefined, - issueShortId: prefix, - }; + // uppercase, and project slugs never are. `/` and + // `/` take precedence, but not over an event ID. + const afterShortId = + prefix && looksLikeIssueShortId(prefix) && !looksLikeIssueShortId(id); + if (afterShortId && (ID_KINDS.event.isId(id) || !isAllDigits(id))) { + return { + eventId: ID_KINDS.event.validate(id), + targetArg: undefined, + issueShortId: prefix, + }; + } + return issueFromEventId(id, target); } // `[/] `: the event of an issue. A // second argument with a slash is a target: the arguments are reversed. diff --git a/packages/cli/test/commands/event/view.test.ts b/packages/cli/test/commands/event/view.test.ts index 949c2ad68..7d3af40a7 100644 --- a/packages/cli/test/commands/event/view.test.ts +++ b/packages/cli/test/commands/event/view.test.ts @@ -248,6 +248,14 @@ describe("parseEventViewInput", () => { expect(result.targetArg).toBe("my-org/frontend"); }); + test("reads an all-digit event ID after / as the issue's event", () => { + const eventId = "12345678901234567890123456789012"; + const result = parseEventViewInput([`CAM-82X/${eventId}`]); + expect(result.eventId).toBe(eventId); + expect(result.issueShortId).toBe("CAM-82X"); + expect(result.issueId).toBeUndefined(); + }); + test("rejects an incomplete event ID after /", () => { // Not project `CAM-82X` with a partial event ID to recover expect(() => parseEventViewInput(["CAM-82X/95fd7f5a"])).toThrow(