fix: NullIndicator for truly silent TUI mode - no stdout at all

This commit is contained in:
2025-11-05 13:55:41 +00:00
parent e2596c4207
commit a5560fd6b1
14 changed files with 32 additions and 6 deletions

View File

@ -4,8 +4,8 @@ This directory contains pre-compiled binaries for the DB Backup Tool across mult
## Build Information
- **Version**: 1.1.0
- **Build Time**: 2025-11-05_13:46:28_UTC
- **Git Commit**: 07b3c74
- **Build Time**: 2025-11-05_13:55:03_UTC
- **Git Commit**: e2596c4
## Recent Updates (v1.1.0)
- ✅ Fixed TUI progress display with line-by-line output

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
dbbackup

Binary file not shown.

View File

@ -62,6 +62,11 @@ func NewWithProgress(cfg *config.Config, log logger.Logger, db database.Database
// NewSilent creates a new backup engine in silent mode (for TUI)
func NewSilent(cfg *config.Config, log logger.Logger, db database.Database, progressIndicator progress.Indicator) *Engine {
// If no indicator provided, use null indicator (no output)
if progressIndicator == nil {
progressIndicator = progress.NewNullIndicator()
}
detailedReporter := progress.NewDetailedReporter(progressIndicator, &loggerAdapter{logger: log})
return &Engine{
@ -278,9 +283,16 @@ func (e *Engine) BackupCluster(ctx context.Context) error {
}
}
// Use a quiet progress indicator to avoid duplicate messages
quietProgress := progress.NewQuietLineByLine()
quietProgress.Start("Starting cluster backup (all databases)")
// Use appropriate progress indicator based on silent mode
var quietProgress progress.Indicator
if e.silent {
// In silent mode (TUI), use null indicator - no stdout output at all
quietProgress = progress.NewNullIndicator()
} else {
// In CLI mode, use quiet line-by-line output
quietProgress = progress.NewQuietLineByLine()
quietProgress.Start("Starting cluster backup (all databases)")
}
// Ensure backup directory exists
if err := os.MkdirAll(e.cfg.BackupDir, 0755); err != nil {

View File

@ -396,3 +396,17 @@ func NewIndicator(interactive bool, indicatorType string) Indicator {
return NewLineByLine() // Default to line-by-line for better compatibility
}
}
// NullIndicator is a no-op indicator that produces no output (for TUI mode)
type NullIndicator struct{}
// NewNullIndicator creates an indicator that does nothing
func NewNullIndicator() *NullIndicator {
return &NullIndicator{}
}
func (n *NullIndicator) Start(message string) {}
func (n *NullIndicator) Update(message string) {}
func (n *NullIndicator) Complete(message string) {}
func (n *NullIndicator) Fail(message string) {}
func (n *NullIndicator) Stop() {}