Fix progress line not clearing before final status
This commit is contained in:
parent
21028af9aa
commit
45201509ff
@ -3,6 +3,7 @@ package cli
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/spf13/afero"
|
"github.com/spf13/afero"
|
||||||
@ -28,9 +29,12 @@ func (mfa *CLIApp) generateManifestOperation(ctx *cli.Context) error {
|
|||||||
|
|
||||||
// Set up enumeration progress reporting
|
// Set up enumeration progress reporting
|
||||||
var enumProgress chan scanner.EnumerateStatus
|
var enumProgress chan scanner.EnumerateStatus
|
||||||
|
var enumWg sync.WaitGroup
|
||||||
if showProgress {
|
if showProgress {
|
||||||
enumProgress = make(chan scanner.EnumerateStatus, 1)
|
enumProgress = make(chan scanner.EnumerateStatus, 1)
|
||||||
|
enumWg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
|
defer enumWg.Done()
|
||||||
for status := range enumProgress {
|
for status := range enumProgress {
|
||||||
log.Progressf("Enumerating: %d files, %.1f MB",
|
log.Progressf("Enumerating: %d files, %.1f MB",
|
||||||
status.FilesFound,
|
status.FilesFound,
|
||||||
@ -60,6 +64,7 @@ func (mfa *CLIApp) generateManifestOperation(ctx *cli.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
enumWg.Wait()
|
||||||
|
|
||||||
log.Debugf("enumerated %d files, %d bytes total", s.FileCount(), s.TotalBytes())
|
log.Debugf("enumerated %d files, %d bytes total", s.FileCount(), s.TotalBytes())
|
||||||
|
|
||||||
@ -80,9 +85,12 @@ func (mfa *CLIApp) generateManifestOperation(ctx *cli.Context) error {
|
|||||||
|
|
||||||
// Phase 2: Scan - read file contents and generate manifest
|
// Phase 2: Scan - read file contents and generate manifest
|
||||||
var scanProgress chan scanner.ScanStatus
|
var scanProgress chan scanner.ScanStatus
|
||||||
|
var scanWg sync.WaitGroup
|
||||||
if showProgress {
|
if showProgress {
|
||||||
scanProgress = make(chan scanner.ScanStatus, 1)
|
scanProgress = make(chan scanner.ScanStatus, 1)
|
||||||
|
scanWg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
|
defer scanWg.Done()
|
||||||
for status := range scanProgress {
|
for status := range scanProgress {
|
||||||
if status.ETA > 0 {
|
if status.ETA > 0 {
|
||||||
log.Progressf("Scanning: %d/%d files, %.1f MB/s, ETA %s",
|
log.Progressf("Scanning: %d/%d files, %.1f MB/s, ETA %s",
|
||||||
@ -102,6 +110,7 @@ func (mfa *CLIApp) generateManifestOperation(ctx *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = s.ToManifest(ctx.Context, outFile, scanProgress)
|
err = s.ToManifest(ctx.Context, outFile, scanProgress)
|
||||||
|
scanWg.Wait()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to generate manifest: %w", err)
|
return fmt.Errorf("failed to generate manifest: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user