Anchor dependency preparation to checkout root
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"go.maximumdirect.net/releasekit/internal/git"
|
||||
internalpreparation "go.maximumdirect.net/releasekit/internal/preparation"
|
||||
"go.maximumdirect.net/releasekit/internal/releaseidentity"
|
||||
)
|
||||
@@ -37,11 +38,13 @@ func PrepareTaggedCheckout(ctx context.Context, request TaggedCheckoutRequest) e
|
||||
}
|
||||
|
||||
// DependencyPreparationRequest selects the repository module whose dependencies
|
||||
// should be prepared.
|
||||
// should be prepared. Within a checkout, RepositoryDir may name any directory
|
||||
// in it; ModuleDir is resolved from the checkout root. Outside a checkout,
|
||||
// ModuleDir is resolved from RepositoryDir.
|
||||
type DependencyPreparationRequest struct {
|
||||
RepositoryDir string
|
||||
// ModuleDir selects a repository-relative module directory; empty selects
|
||||
// the repository root.
|
||||
// ModuleDir selects a directory relative to the checkout root or standalone
|
||||
// RepositoryDir; empty selects that base.
|
||||
ModuleDir string
|
||||
}
|
||||
|
||||
@@ -55,7 +58,15 @@ func PrepareBuildDependencies(ctx context.Context, request DependencyPreparation
|
||||
if strings.TrimSpace(request.RepositoryDir) == "" {
|
||||
return errors.New("repository directory is required")
|
||||
}
|
||||
selection, err := releaseidentity.ResolveSelection(request.RepositoryDir, request.ModuleDir)
|
||||
base := request.RepositoryDir
|
||||
root, found, err := git.DiscoverRepositoryRoot(ctx, base)
|
||||
if err != nil {
|
||||
return fmt.Errorf("discover dependency preparation repository: %w", err)
|
||||
}
|
||||
if found {
|
||||
base = root
|
||||
}
|
||||
selection, err := releaseidentity.ResolveSelection(base, request.ModuleDir)
|
||||
if err != nil {
|
||||
return fmt.Errorf("resolve dependency preparation module: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user