@@ -12,6 +12,7 @@ import (
1212 "sort"
1313 "strings"
1414 "sync"
15+ "time"
1516
1617 "github.com/blang/semver"
1718 lua "github.com/yuin/gopher-lua"
@@ -126,7 +127,10 @@ func (pc PluginChannels) Fetch(out io.Writer) PluginPackages {
126127
127128// Fetch retrieves all available PluginPackages from the given channel
128129func (pc PluginChannel ) Fetch (out io.Writer ) PluginPackages {
129- resp , err := http .Get (string (pc ))
130+ client := http.Client {
131+ Timeout : 10 * time .Second ,
132+ }
133+ resp , err := client .Get (string (pc ))
130134 if err != nil {
131135 fmt .Fprintln (out , "Failed to query plugin channel:\n " , err )
132136 return PluginPackages {}
@@ -136,7 +140,7 @@ func (pc PluginChannel) Fetch(out io.Writer) PluginPackages {
136140
137141 var repositories []PluginRepository
138142 if err := decoder .Decode (& repositories ); err != nil {
139- fmt .Fprintln (out , "Failed to decode channel data:\n " , err )
143+ fmt .Fprintln (out , "Failed to decode channel data" , pc , " :\n " , err )
140144 return PluginPackages {}
141145 }
142146 return fetchAllSources (len (repositories ), func (i int ) PluginPackages {
@@ -146,7 +150,10 @@ func (pc PluginChannel) Fetch(out io.Writer) PluginPackages {
146150
147151// Fetch retrieves all available PluginPackages from the given repository
148152func (pr PluginRepository ) Fetch (out io.Writer ) PluginPackages {
149- resp , err := http .Get (string (pr ))
153+ client := http.Client {
154+ Timeout : 10 * time .Second ,
155+ }
156+ resp , err := client .Get (string (pr ))
150157 if err != nil {
151158 fmt .Fprintln (out , "Failed to query plugin repository:\n " , err )
152159 return PluginPackages {}
@@ -156,7 +163,7 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages {
156163
157164 var plugins PluginPackages
158165 if err := decoder .Decode (& plugins ); err != nil {
159- fmt .Fprintln (out , "Failed to decode repository data:\n " , err )
166+ fmt .Fprintln (out , "Failed to decode repository data" , pr , " :\n " , err )
160167 return PluginPackages {}
161168 }
162169 if len (plugins ) > 0 {
@@ -391,7 +398,10 @@ func GetInstalledPluginVersion(name string) string {
391398// DownloadAndInstall downloads and installs the given plugin and version
392399func (pv * PluginVersion ) DownloadAndInstall (out io.Writer ) error {
393400 fmt .Fprintf (out , "Downloading %q (%s) from %q\n " , pv .pack .Name , pv .Version , pv .Url )
394- resp , err := http .Get (pv .Url )
401+ client := http.Client {
402+ Timeout : 10 * time .Second ,
403+ }
404+ resp , err := client .Get (pv .Url )
395405 if err != nil {
396406 return err
397407 }
0 commit comments