fix: Revise progress tracking mechanism

This commit is contained in:
Sahilb315
2025-05-05 01:42:14 +05:30
parent 88f39b56ff
commit 90334a91f2
2 changed files with 31 additions and 4 deletions
+20
View File
@@ -5,9 +5,11 @@ import (
"encoding/json"
"fmt"
"sync"
"sync/atomic"
"time"
"github.com/safedep/dry/log"
"github.com/safedep/pmg/internal/ui"
"github.com/safedep/pmg/pkg/common/utils"
"github.com/safedep/pmg/pkg/models"
)
@@ -15,6 +17,22 @@ import (
// NpmFetcher fetches dependencies from NPM registry
type NpmFetcher struct {
*BaseFetcher
progressTracker ui.ProgressTracker
mu sync.Mutex
fetchedDeps int32
}
func (nf *NpmFetcher) SetProgressTracker(tracker ui.ProgressTracker) {
nf.progressTracker = tracker
atomic.StoreInt32(&nf.fetchedDeps, 0)
}
func (nf *NpmFetcher) incrementProgress() {
if nf.progressTracker != nil {
atomic.AddInt32(&nf.fetchedDeps, 1)
// Update progress message to show number of packages fetched
ui.SetPinnedMessageOnProgressWriter(fmt.Sprintf("Fetched %d packages", atomic.LoadInt32(&nf.fetchedDeps)))
}
}
// NewNpmFetcher creates a new NPM registry fetcher
@@ -92,6 +110,8 @@ func (nf *NpmFetcher) fetchDependenciesConcurrent(ctx context.Context, pkg model
return nil, fmt.Errorf("failed to fetch package info for %s: %w", pkg.Name, err)
}
nf.incrementProgress()
dependencies := packageInfo.Dependencies
node := &models.DependencyNode{
Name: pkg.Name,