| // Copyright 2022 The Go 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 workcmd |
| |
| import ( |
| "cmd/go/internal/base" |
| "cmd/go/internal/cfg" |
| "cmd/go/internal/modcmd" |
| "cmd/go/internal/modload" |
| "context" |
| ) |
| |
| var cmdVendor = &base.Command{ |
| UsageLine: "go work vendor [-e] [-v] [-o outdir]", |
| Short: "make vendored copy of dependencies", |
| Long: ` |
| Vendor resets the workspace's vendor directory to include all packages |
| needed to build and test all the workspace's packages. |
| It does not include test code for vendored packages. |
| |
| The -v flag causes vendor to print the names of vendored |
| modules and packages to standard error. |
| |
| The -e flag causes vendor to attempt to proceed despite errors |
| encountered while loading packages. |
| |
| The -o flag causes vendor to create the vendor directory at the given |
| path instead of "vendor". The go command can only use a vendor directory |
| named "vendor" within the module root directory, so this flag is |
| primarily useful for other tools.`, |
| |
| Run: runVendor, |
| } |
| |
| var vendorE bool // if true, report errors but proceed anyway |
| var vendorO string // if set, overrides the default output directory |
| |
| func init() { |
| cmdVendor.Flag.BoolVar(&cfg.BuildV, "v", false, "") |
| cmdVendor.Flag.BoolVar(&vendorE, "e", false, "") |
| cmdVendor.Flag.StringVar(&vendorO, "o", "", "") |
| base.AddChdirFlag(&cmdVendor.Flag) |
| base.AddModCommonFlags(&cmdVendor.Flag) |
| } |
| |
| func runVendor(ctx context.Context, cmd *base.Command, args []string) { |
| modload.InitWorkfile() |
| if modload.WorkFilePath() == "" { |
| base.Fatalf("go: no go.work file found\n\t(run 'go work init' first or specify path using GOWORK environment variable)") |
| } |
| |
| modcmd.RunVendor(ctx, vendorE, vendorO, args) |
| } |