blob: d61495e20c6c362912d2aa0147fc7d8f87eb0363 [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 checkout
import (
"context"
"net/url"
"os"
buildbucketpb "go.chromium.org/luci/buildbucket/proto"
"go.fuchsia.dev/infra/execution"
)
// Checkout checks out the git repo at repoURL according to the given build
// input.
//
// defaultRevision specifies the revision to check out if the build was
// triggered by a commit or change on a *different* repository, in which case we
// can't use the build input to determine which revision of `repoURL` to check
// out.
func Checkout(ctx context.Context, input *buildbucketpb.Build_Input, repoURL url.URL, defaultRevision, dir string) error {
strat, err := newStrategy(input, repoURL, defaultRevision)
if err != nil {
return err
}
// Write everything to stderr. luciexe expects the stdout of the
// recipe_bootstrap tool to be a proto.
executor := execution.NewExecutor(os.Stderr, os.Stderr, dir)
return strat.Checkout(ctx, executor)
}