@@ -83,7 +83,7 @@ func (m *Manager) Dispatch(args []string, stdin io.Reader, stdout, stderr io.Wri
8383
8484 var externalCmd * exec.Cmd
8585
86- if ext .IsBinary () {
86+ if ext .IsBinary () || runtime . GOOS != "windows" {
8787 externalCmd = m .newCommand (exe , forwardArgs ... )
8888 } else if runtime .GOOS == "windows" {
8989 // Dispatch all extension calls through the `sh` interpreter to support executable files with a
@@ -97,8 +97,6 @@ func (m *Manager) Dispatch(args []string, stdin io.Reader, stdout, stderr io.Wri
9797 }
9898 forwardArgs = append ([]string {"-c" , `command "$@"` , "--" , exe }, forwardArgs ... )
9999 externalCmd = m .newCommand (shExe , forwardArgs ... )
100- } else {
101- externalCmd = m .newCommand (exe , forwardArgs ... )
102100 }
103101 externalCmd .Stdin = stdin
104102 externalCmd .Stdout = stdout
@@ -272,30 +270,30 @@ func (m *Manager) getLatestVersion(ext Extension) (string, error) {
272270 if ext .isLocal {
273271 return "" , fmt .Errorf ("unable to get latest version for local extensions" )
274272 }
275- if ext .kind == GitKind {
276- gitExe , err := m . lookPath ( "git" )
273+ if ext .IsBinary () {
274+ repo , err := ghrepo . FromFullName ( ext . url )
277275 if err != nil {
278276 return "" , err
279277 }
280- extDir := filepath .Dir (ext .path )
281- gitDir := "--git-dir=" + filepath .Join (extDir , ".git" )
282- cmd := m .newCommand (gitExe , gitDir , "ls-remote" , "origin" , "HEAD" )
283- lsRemote , err := cmd .Output ()
278+ r , err := fetchLatestRelease (m .client , repo )
284279 if err != nil {
285280 return "" , err
286281 }
287- remoteSha := bytes .SplitN (lsRemote , []byte ("\t " ), 2 )[0 ]
288- return string (remoteSha ), nil
282+ return r .Tag , nil
289283 } else {
290- repo , err := ghrepo . FromFullName ( ext . url )
284+ gitExe , err := m . lookPath ( "git" )
291285 if err != nil {
292286 return "" , err
293287 }
294- r , err := fetchLatestRelease (m .client , repo )
288+ extDir := filepath .Dir (ext .path )
289+ gitDir := "--git-dir=" + filepath .Join (extDir , ".git" )
290+ cmd := m .newCommand (gitExe , gitDir , "ls-remote" , "origin" , "HEAD" )
291+ lsRemote , err := cmd .Output ()
295292 if err != nil {
296293 return "" , err
297294 }
298- return r .Tag , nil
295+ remoteSha := bytes .SplitN (lsRemote , []byte ("\t " ), 2 )[0 ]
296+ return string (remoteSha ), nil
299297 }
300298}
301299
@@ -481,7 +479,7 @@ func (m *Manager) upgradeExtension(ext Extension, force bool) error {
481479 return upToDateError
482480 }
483481 var err error
484- if ext .kind == BinaryKind {
482+ if ext .IsBinary () {
485483 err = m .upgradeBinExtension (ext )
486484 } else {
487485 err = m .upgradeGitExtension (ext , force )
0 commit comments