diff --git a/cmd/doctor.go b/cmd/doctor.go index f8904f5..3f0ce6a 100644 --- a/cmd/doctor.go +++ b/cmd/doctor.go @@ -1,8 +1,11 @@ package cmd import ( + "bytes" "fmt" + "os/exec" "runtime" + "strings" "github.com/spf13/cobra" ) @@ -13,12 +16,54 @@ var doctorCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { fmt.Println("Codewise CLI Doctor") fmt.Println("-------------------") + + // Go fmt.Println("Go version:", runtime.Version()) + + // OS fmt.Println("OS/Arch:", runtime.GOOS, runtime.GOARCH) + + // Codewise fmt.Println("Codewise version:", rootCmd.Version) + + // Docker + checkDocker() + + // Git + checkGit() }, } func init() { rootCmd.AddCommand(doctorCmd) } + +// ---- helpers ---- + +func checkDocker() { + cmd := exec.Command("docker", "--version") + + var out bytes.Buffer + cmd.Stdout = &out + + if err := cmd.Run(); err != nil { + fmt.Println("Docker: not installed") + return + } + + fmt.Println("Docker:", strings.TrimSpace(out.String())) +} + +func checkGit() { + cmd := exec.Command("git", "--version") + + var out bytes.Buffer + cmd.Stdout = &out + + if err := cmd.Run(); err != nil { + fmt.Println("Git: not installed") + return + } + + fmt.Println("Git:", strings.TrimSpace(out.String())) +}