Files
pmg/cmd/npm/common.go
T

63 lines
2.2 KiB
Go
Raw Normal View History

package npm
import (
"context"
"fmt"
"github.com/safedep/pmg/analyzer"
2025-05-14 16:09:29 +05:30
"github.com/safedep/pmg/config"
"github.com/safedep/pmg/guard"
2025-05-14 14:01:20 +05:30
"github.com/safedep/pmg/internal/ui"
"github.com/safedep/pmg/packagemanager"
)
2025-05-14 16:09:29 +05:30
func executeCommonFlow(ctx context.Context, config config.Config, pm packagemanager.PackageManager, args []string) error {
packageResolverConfig := packagemanager.NewDefaultNpmDependencyResolverConfig()
packageResolverConfig.IncludeTransitiveDependencies = config.Transitive
packageResolverConfig.TransitiveDepth = config.TransitiveDepth
packageResolverConfig.IncludeDevDependencies = config.IncludeDevDependencies
2025-05-14 16:09:29 +05:30
packageResolver, err := packagemanager.NewNpmDependencyResolver(packageResolverConfig)
if err != nil {
return fmt.Errorf("failed to create npm dependency resolver: %w", err)
}
2025-05-14 12:46:24 +05:30
malysisQueryAnalyzer, err := analyzer.NewMalysisQueryAnalyzer(analyzer.MalysisQueryAnalyzerConfig{})
if err != nil {
return fmt.Errorf("failed to create malysis query analyzer: %w", err)
}
2025-05-14 14:01:20 +05:30
interaction := guard.PackageManagerGuardInteraction{
SetStatus: ui.SetStatus,
ClearStatus: ui.ClearStatus,
GetConfirmationOnMalware: ui.GetConfirmationOnMalware,
Block: ui.Block,
}
2025-05-14 12:46:24 +05:30
proxy, err := guard.NewPackageManagerGuard(guard.DefaultPackageManagerGuardConfig(),
2025-05-14 18:56:58 +05:30
pm, packageResolver, []analyzer.PackageVersionAnalyzer{malysisQueryAnalyzer}, interaction)
if err != nil {
return fmt.Errorf("failed to create package manager guard: %w", err)
}
2025-05-14 16:09:29 +05:30
return proxy.Run(ctx, args)
}
2025-05-14 16:09:29 +05:30
func executeNpmFlow(ctx context.Context, config config.Config, args []string) error {
packageManager, err := packagemanager.NewNpmPackageManager(packagemanager.DefaultNpmPackageManagerConfig())
if err != nil {
return fmt.Errorf("failed to create npm package manager: %w", err)
}
2025-05-14 16:09:29 +05:30
return executeCommonFlow(ctx, config, packageManager, args)
}
2025-05-14 16:09:29 +05:30
func executePnpmFlow(ctx context.Context, config config.Config, args []string) error {
packageManager, err := packagemanager.NewNpmPackageManager(packagemanager.DefaultPnpmPackageManagerConfig())
if err != nil {
return fmt.Errorf("failed to create pnpm package manager: %w", err)
}
2025-05-14 16:09:29 +05:30
return executeCommonFlow(ctx, config, packageManager, args)
}