github.com/btwiuse/jiri@v0.0.0-20191125065820-53353bcfef54/cmd/jiri/fetch_pkgs.go (about) 1 // Copyright 2018 The Fuchsia Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "github.com/btwiuse/jiri" 9 "github.com/btwiuse/jiri/cmdline" 10 "github.com/btwiuse/jiri/project" 11 ) 12 13 var fetchPkgsFlags struct { 14 localManifest bool 15 fetchPkgsTimeout uint 16 attempts uint 17 } 18 19 var cmdFetchPkgs = &cmdline.Command{ 20 Runner: jiri.RunnerFunc(runFetchPkgs), 21 Name: "fetch-packages", 22 Short: "Fetch cipd packages using JIRI_HEAD version manifest", 23 Long: ` 24 Fetch cipd packages using local manifest JIRI_HEAD version if -local-manifest flag is 25 false, otherwise it fetches cipd packages using current manifest checkout version. 26 `, 27 } 28 29 func init() { 30 cmdFetchPkgs.Flags.BoolVar(&fetchPkgsFlags.localManifest, "local-manifest", false, "Use local checked out manifest.") 31 cmdFetchPkgs.Flags.UintVar(&fetchPkgsFlags.fetchPkgsTimeout, "fetch-packages-timeout", project.DefaultPackageTimeout, "Timeout in minutes for fetching prebuilt packages using cipd.") 32 cmdFetchPkgs.Flags.UintVar(&fetchPkgsFlags.attempts, "attempts", 1, "Number of attempts before failing.") 33 } 34 35 func runFetchPkgs(jirix *jiri.X, args []string) (err error) { 36 localProjects, err := project.LocalProjects(jirix, project.FastScan) 37 if err != nil { 38 return err 39 } 40 if fetchPkgsFlags.attempts < 1 { 41 return jirix.UsageErrorf("Number of attempts should be >= 1") 42 } 43 jirix.Attempts = fetchPkgsFlags.attempts 44 45 // Get pkgs. 46 var pkgs project.Packages 47 var projs project.Projects 48 if !fetchPkgsFlags.localManifest { 49 projs, _, pkgs, err = project.LoadUpdatedManifest(jirix, localProjects, fetchPkgsFlags.localManifest) 50 } else { 51 projs, _, pkgs, err = project.LoadManifestFile(jirix, jirix.JiriManifestFile(), localProjects, fetchPkgsFlags.localManifest) 52 } 53 if err != nil { 54 return err 55 } 56 if err := project.FilterOptionalProjectsPackages(jirix, jirix.FetchingAttrs, nil, pkgs); err != nil { 57 return err 58 } 59 if len(pkgs) > 0 { 60 return project.FetchPackages(jirix, projs, pkgs, fetchPkgsFlags.fetchPkgsTimeout) 61 } 62 return nil 63 }