diff --git a/pkg/cli/add_package_manifest_imports.go b/pkg/cli/add_package_manifest_imports.go index 5238639d52a..f2b62d0c710 100644 --- a/pkg/cli/add_package_manifest_imports.go +++ b/pkg/cli/add_package_manifest_imports.go @@ -60,6 +60,8 @@ func resolveRepositoryPackageManifestGraph( rootPackagePath = "" } + addPackageManifestLog.Printf("Resolving package manifest import graph: root=%s", rootPath) + resolver := &repositoryPackageManifestGraphResolver{ rootPackagePath: rootPackagePath, readManifest: readManifest, @@ -68,6 +70,7 @@ func resolveRepositoryPackageManifestGraph( if err := resolver.visit(rootPath, root); err != nil { return nil, nil, err } + addPackageManifestLog.Printf("Resolved package manifest import graph: %d node(s), %d warning(s)", len(resolver.nodes), len(resolver.warnings)) return resolver.nodes, resolver.warnings, nil } @@ -82,6 +85,7 @@ func (r *repositoryPackageManifestGraphResolver) visit(manifestPath string, mani } } cycle := append(append([]string{}, r.stack[cycleStart:]...), manifestPath) + addPackageManifestLog.Printf("Import cycle detected: %s", strings.Join(cycle, " -> ")) return fmt.Errorf("package manifest import cycle detected: %s", strings.Join(cycle, " -> ")) case 2: return nil @@ -198,6 +202,7 @@ func readLocalImportedManifest(manifestPath, packageRoot string) ([]byte, error) return nil, err } if relative == ".." || strings.HasPrefix(relative, ".."+string(os.PathSeparator)) { + addPackageManifestLog.Printf("Rejecting imported manifest %q: resolves outside package root %q", manifestPath, packageRoot) return nil, fmt.Errorf("import %q resolves outside the package root", manifestPath) } declaredRelative, err := filepath.Rel(filepath.Clean(packageRoot), filepath.Clean(manifestPath)) diff --git a/pkg/cli/add_project_file.go b/pkg/cli/add_project_file.go index 8a6f329413d..e7d7e0c9569 100644 --- a/pkg/cli/add_project_file.go +++ b/pkg/cli/add_project_file.go @@ -19,10 +19,12 @@ func mergeProjectFileWithTracking(resolved *ResolvedWorkflow, tracker *FileTrack destFile := filepath.Join(gitRoot, workflow.RepoConfigFileName) existing := []byte("{}") fileExists := fileutil.FileExists(destFile) + addLog.Printf("Merging package project file: dest=%s, exists=%t", destFile, fileExists) if err := fileutil.ValidatePathWithinBase(gitRoot, destFile); err != nil { return fmt.Errorf("failed to validate project file destination %q: %w", workflow.RepoConfigFileName, err) } if info, err := os.Lstat(destFile); err == nil && info.Mode()&os.ModeSymlink != 0 { + addLog.Printf("Refusing to merge project file %q: destination is a symbolic link", destFile) return fmt.Errorf("project file destination %q is a symbolic link, which is not allowed", workflow.RepoConfigFileName) } if fileExists { @@ -61,6 +63,7 @@ func mergeProjectFileWithTracking(resolved *ResolvedWorkflow, tracker *FileTrack if err := os.WriteFile(destFile, merged, constants.FilePermPublic); err != nil { return fmt.Errorf("failed to write project file %q: %w", workflow.RepoConfigFileName, err) } + addLog.Printf("Wrote merged project file: dest=%s, size=%d bytes", destFile, len(merged)) return nil }