github.com/jenkins-x/jx/v2@v2.1.155/pkg/cmd/get/get_stream.go (about) 1 package get 2 3 import ( 4 "strings" 5 6 "github.com/jenkins-x/jx/v2/pkg/versionstream" 7 8 "github.com/jenkins-x/jx/v2/pkg/cmd/helper" 9 10 "github.com/jenkins-x/jx-logging/pkg/log" 11 "github.com/jenkins-x/jx/v2/pkg/util" 12 "github.com/pkg/errors" 13 14 "github.com/spf13/cobra" 15 16 "github.com/jenkins-x/jx/v2/pkg/cmd/opts" 17 "github.com/jenkins-x/jx/v2/pkg/cmd/templates" 18 ) 19 20 // GetStreamOptions the command line options 21 type GetStreamOptions struct { 22 Options 23 24 Kind string 25 VersionsRepository string 26 VersionsGitRef string 27 } 28 29 var ( 30 getStreamLong = templates.LongDesc(` 31 Displays the version of a chart, package or docker image from the Version Stream 32 33 For more information see: [https://jenkins-x.io/about/concepts/version-stream/](https://jenkins-x.io/about/concepts/version-stream/) 34 35 `) 36 37 getStreamExample = templates.Examples(` 38 # List the version of a docker image 39 jx get stream -k docker gcr.io/jenkinsxio/builder-jx 40 41 # List the version of a chart 42 jx get stream -k charts jenkins-x/tekton 43 `) 44 ) 45 46 // NewCmdGetStream creates the command 47 func NewCmdGetStream(commonOpts *opts.CommonOptions) *cobra.Command { 48 options := &GetStreamOptions{ 49 Options: Options{ 50 CommonOptions: commonOpts, 51 }, 52 } 53 54 cmd := &cobra.Command{ 55 Use: "stream", 56 Short: "Displays the version of a chart, package or docker image from the Version Stream", 57 Long: getStreamLong, 58 Example: getStreamExample, 59 Aliases: []string{"url"}, 60 Run: func(cmd *cobra.Command, args []string) { 61 options.Cmd = cmd 62 options.Args = args 63 err := options.Run() 64 helper.CheckErr(err) 65 }, 66 } 67 cmd.Flags().StringVarP(&options.Kind, "kind", "k", "docker", "The kind of version. Possible values: "+strings.Join(versionstream.KindStrings, ", ")) 68 cmd.Flags().StringVarP(&options.VersionsRepository, "repo", "r", "", "Jenkins X versions Git repo") 69 cmd.Flags().StringVarP(&options.VersionsGitRef, "versions-ref", "", "", "Jenkins X versions Git repository reference (tag, branch, sha etc)") 70 return cmd 71 } 72 73 // Run implements this command 74 func (o *GetStreamOptions) Run() error { 75 resolver, err := o.CreateVersionResolver(o.VersionsRepository, o.VersionsGitRef) 76 if err != nil { 77 return errors.Wrap(err, "failed to create the VersionResolver") 78 } 79 args := o.Args 80 if len(args) == 0 { 81 return util.MissingArgument("name") 82 } 83 name := args[0] 84 85 kind := versionstream.VersionKind(o.Kind) 86 if kind == versionstream.KindDocker { 87 result, err := resolver.ResolveDockerImage(name) 88 if err != nil { 89 return errors.Wrapf(err, "failed to resolve docker image %s", name) 90 } 91 log.Logger().Infof("resolved image %s to %s", util.ColorInfo(name), util.ColorInfo(result)) 92 return nil 93 } 94 95 n, err := resolver.StableVersionNumber(kind, name) 96 if err != nil { 97 return errors.Wrapf(err, "failed to resolve %s version of %s", o.Kind, name) 98 } 99 100 log.Logger().Infof("resolved %s %s to version: %s", util.ColorInfo(name), util.ColorInfo(o.Kind), util.ColorInfo(n)) 101 return nil 102 }