feat(mail): Add --quiet flag to gt mail check

Add --quiet (-q) flag for scripted mail checks:
- Outputs "N new message(s)" only when mail exists
- Silent output when no mail (exit 1)
- Fixes usage output being shown on exit 1

(gt-d46.1)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
ace
2026-01-01 23:15:55 -08:00
committed by Steve Yegge
parent 918fcc34fa
commit 57f0559359

View File

@@ -42,6 +42,7 @@ var (
mailInboxIdentity string
mailCheckInject bool
mailCheckJSON bool
mailCheckQuiet bool
mailCheckIdentity string
mailThreadJSON bool
mailReplySubject string
@@ -221,6 +222,10 @@ Exit codes (normal mode):
0 - New mail available
1 - No new mail
Exit codes (--quiet mode):
0 - New mail available (outputs count)
1 - No new mail (silent)
Exit codes (--inject mode):
0 - Always (hooks should never block)
Output: system-reminder if mail exists, silent if no mail
@@ -229,6 +234,7 @@ Use --identity for polecats to explicitly specify their identity.
Examples:
gt mail check # Simple check (auto-detect identity)
gt mail check --quiet # For scripts (only output if new mail)
gt mail check --inject # For hooks
gt mail check --identity greenplace/Toast # Explicit polecat identity`,
RunE: runMailCheck,
@@ -413,6 +419,7 @@ func init() {
// Check flags
mailCheckCmd.Flags().BoolVar(&mailCheckInject, "inject", false, "Output format for Claude Code hooks")
mailCheckCmd.Flags().BoolVar(&mailCheckJSON, "json", false, "Output as JSON")
mailCheckCmd.Flags().BoolVarP(&mailCheckQuiet, "quiet", "q", false, "Only output if new mail (for scripts)")
mailCheckCmd.Flags().StringVar(&mailCheckIdentity, "identity", "", "Explicit identity for inbox (e.g., greenplace/Toast)")
mailCheckCmd.Flags().StringVar(&mailCheckIdentity, "address", "", "Alias for --identity")
@@ -1248,12 +1255,24 @@ func runMailCheck(cmd *cobra.Command, args []string) error {
return nil
}
// Normal mode
// Normal mode (or quiet mode)
if unread > 0 {
fmt.Printf("%s %d unread message(s)\n", style.Bold.Render("📬"), unread)
return NewSilentExit(0)
if mailCheckQuiet {
fmt.Printf("%d new message(s)\n", unread)
} else {
fmt.Printf("%s %d unread message(s)\n", style.Bold.Render("📬"), unread)
}
return nil // Success - exit 0
}
// No mail case
if mailCheckQuiet {
// Quiet mode: silence usage output on non-zero exit
cmd.SilenceUsage = true
return NewSilentExit(1)
}
fmt.Println("No new mail")
cmd.SilenceUsage = true
return NewSilentExit(1)
}