blob: c6b7751c1f3b540c2828224c6bfd319c4779b649 [file] [log] [blame]
// Copyright 2017 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 main
import (
"fuchsia.googlesource.com/jiri"
"fuchsia.googlesource.com/jiri/cmdline"
"fuchsia.googlesource.com/jiri/project"
)
var runHooksFlags struct {
localManifest bool
hookTimeout uint
attempts uint
}
var cmdRunHooks = &cmdline.Command{
Runner: jiri.RunnerFunc(runHooks),
Name: "run-hooks",
Short: "Run hooks using local manifest",
Long: `
Run hooks using local manifest JIRI_HEAD version if -local-manifest flag is
false, else it runs hooks using current manifest checkout version.
`,
}
func init() {
cmdRunHooks.Flags.BoolVar(&runHooksFlags.localManifest, "local-manifest", false, "Use local checked out manifest.")
cmdRunHooks.Flags.UintVar(&runHooksFlags.hookTimeout, "hook-timeout", project.DefaultHookTimeout, "Timeout in minutes for running the hooks operation.")
cmdRunHooks.Flags.UintVar(&runHooksFlags.attempts, "attempts", 1, "Number of attempts before failing.")
}
func runHooks(jirix *jiri.X, args []string) error {
localProjects, err := project.LocalProjects(jirix, project.FastScan)
if err != nil {
return err
}
if runHooksFlags.attempts < 1 {
return jirix.UsageErrorf("Number of attempts should be >= 1")
}
jirix.Attempts = runHooksFlags.attempts
// Get hooks.
_, hooks, err := project.LoadManifestFile(jirix, jirix.JiriManifestFile(), localProjects, runHooksFlags.localManifest)
return project.RunHooks(jirix, hooks, runHooksFlags.hookTimeout)
}