blob: 6afc973902c8e3e7deb07de0d078bafcd1b93b53 [file] [log] [blame]
// Copyright 2018 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 resolveFlags struct {
lockFilePath string
localManifestFlag bool
enablePackageLock bool
enableProjectLock bool
}
var cmdResolve = &cmdline.Command{
Runner: jiri.RunnerFunc(runResolve),
Name: "resolve",
Short: "Generate jiri lockfile",
Long: `
Generate jiri lockfile in json format for <manifest ...>. If no manifest
provided, jiri will use .jiri_manifest by default.
`,
ArgsName: "<manifest ...>",
ArgsLong: "<manifest ...> is a list of manifest files for lockfile generation",
}
func init() {
flags := &cmdResolve.Flags
flags.StringVar(&resolveFlags.lockFilePath, "output", "jiri.lock", "Path to the generated lockfile")
flags.BoolVar(&resolveFlags.localManifestFlag, "local-manifest", false, "Use local manifest")
flags.BoolVar(&resolveFlags.enablePackageLock, "enable-package-lock", true, "Enable resolving packages in lockfile")
flags.BoolVar(&resolveFlags.enableProjectLock, "enable-project-lock", false, "Enable resolving projects in lockfile")
}
func runResolve(jirix *jiri.X, args []string) error {
manifestFiles := make([]string, 0)
if len(args) == 0 {
// Use .jiri_manifest if no manifest file path is present
manifestFiles = append(manifestFiles, jirix.JiriManifestFile())
} else {
for _, m := range args {
manifestFiles = append(manifestFiles, m)
}
}
return project.GenerateJiriLockFile(jirix, manifestFiles, resolveFlags.lockFilePath, resolveFlags.enableProjectLock, resolveFlags.enablePackageLock, resolveFlags.localManifestFlag)
}