Skip to content

Commit 597d67e

Browse files
feat: integrate emoji detection in revert command
• Update displayRevertCommitList and displayRevertConfirmation to strip emojis • Detect emoji support independently in revert command • Adapt commit subject display based on terminal capabilities • Update revert success messages to use emoji-stripped display • Ensure clean output on non-emoji terminals
1 parent b5c00f9 commit 597d67e

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/cli/commands/revert/index.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import { Command } from "commander";
88
import { Logger } from "../../../lib/logger.js";
99
import { loadConfig } from "../../../lib/config/index.js";
10+
import { detectEmojiSupport, formatForDisplay } from "../../../lib/util/emoji.js";
1011
import {
1112
isGitRepository,
1213
getCurrentBranch,
@@ -133,6 +134,7 @@ export async function revertCommit(
133134
}
134135

135136
const config = configResult.config;
137+
const emojiModeActive = configResult.emojiModeActive;
136138

137139
// Get commit details
138140
const commit = getCommitDetails(commitHash);
@@ -151,7 +153,7 @@ export async function revertCommit(
151153

152154
// Show confirmation
153155
clearTerminal();
154-
displayRevertConfirmation(commit);
156+
displayRevertConfirmation(commit, emojiModeActive);
155157

156158
let useWorkflow = !options?.noEdit;
157159
if (useWorkflow) {
@@ -241,7 +243,7 @@ export async function revertCommit(
241243
subject,
242244
);
243245

244-
action = await displayPreview(formattedMessage, body, config);
246+
action = await displayPreview(formattedMessage, body, config, emojiModeActive);
245247

246248
if (action === "edit-type") {
247249
const typeResult = await promptType(config, undefined, type);
@@ -305,7 +307,8 @@ export async function revertCommit(
305307
hashResult.stdout?.toString().trim().substring(0, 7) || "unknown";
306308

307309
console.log(`${success("✓")} Revert commit created successfully!`);
308-
console.log(` ${revertHash} ${formattedMessage}`);
310+
const displayMessage = formatForDisplay(formattedMessage, emojiModeActive);
311+
console.log(` ${revertHash} ${displayMessage}`);
309312
} catch (error: unknown) {
310313
// Check if it's a conflict
311314
if (error instanceof Error && error.message.includes("conflict")) {
@@ -394,6 +397,9 @@ async function revertAction(options: {
394397
process.exit(1);
395398
}
396399

400+
// Detect emoji support for display (always detect, even if no config)
401+
const emojiModeActive = detectEmojiSupport();
402+
397403
// Check for config if --no-edit is not used (config needed for commit workflow)
398404
if (!options.noEdit) {
399405
const configResult = await loadConfig();
@@ -483,6 +489,7 @@ async function revertAction(options: {
483489
hasMore,
484490
hasPreviousPage,
485491
hasMorePages,
492+
emojiModeActive,
486493
);
487494

488495
// Build navigation hints

src/cli/commands/revert/prompts.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import { select, confirm, isCancel } from "@clack/prompts";
88
import { labelColors, textColors, success, attention } from "../init/colors.js";
9+
import { formatForDisplay } from "../../../lib/util/emoji.js";
910
import type { CommitInfo, MergeParent } from "../shared/types.js";
1011

1112
/**
@@ -54,6 +55,7 @@ export function displayRevertCommitList(
5455
hasMore: boolean,
5556
hasPreviousPage: boolean = false,
5657
hasMorePages: boolean = false,
58+
emojiModeActive: boolean = true,
5759
): void {
5860
console.log();
5961
console.log(
@@ -71,10 +73,11 @@ export function displayRevertCommitList(
7173
const commit = commits[i];
7274
const number = i.toString();
7375
const mergeIndicator = commit.isMerge ? " [Merge]" : "";
76+
const displaySubject = formatForDisplay(commit.subject, emojiModeActive);
7477
const truncatedSubject =
75-
commit.subject.length > 50
76-
? commit.subject.substring(0, 47) + "..."
77-
: commit.subject;
78+
displaySubject.length > 50
79+
? displaySubject.substring(0, 47) + "..."
80+
: displaySubject;
7881

7982
console.log(
8083
` ${textColors.brightCyan(`[${number}]`)} ${textColors.brightWhite(commit.shortHash)} ${truncatedSubject}${mergeIndicator}`,
@@ -124,7 +127,10 @@ export async function promptMergeParent(
124127
/**
125128
* Display revert confirmation
126129
*/
127-
export function displayRevertConfirmation(commit: CommitInfo): void {
130+
export function displayRevertConfirmation(
131+
commit: CommitInfo,
132+
emojiModeActive: boolean = true,
133+
): void {
128134
console.log();
129135
console.log(
130136
`${label("confirm", "green")} ${textColors.pureWhite("Revert Confirmation")}`,
@@ -133,7 +139,8 @@ export function displayRevertConfirmation(commit: CommitInfo): void {
133139
console.log(
134140
` ${textColors.brightWhite("Reverting commit:")} ${commit.shortHash}`,
135141
);
136-
console.log(` ${textColors.brightWhite("Original:")} ${commit.subject}`);
142+
const displaySubject = formatForDisplay(commit.subject, emojiModeActive);
143+
console.log(` ${textColors.brightWhite("Original:")} ${displaySubject}`);
137144
console.log();
138145
console.log(
139146
` ${attention("This will create a new commit that undoes these changes.")}`,

0 commit comments

Comments
 (0)