Move release mechanics behind the public facade

This commit is contained in:
2026-10-06 00:58:22 +00:00
parent b4d348dd1f
commit 4dee2841e0
10 changed files with 78 additions and 80 deletions

View File

@@ -59,20 +59,12 @@ type BuildResult struct {
// empty target set records source identity without running the Go toolchain.
// Errors return partial build facts in the result.
func Build(ctx context.Context, request BuildRequest) (BuildResult, error) {
targets := make([]internalbuild.Target, 0, len(request.Spec.Targets))
for _, target := range request.Spec.Targets {
targets = append(targets, internalbuild.Target{OS: target.OS, Arch: target.Arch})
}
result, err := internalbuild.Build(ctx, internalbuild.Request{
RepositoryDir: request.RepositoryDir,
Version: request.Version,
Spec: internalbuild.Spec{
MainPackage: request.Spec.MainPackage,
BinaryName: request.Spec.BinaryName,
Targets: targets,
},
OutputDir: request.OutputDir,
Output: request.Output,
Spec: *internalBuildSpec(&request.Spec),
OutputDir: request.OutputDir,
Output: request.Output,
})
public := BuildResult{
RepositoryDir: result.RepositoryDir,
@@ -99,3 +91,25 @@ func Build(ctx context.Context, request BuildRequest) (BuildResult, error) {
}
return public, err
}
func internalBuildSpec(spec *BuildSpec) *internalbuild.Spec {
if spec == nil {
return nil
}
result := &internalbuild.Spec{MainPackage: spec.MainPackage, BinaryName: spec.BinaryName}
for _, target := range spec.Targets {
result.Targets = append(result.Targets, internalbuild.Target{OS: target.OS, Arch: target.Arch})
}
return result
}
func internalBuildResult(result BuildResult) *internalbuild.Result {
converted := &internalbuild.Result{RepositoryDir: result.RepositoryDir, CandidateCommit: result.CandidateCommit, SourceVerified: result.SourceVerified, Version: result.Version, MainPackage: result.MainPackage, BinaryName: result.BinaryName, OutputDir: result.OutputDir, Compiler: result.Compiler}
for _, target := range result.Targets {
converted.Targets = append(converted.Targets, internalbuild.Target{OS: target.OS, Arch: target.Arch})
}
for _, artifact := range result.Artifacts {
converted.Artifacts = append(converted.Artifacts, internalbuild.Artifact{Path: artifact.Path, Filename: artifact.Filename, Target: internalbuild.Target{OS: artifact.Target.OS, Arch: artifact.Target.Arch}, SHA256: artifact.SHA256})
}
return converted
}