Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: client/cmd/cipd/main.go

Issue 1862303004: cipd: shared tag cache (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: Remove caveat, inline help Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/cmd/cipd/friendly.go ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/cmd/cipd/main.go
diff --git a/client/cmd/cipd/main.go b/client/cmd/cipd/main.go
index 137fd39978f56a77d6c221388cead4664eed679e..94d63001d897c5a63973e8d61e6e92340c72182a 100644
--- a/client/cmd/cipd/main.go
+++ b/client/cmd/cipd/main.go
@@ -221,21 +221,23 @@ func makeCLIError(msg string, args ...interface{}) error {
}
////////////////////////////////////////////////////////////////////////////////
-// ServiceOptions mixin.
+// ClientOptions mixin.
-// ServiceOptions defines command line arguments related to communication
-// with the remote service. Subcommands that interact with the network embed it.
-type ServiceOptions struct {
+// ClientOptions defines command line arguments related to CIPD client creation.
+// Subcommands that need a CIPD client embed it.
+type ClientOptions struct {
authFlags authcli.Flags
serviceURL string
+ cacheDir string
}
-func (opts *ServiceOptions) registerFlags(f *flag.FlagSet) {
+func (opts *ClientOptions) registerFlags(f *flag.FlagSet) {
f.StringVar(&opts.serviceURL, "service-url", "", "URL of a backend to use instead of the default one.")
+ f.StringVar(&opts.cacheDir, "cache-dir", "", "Directory for shared cache")
opts.authFlags.Register(f, auth.Options{})
}
-func (opts *ServiceOptions) makeCipdClient(root string) (cipd.Client, error) {
+func (opts *ClientOptions) makeCipdClient(root string) (cipd.Client, error) {
authOpts, err := opts.authFlags.Options()
if err != nil {
return nil, err
@@ -245,6 +247,7 @@ func (opts *ServiceOptions) makeCipdClient(root string) (cipd.Client, error) {
ServiceURL: opts.serviceURL,
Root: root,
Logger: log,
+ CacheDir: opts.cacheDir,
AuthenticatedClientFactory: func() (*http.Client, error) {
return auth.NewAuthenticator(auth.OptionalLogin, authOpts).Client()
},
@@ -597,7 +600,7 @@ var cmdCreate = &subcommands.Command{
c.InputOptions.registerFlags(&c.Flags)
c.RefsOptions.registerFlags(&c.Flags)
c.TagsOptions.registerFlags(&c.Flags)
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.UploadOptions.registerFlags(&c.Flags)
return c
},
@@ -608,7 +611,7 @@ type createRun struct {
InputOptions
RefsOptions
TagsOptions
- ServiceOptions
+ ClientOptions
UploadOptions
}
@@ -616,11 +619,11 @@ func (c *createRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 0, 0) {
return 1
}
- return c.done(buildAndUploadInstance(c.InputOptions, c.RefsOptions, c.TagsOptions, c.ServiceOptions, c.UploadOptions))
+ return c.done(buildAndUploadInstance(c.InputOptions, c.RefsOptions, c.TagsOptions, c.ClientOptions, c.UploadOptions))
}
func buildAndUploadInstance(inputOpts InputOptions, refsOpts RefsOptions,
- tagsOpts TagsOptions, serviceOpts ServiceOptions, uploadOpts UploadOptions) (common.Pin, error) {
+ tagsOpts TagsOptions, clientOpts ClientOptions, uploadOpts UploadOptions) (common.Pin, error) {
f, err := ioutil.TempFile("", "cipd_pkg")
if err != nil {
return common.Pin{}, err
@@ -633,7 +636,7 @@ func buildAndUploadInstance(inputOpts InputOptions, refsOpts RefsOptions,
if err != nil {
return common.Pin{}, err
}
- return registerInstanceFile(f.Name(), refsOpts, tagsOpts, serviceOpts, uploadOpts)
+ return registerInstanceFile(f.Name(), refsOpts, tagsOpts, clientOpts, uploadOpts)
}
////////////////////////////////////////////////////////////////////////////////
@@ -649,7 +652,7 @@ var cmdEnsure = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &ensureRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.rootDir, "root", "<path>", "Path to an installation site root directory.")
c.Flags.StringVar(&c.listFile, "list", "<path>", "A file with a list of '<package name> <version>' pairs.")
return c
@@ -658,7 +661,7 @@ var cmdEnsure = &subcommands.Command{
type ensureRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
rootDir string
listFile string
@@ -668,17 +671,17 @@ func (c *ensureRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 0, 0) {
return 1
}
- currentPins, _, err := ensurePackages(c.rootDir, c.listFile, false, c.ServiceOptions)
+ currentPins, _, err := ensurePackages(c.rootDir, c.listFile, false, c.ClientOptions)
return c.done(currentPins, err)
}
-func ensurePackages(root string, desiredStateFile string, dryRun bool, serviceOpts ServiceOptions) ([]common.Pin, cipd.Actions, error) {
+func ensurePackages(root string, desiredStateFile string, dryRun bool, clientOpts ClientOptions) ([]common.Pin, cipd.Actions, error) {
f, err := os.Open(desiredStateFile)
if err != nil {
return nil, cipd.Actions{}, err
}
defer f.Close()
- client, err := serviceOpts.makeCipdClient(root)
+ client, err := clientOpts.makeCipdClient(root)
if err != nil {
return nil, cipd.Actions{}, err
}
@@ -710,7 +713,7 @@ var cmdPuppetCheckUpdates = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &checkUpdatesRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.rootDir, "root", "<path>", "Path to an installation site root directory.")
c.Flags.StringVar(&c.listFile, "list", "<path>", "A file with a list of '<package name> <version>' pairs.")
return c
@@ -719,7 +722,7 @@ var cmdPuppetCheckUpdates = &subcommands.Command{
type checkUpdatesRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
rootDir string
listFile string
@@ -729,7 +732,7 @@ func (c *checkUpdatesRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 0, 0) {
return 1
}
- _, actions, err := ensurePackages(c.rootDir, c.listFile, true, c.ServiceOptions)
+ _, actions, err := ensurePackages(c.rootDir, c.listFile, true, c.ClientOptions)
if err != nil {
ret := c.done(actions, err)
if errors.IsTransient(err) {
@@ -754,7 +757,7 @@ var cmdResolve = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &resolveRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.version, "version", "<version>", "Package version to resolve.")
return c
},
@@ -762,7 +765,7 @@ var cmdResolve = &subcommands.Command{
type resolveRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
version string
}
@@ -771,11 +774,11 @@ func (c *resolveRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 1, 1) {
return 1
}
- return c.doneWithPins(resolveVersion(args[0], c.version, c.ServiceOptions))
+ return c.doneWithPins(resolveVersion(args[0], c.version, c.ClientOptions))
}
-func resolveVersion(packagePrefix, version string, serviceOpts ServiceOptions) ([]pinInfo, error) {
- client, err := serviceOpts.makeCipdClient("")
+func resolveVersion(packagePrefix, version string, clientOpts ClientOptions) ([]pinInfo, error) {
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return nil, err
}
@@ -800,7 +803,7 @@ var cmdDescribe = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &describeRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.version, "version", "<version>", "Package version to describe.")
return c
},
@@ -808,7 +811,7 @@ var cmdDescribe = &subcommands.Command{
type describeRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
version string
}
@@ -817,11 +820,11 @@ func (c *describeRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 1, 1) {
return 1
}
- return c.done(describeInstance(args[0], c.version, c.ServiceOptions))
+ return c.done(describeInstance(args[0], c.version, c.ClientOptions))
}
-func describeInstance(pkg, version string, serviceOpts ServiceOptions) (*describeOutput, error) {
- client, err := serviceOpts.makeCipdClient("")
+func describeInstance(pkg, version string, clientOpts ClientOptions) (*describeOutput, error) {
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return nil, err
}
@@ -909,7 +912,7 @@ var cmdSetRef = &subcommands.Command{
c := &setRefRun{}
c.registerBaseFlags()
c.RefsOptions.registerFlags(&c.Flags)
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.version, "version", "<version>", "Package version to point the ref to.")
return c
},
@@ -918,7 +921,7 @@ var cmdSetRef = &subcommands.Command{
type setRefRun struct {
Subcommand
RefsOptions
- ServiceOptions
+ ClientOptions
version string
}
@@ -930,7 +933,7 @@ func (c *setRefRun) Run(a subcommands.Application, args []string) int {
if len(c.refs) == 0 {
return c.done(nil, makeCLIError("at least one -ref must be provided"))
}
- return c.doneWithPins(setRefOrTag(args[0], c.version, c.ServiceOptions,
+ return c.doneWithPins(setRefOrTag(args[0], c.version, c.ClientOptions,
func(client cipd.Client, pin common.Pin) error {
for _, ref := range c.refs {
if err := client.SetRefWhenReady(ref, pin); err != nil {
@@ -941,9 +944,9 @@ func (c *setRefRun) Run(a subcommands.Application, args []string) int {
}))
}
-func setRefOrTag(packagePrefix, version string, serviceOpts ServiceOptions,
+func setRefOrTag(packagePrefix, version string, clientOpts ClientOptions,
updatePin func(client cipd.Client, pin common.Pin) error) ([]pinInfo, error) {
- client, err := serviceOpts.makeCipdClient("")
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return nil, err
}
@@ -999,7 +1002,7 @@ var cmdSetTag = &subcommands.Command{
c := &setTagRun{}
c.registerBaseFlags()
c.TagsOptions.registerFlags(&c.Flags)
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.version, "version", "<version>",
"Package version to resolve. Could also be itself a tag or ref")
return c
@@ -1009,7 +1012,7 @@ var cmdSetTag = &subcommands.Command{
type setTagRun struct {
Subcommand
TagsOptions
- ServiceOptions
+ ClientOptions
version string
}
@@ -1021,7 +1024,7 @@ func (c *setTagRun) Run(a subcommands.Application, args []string) int {
if len(c.tags) == 0 {
return c.done(nil, makeCLIError("at least one -tag must be provided"))
}
- return c.done(setRefOrTag(args[0], c.version, c.ServiceOptions,
+ return c.done(setRefOrTag(args[0], c.version, c.ClientOptions,
func(client cipd.Client, pin common.Pin) error {
return client.AttachTagsWhenReady(pin, c.tags)
}))
@@ -1038,7 +1041,7 @@ var cmdListPackages = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &listPackagesRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.BoolVar(&c.recursive, "r", false, "Whether to list packages in subdirectories.")
return c
},
@@ -1046,7 +1049,7 @@ var cmdListPackages = &subcommands.Command{
type listPackagesRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
recursive bool
}
@@ -1059,11 +1062,11 @@ func (c *listPackagesRun) Run(a subcommands.Application, args []string) int {
if len(args) == 1 {
path = args[0]
}
- return c.done(listPackages(path, c.recursive, c.ServiceOptions))
+ return c.done(listPackages(path, c.recursive, c.ClientOptions))
}
-func listPackages(path string, recursive bool, serviceOpts ServiceOptions) ([]string, error) {
- client, err := serviceOpts.makeCipdClient("")
+func listPackages(path string, recursive bool, clientOpts ClientOptions) ([]string, error) {
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return nil, err
}
@@ -1092,7 +1095,7 @@ var cmdSearch = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &searchRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.TagsOptions.registerFlags(&c.Flags)
return c
},
@@ -1100,7 +1103,7 @@ var cmdSearch = &subcommands.Command{
type searchRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
TagsOptions
}
@@ -1115,11 +1118,11 @@ func (c *searchRun) Run(a subcommands.Application, args []string) int {
if len(args) == 1 {
packageName = args[0]
}
- return c.done(searchInstances(packageName, c.tags[0], c.ServiceOptions))
+ return c.done(searchInstances(packageName, c.tags[0], c.ClientOptions))
}
-func searchInstances(packageName, tag string, serviceOpts ServiceOptions) ([]common.Pin, error) {
- client, err := serviceOpts.makeCipdClient("")
+func searchInstances(packageName, tag string, clientOpts ClientOptions) ([]common.Pin, error) {
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return nil, err
}
@@ -1149,25 +1152,25 @@ var cmdListACL = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &listACLRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
return c
},
}
type listACLRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
}
func (c *listACLRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 1, 1) {
return 1
}
- return c.done(listACL(args[0], c.ServiceOptions))
+ return c.done(listACL(args[0], c.ClientOptions))
}
-func listACL(packagePath string, serviceOpts ServiceOptions) (map[string][]cipd.PackageACL, error) {
- client, err := serviceOpts.makeCipdClient("")
+func listACL(packagePath string, clientOpts ClientOptions) (map[string][]cipd.PackageACL, error) {
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return nil, err
}
@@ -1233,7 +1236,7 @@ var cmdEditACL = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &editACLRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.Var(&c.owner, "owner", "Users or groups to grant OWNER role.")
c.Flags.Var(&c.writer, "writer", "Users or groups to grant WRITER role.")
c.Flags.Var(&c.reader, "reader", "Users or groups to grant READER role.")
@@ -1244,7 +1247,7 @@ var cmdEditACL = &subcommands.Command{
type editACLRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
owner principalsList
writer principalsList
@@ -1256,10 +1259,10 @@ func (c *editACLRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 1, 1) {
return 1
}
- return c.done(nil, editACL(args[0], c.owner, c.writer, c.reader, c.revoke, c.ServiceOptions))
+ return c.done(nil, editACL(args[0], c.owner, c.writer, c.reader, c.revoke, c.ClientOptions))
}
-func editACL(packagePath string, owners, writers, readers, revoke principalsList, serviceOpts ServiceOptions) error {
+func editACL(packagePath string, owners, writers, readers, revoke principalsList, clientOpts ClientOptions) error {
changes := []cipd.PackageACLChange{}
makeChanges := func(action cipd.PackageACLChangeAction, role string, list principalsList) {
@@ -1284,7 +1287,7 @@ func editACL(packagePath string, owners, writers, readers, revoke principalsList
return nil
}
- client, err := serviceOpts.makeCipdClient("")
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return err
}
@@ -1403,7 +1406,7 @@ var cmdFetch = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &fetchRun{}
c.registerBaseFlags()
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.Flags.StringVar(&c.version, "version", "<version>", "Package version to fetch.")
c.Flags.StringVar(&c.outputPath, "out", "<path>", "Path to a file to write fetch to.")
return c
@@ -1412,7 +1415,7 @@ var cmdFetch = &subcommands.Command{
type fetchRun struct {
Subcommand
- ServiceOptions
+ ClientOptions
version string
outputPath string
@@ -1422,11 +1425,11 @@ func (c *fetchRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 1, 1) {
return 1
}
- return c.done(fetchInstanceFile(args[0], c.version, c.outputPath, c.ServiceOptions))
+ return c.done(fetchInstanceFile(args[0], c.version, c.outputPath, c.ClientOptions))
}
-func fetchInstanceFile(packageName, version, instanceFile string, serviceOpts ServiceOptions) (common.Pin, error) {
- client, err := serviceOpts.makeCipdClient("")
+func fetchInstanceFile(packageName, version, instanceFile string, clientOpts ClientOptions) (common.Pin, error) {
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return common.Pin{}, err
}
@@ -1532,7 +1535,7 @@ var cmdRegister = &subcommands.Command{
c.registerBaseFlags()
c.RefsOptions.registerFlags(&c.Flags)
c.TagsOptions.registerFlags(&c.Flags)
- c.ServiceOptions.registerFlags(&c.Flags)
+ c.ClientOptions.registerFlags(&c.Flags)
c.UploadOptions.registerFlags(&c.Flags)
return c
},
@@ -1542,7 +1545,7 @@ type registerRun struct {
Subcommand
RefsOptions
TagsOptions
- ServiceOptions
+ ClientOptions
UploadOptions
}
@@ -1550,17 +1553,17 @@ func (c *registerRun) Run(a subcommands.Application, args []string) int {
if !c.init(args, 1, 1) {
return 1
}
- return c.done(registerInstanceFile(args[0], c.RefsOptions, c.TagsOptions, c.ServiceOptions, c.UploadOptions))
+ return c.done(registerInstanceFile(args[0], c.RefsOptions, c.TagsOptions, c.ClientOptions, c.UploadOptions))
}
func registerInstanceFile(instanceFile string, refsOpts RefsOptions,
- tagsOpts TagsOptions, serviceOpts ServiceOptions, uploadOpts UploadOptions) (common.Pin, error) {
+ tagsOpts TagsOptions, clientOpts ClientOptions, uploadOpts UploadOptions) (common.Pin, error) {
inst, err := local.OpenInstanceFile(instanceFile, "")
if err != nil {
return common.Pin{}, err
}
defer inst.Close()
- client, err := serviceOpts.makeCipdClient("")
+ client, err := clientOpts.makeCipdClient("")
if err != nil {
return common.Pin{}, err
}
« no previous file with comments | « client/cmd/cipd/friendly.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698