@@ -4,6 +4,7 @@ package wsl
4
4
5
5
import (
6
6
"bufio"
7
+ "bytes"
7
8
"errors"
8
9
"fmt"
9
10
"io"
@@ -550,7 +551,10 @@ func runCmdPassThrough(name string, arg ...string) error {
550
551
cmd .Stdin = os .Stdin
551
552
cmd .Stdout = os .Stdout
552
553
cmd .Stderr = os .Stderr
553
- return cmd .Run ()
554
+ if err := cmd .Run (); err != nil {
555
+ return fmt .Errorf ("command %s %v failed: %w" , name , arg , err )
556
+ }
557
+ return nil
554
558
}
555
559
556
560
func runCmdPassThroughTee (out io.Writer , name string , arg ... string ) error {
@@ -562,7 +566,10 @@ func runCmdPassThroughTee(out io.Writer, name string, arg ...string) error {
562
566
cmd .Stdin = os .Stdin
563
567
cmd .Stdout = io .MultiWriter (os .Stdout , out )
564
568
cmd .Stderr = io .MultiWriter (os .Stderr , out )
565
- return cmd .Run ()
569
+ if err := cmd .Run (); err != nil {
570
+ return fmt .Errorf ("command %s %v failed: %w" , name , arg , err )
571
+ }
572
+ return nil
566
573
}
567
574
568
575
func pipeCmdPassThrough (name string , input string , arg ... string ) error {
@@ -571,7 +578,10 @@ func pipeCmdPassThrough(name string, input string, arg ...string) error {
571
578
cmd .Stdin = strings .NewReader (input )
572
579
cmd .Stdout = os .Stdout
573
580
cmd .Stderr = os .Stderr
574
- return cmd .Run ()
581
+ if err := cmd .Run (); err != nil {
582
+ return fmt .Errorf ("command %s %v failed: %w" , name , arg , err )
583
+ }
584
+ return nil
575
585
}
576
586
577
587
func setupWslProxyEnv () (hasProxy bool ) {
@@ -638,8 +648,10 @@ func getAllWSLDistros(running bool) (map[string]struct{}, error) {
638
648
if err != nil {
639
649
return nil , err
640
650
}
651
+ stderr := & bytes.Buffer {}
652
+ cmd .Stderr = stderr
641
653
if err = cmd .Start (); err != nil {
642
- return nil , err
654
+ return nil , fmt . Errorf ( "failed to start command %s %v: %w" , cmd . Path , args , err )
643
655
}
644
656
645
657
all := make (map [string ]struct {})
@@ -651,7 +663,10 @@ func getAllWSLDistros(running bool) (map[string]struct{}, error) {
651
663
}
652
664
}
653
665
654
- _ = cmd .Wait ()
666
+ err = cmd .Wait ()
667
+ if err != nil {
668
+ return nil , fmt .Errorf ("command %s %v failed: %w (%s)" , cmd .Path , args , err , strings .TrimSpace (stderr .String ()))
669
+ }
655
670
656
671
return all , nil
657
672
}
@@ -663,6 +678,8 @@ func isSystemdRunning(dist string) (bool, error) {
663
678
if err != nil {
664
679
return false , err
665
680
}
681
+ stderr := & bytes.Buffer {}
682
+ cmd .Stderr = stderr
666
683
if err = cmd .Start (); err != nil {
667
684
return false , err
668
685
}
@@ -676,19 +693,30 @@ func isSystemdRunning(dist string) (bool, error) {
676
693
}
677
694
}
678
695
679
- _ = cmd .Wait ()
696
+ err = cmd .Wait ()
697
+ if err != nil {
698
+ return false , fmt .Errorf ("command %s %v failed: %w (%s)" , cmd .Path , cmd .Args , err , strings .TrimSpace (stderr .String ()))
699
+ }
680
700
681
701
return result , nil
682
702
}
683
703
684
704
func terminateDist (dist string ) error {
685
705
cmd := exec .Command (wutil .FindWSL (), "--terminate" , dist )
686
- return cmd .Run ()
706
+ out , err := cmd .CombinedOutput ()
707
+ if err != nil {
708
+ return fmt .Errorf ("command %s %v failed: %w (%s)" , cmd .Path , cmd .Args , err , strings .TrimSpace (string (out )))
709
+ }
710
+ return nil
687
711
}
688
712
689
713
func unregisterDist (dist string ) error {
690
714
cmd := exec .Command (wutil .FindWSL (), "--unregister" , dist )
691
- return cmd .Run ()
715
+ out , err := cmd .CombinedOutput ()
716
+ if err != nil {
717
+ return fmt .Errorf ("command %s %v failed: %w (%s)" , cmd .Path , cmd .Args , err , strings .TrimSpace (string (out )))
718
+ }
719
+ return nil
692
720
}
693
721
694
722
func isRunning (name string ) (bool , error ) {
@@ -736,6 +764,8 @@ func getCPUs(name string) (uint64, error) {
736
764
if err != nil {
737
765
return 0 , err
738
766
}
767
+ stderr := & bytes.Buffer {}
768
+ cmd .Stderr = stderr
739
769
if err = cmd .Start (); err != nil {
740
770
return 0 , err
741
771
}
@@ -744,7 +774,10 @@ func getCPUs(name string) (uint64, error) {
744
774
for scanner .Scan () {
745
775
result = scanner .Text ()
746
776
}
747
- _ = cmd .Wait ()
777
+ err = cmd .Wait ()
778
+ if err != nil {
779
+ return 0 , fmt .Errorf ("command %s %v failed: %w (%s)" , cmd .Path , cmd .Args , err , strings .TrimSpace (strings .TrimSpace (stderr .String ())))
780
+ }
748
781
749
782
ret , err := strconv .Atoi (result )
750
783
return uint64 (ret ), err
@@ -761,6 +794,8 @@ func getMem(name string) (strongunits.MiB, error) {
761
794
if err != nil {
762
795
return 0 , err
763
796
}
797
+ stderr := & bytes.Buffer {}
798
+ cmd .Stderr = stderr
764
799
if err = cmd .Start (); err != nil {
765
800
return 0 , err
766
801
}
@@ -783,7 +818,10 @@ func getMem(name string) (strongunits.MiB, error) {
783
818
break
784
819
}
785
820
}
786
- _ = cmd .Wait ()
821
+ err = cmd .Wait ()
822
+ if err != nil {
823
+ return 0 , fmt .Errorf ("command %s %v failed: %w (%s)" , cmd .Path , cmd .Args , err , strings .TrimSpace (stderr .String ()))
824
+ }
787
825
788
826
return strongunits .MiB (total - available ), err
789
827
}
0 commit comments