get.porter.sh/porter@v1.3.0/pkg/pkgmgmt/download_options.go (about) 1 package pkgmgmt 2 3 import ( 4 "fmt" 5 "net/url" 6 ) 7 8 // DefaultPackageMirror is the default location from which to download Porter assets, such as binaries, atom feeds and package indexes. 9 const DefaultPackageMirror = "https://cdn.porter.sh" 10 11 // GetDefaultPackageMirrorURL returns DefaultPackageMirror parsed as a url.URL 12 func GetDefaultPackageMirrorURL() url.URL { 13 defaultMirror, _ := url.Parse(DefaultPackageMirror) 14 return *defaultMirror 15 } 16 17 // PackageDownloadOptions are options for downloading Porter packages, such as mixins and plugins. 18 type PackageDownloadOptions struct { 19 Mirror string 20 parsedMirror *url.URL 21 } 22 23 func (o *PackageDownloadOptions) Validate() error { 24 if o.Mirror == "" { 25 o.Mirror = DefaultPackageMirror 26 } 27 28 mirrorURL, err := url.Parse(o.Mirror) 29 if err != nil { 30 return fmt.Errorf("invalid --mirror %s: %w", o.Mirror, err) 31 } 32 o.parsedMirror = mirrorURL 33 34 return nil 35 } 36 37 // GetMirror returns a copy of of the parsed Mirror that is safe to modify. 38 func (o *PackageDownloadOptions) GetMirror() url.URL { 39 if o.parsedMirror == nil { 40 return GetDefaultPackageMirrorURL() 41 } 42 43 return *o.parsedMirror 44 }