blob: 5618c7dafa1f3702a2f329269c8f7b1d205352b4 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package artifacts
import (
"context"
"fmt"
"strings"
"golang.org/x/crypto/ssh"
"go.fuchsia.dev/fuchsia/src/testing/host-target-testing/util"
)
// Builder allows fetching build information from a specific builder.
type Builder struct {
archive *Archive
name string
}
// LookupBuildID looks up the latest build id for a given builder.
func (b *Builder) GetLatestBuildID(ctx context.Context) (string, error) {
stdout, stderr, err := util.RunCommand(ctx, b.archive.lkgPath, "build", "-builder", b.name)
if err != nil {
return "", fmt.Errorf("lkg failed: %w: %s", err, string(stderr))
}
return strings.TrimRight(string(stdout), "\n"), nil
}
// GetLatestBuild looks up the latest build for a given builder.
func (b *Builder) GetLatestBuild(ctx context.Context, dir string, publicKey ssh.PublicKey) (*ArtifactsBuild, error) {
id, err := b.GetLatestBuildID(ctx)
if err != nil {
return nil, err
}
return b.archive.GetBuildByID(ctx, id, dir, publicKey)
}
func (b *Builder) String() string {
return b.name
}