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

Unified Diff: go/src/infra/tools/cipd/apps/cipd/main.go

Issue 1145423002: cipd: Client can resolve tags to instance IDs. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: resolve subcommand Created 5 years, 7 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 | « no previous file | go/src/infra/tools/cipd/client.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: go/src/infra/tools/cipd/apps/cipd/main.go
diff --git a/go/src/infra/tools/cipd/apps/cipd/main.go b/go/src/infra/tools/cipd/apps/cipd/main.go
index 35c5636ecc5d17a54e9fa40f72c62ebed572c884..8854e1956f2863242e0dbccd3e0cb1fd5ba49090 100644
--- a/go/src/infra/tools/cipd/apps/cipd/main.go
+++ b/go/src/infra/tools/cipd/apps/cipd/main.go
@@ -424,6 +424,54 @@ func ensurePackages(root string, desiredStateFile string, serviceOpts ServiceOpt
}
////////////////////////////////////////////////////////////////////////////////
+// 'resolve' subcommand.
+
+var cmdResolve = &subcommands.Command{
+ UsageLine: "resolve [options]",
+ ShortDesc: "returns concrete package instance ID given a version",
+ LongDesc: "Returns concrete package instance ID given a version.",
+ CommandRun: func() subcommands.CommandRun {
+ c := &resolveRun{}
+ c.Flags.StringVar(&c.packageName, "name", "<name>", "package name")
+ c.Flags.StringVar(&c.version, "version", "<version>", "package version to resolve")
+ c.ServiceOptions.registerFlags(&c.Flags)
+ c.JSONOutputOptions.registerFlags(&c.Flags)
+ return c
+ },
+}
+
+type resolveRun struct {
+ subcommands.CommandRunBase
+ ServiceOptions
+ JSONOutputOptions
+
+ packageName string
+ version string
+}
+
+func (c *resolveRun) Run(a subcommands.Application, args []string) int {
+ if !checkCommandLine(args, c.GetFlags(), 0) {
+ return 1
+ }
+ pin, err := resolveVersion(c.packageName, c.version, c.ServiceOptions)
+ err = c.writeJSONOutput(&pin, err)
+ if err != nil {
+ reportError("%s", err)
+ return 1
+ }
+ logging.Infof("Instance: %s", pin)
+ return 0
+}
+
+func resolveVersion(packageName, version string, serviceOpts ServiceOptions) (common.Pin, error) {
+ client, err := serviceOpts.makeCipdClient()
+ if err != nil {
+ return common.Pin{}, err
+ }
+ return client.ResolveVersion(packageName, version)
nodir 2015/05/21 18:15:06 It seems functions like this in this file are call
Vadim Sh. 2015/05/21 18:19:39 They are not all like this. buildInstanceFile and
+}
+
+////////////////////////////////////////////////////////////////////////////////
// 'acl-list' subcommand.
var cmdListACL = &subcommands.Command{
@@ -707,7 +755,7 @@ var cmdFetch = &subcommands.Command{
CommandRun: func() subcommands.CommandRun {
c := &fetchRun{}
c.Flags.StringVar(&c.packageName, "name", "<name>", "package name")
- c.Flags.StringVar(&c.instanceID, "instance-id", "<instance id>", "package instance ID to fetch")
+ 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")
c.ServiceOptions.registerFlags(&c.Flags)
return c
@@ -719,7 +767,7 @@ type fetchRun struct {
ServiceOptions
packageName string
- instanceID string
+ version string
outputPath string
}
@@ -727,8 +775,7 @@ func (c *fetchRun) Run(a subcommands.Application, args []string) int {
if !checkCommandLine(args, c.GetFlags(), 0) {
return 1
}
- pin := common.Pin{PackageName: c.packageName, InstanceID: c.instanceID}
- err := fetchInstanceFile(pin, c.outputPath, c.ServiceOptions)
+ err := fetchInstanceFile(c.packageName, c.version, c.outputPath, c.ServiceOptions)
if err != nil {
reportError("Error while fetching the package: %s", err)
return 1
@@ -736,7 +783,16 @@ func (c *fetchRun) Run(a subcommands.Application, args []string) int {
return 0
}
-func fetchInstanceFile(pin common.Pin, instanceFile string, serviceOpts ServiceOptions) error {
+func fetchInstanceFile(packageName, version, instanceFile string, serviceOpts ServiceOptions) error {
+ client, err := serviceOpts.makeCipdClient()
+ if err != nil {
+ return err
+ }
+ pin, err := client.ResolveVersion(packageName, version)
+ if err != nil {
+ return err
+ }
+
out, err := os.OpenFile(instanceFile, os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
return err
@@ -749,10 +805,6 @@ func fetchInstanceFile(pin common.Pin, instanceFile string, serviceOpts ServiceO
}
}()
- client, err := serviceOpts.makeCipdClient()
- if err != nil {
- return err
- }
err = client.FetchInstance(pin, out)
if err != nil {
return err
@@ -902,6 +954,7 @@ var application = &subcommands.DefaultApplication{
// High level commands.
cmdCreate,
cmdEnsure,
+ cmdResolve,
// Authentication related commands.
auth.SubcommandInfo("auth-info"),
« no previous file with comments | « no previous file | go/src/infra/tools/cipd/client.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698