dev-tools/mage/gotool/modules.go (32 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License 2.0;
// you may not use this file except in compliance with the Elastic License 2.0.
package gotool
// Mod is the command go mod.
var Mod = goMod{
Download: modCommand{"download"}.run,
Init: modCommand{"init"}.run,
Tidy: modCommand{"tidy"}.run,
Verify: modCommand{"verify"}.run,
Vendor: modCommand{"vendor"}.run,
}
type modCommand struct {
method string
}
func (cmd modCommand) run(opts ...ArgOpt) error {
o := make([]ArgOpt, len(opts)+1)
o[0] = posArg(cmd.method)
for i, opt := range opts {
o[i+1] = opt
}
args := buildArgs(o)
return runVGo("mod", args)
}
type goMod struct {
Download modDownload
Init modInit
Tidy modTidy
Verify modVerify
Vendor modVendor
}
// modDownload cleans the go.mod file
type modDownload func(opts ...ArgOpt) error
// modInit initializes a new go module in folder.
type modInit func(opts ...ArgOpt) error
// modTidy cleans the go.mod file
type modTidy func(opts ...ArgOpt) error
// modVerify check that deps have the expected content.
type modVerify func(opts ...ArgOpt) error
// modVendor downloads and copies dependencies under the folder vendor.
type modVendor func(opts ...ArgOpt) error