Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions pkg/cli/add_package_manifest_imports.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ func resolveRepositoryPackageManifestGraph(
rootPackagePath = ""
}

addPackageManifestLog.Printf("Resolving package manifest import graph: root=%s", rootPath)

resolver := &repositoryPackageManifestGraphResolver{
rootPackagePath: rootPackagePath,
readManifest: readManifest,
Expand All @@ -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
}

Expand All @@ -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
Expand Down Expand Up @@ -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))
Expand Down
3 changes: 3 additions & 0 deletions pkg/cli/add_project_file.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
}

Expand Down