feat: add progress bar to restore operation #23

Merged
sneak merged 3 commits from feat/restore-progress-bar into main 2026-03-17 11:18:19 +01:00
Showing only changes of commit 01c349ada1 - Show all commits

View File

@@ -123,7 +123,7 @@ func (v *Vaultik) Restore(opts *RestoreOptions) error {
// Create progress bar if output is a terminal
var bar *progressbar.ProgressBar
if isTerminal() {
if v.isTerminal() {
bar = progressbar.NewOptions64(
totalBytesExpected,
progressbar.OptionSetDescription("Restoring"),
@@ -573,7 +573,7 @@ func (v *Vaultik) verifyRestoredFiles(
// Create progress bar if output is a terminal
var bar *progressbar.ProgressBar
if isTerminal() {
if v.isTerminal() {
bar = progressbar.NewOptions64(
totalBytes,
progressbar.OptionSetDescription("Verifying"),
@@ -681,7 +681,16 @@ func (v *Vaultik) verifyFile(
return bytesVerified, nil
}
// isTerminal returns true if stdout is a terminal
func isTerminal() bool {
return term.IsTerminal(int(os.Stdout.Fd()))
// isTerminal returns true if stdout is a terminal.
// It checks whether v.Stdout implements Fd() (i.e. is an *os.File),
// and falls back to false for non-file writers (e.g. in tests).
func (v *Vaultik) isTerminal() bool {
type fder interface {
Fd() uintptr
}
f, ok := v.Stdout.(fder)
if !ok {
return false
}
return term.IsTerminal(int(f.Fd()))
}