44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
// Package preparation coordinates explicit local checkout and Go module
|
|
// preparation operations for consumers and CI adapters.
|
|
package preparation
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"gitea.maximumdirect.net/eric/ReleaseKit/internal/candidate"
|
|
"gitea.maximumdirect.net/eric/ReleaseKit/internal/git"
|
|
"gitea.maximumdirect.net/eric/ReleaseKit/internal/gotool"
|
|
"gitea.maximumdirect.net/eric/ReleaseKit/internal/versioncontract"
|
|
)
|
|
|
|
type TaggedCheckoutRequest struct {
|
|
RepositoryDir string
|
|
Version string
|
|
Remote string
|
|
ExpectedCommit string
|
|
}
|
|
|
|
func PrepareTaggedCheckout(ctx context.Context, request TaggedCheckoutRequest) error {
|
|
if !versioncontract.ValidStableVersion(request.Version) {
|
|
return fmt.Errorf("%w: %q", candidate.ErrInvalidVersion, request.Version)
|
|
}
|
|
if strings.TrimSpace(request.ExpectedCommit) == "" {
|
|
return errors.New("expected commit is required")
|
|
}
|
|
remote := request.Remote
|
|
if remote == "" {
|
|
remote = "origin"
|
|
}
|
|
return git.PrepareTaggedCheckout(ctx, request.RepositoryDir, request.Version, remote, request.ExpectedCommit)
|
|
}
|
|
|
|
func PrepareBuildDependencies(ctx context.Context, repositoryDir string) error {
|
|
if strings.TrimSpace(repositoryDir) == "" {
|
|
return errors.New("repository directory is required")
|
|
}
|
|
return gotool.PrepareBuildDependencies(ctx, repositoryDir)
|
|
}
|