diff --git a/cmd/system.go b/cmd/system.go index d61cd8474..a163cc6e6 100644 --- a/cmd/system.go +++ b/cmd/system.go @@ -11,7 +11,6 @@ import ( "time" "github.com/AlecAivazis/survey" - "github.com/leaanthony/spinner" homedir "github.com/mitchellh/go-homedir" ) @@ -224,7 +223,7 @@ func (sc *SystemConfig) load(filename string) error { // CheckDependencies will look for Wails dependencies on the system // Errors are reported in error and the bool return value is whether // the dependencies are all installed. -func CheckDependencies(logger *Logger) (error, bool) { +func CheckDependencies(logger *Logger) (bool, error) { switch runtime.GOOS { case "darwin": @@ -234,7 +233,7 @@ func CheckDependencies(logger *Logger) (error, bool) { case "linux": logger.Yellow("Detected Platform: Linux") default: - return fmt.Errorf("Platform %s is currently not supported", runtime.GOOS), false + return false, fmt.Errorf("Platform %s is currently not supported", runtime.GOOS) } logger.Yellow("Checking for prerequisites...") @@ -242,19 +241,17 @@ func CheckDependencies(logger *Logger) (error, bool) { requiredPrograms, err := GetRequiredPrograms() if err != nil { - return nil, false + return false, nil } errors := false - spinner := spinner.New() programHelper := NewProgramHelper() for _, program := range *requiredPrograms { - spinner.Start("Looking for program '%s'", program.Name) bin := programHelper.FindProgram(program.Name) if bin == nil { errors = true - spinner.Errorf("Program '%s' not found. %s", program.Name, program.Help) + logger.Red("Program '%s' not found. %s", program.Name, program.Help) } else { - spinner.Successf("Program '%s' found: %s", program.Name, bin.Path) + logger.Green("Program '%s' found: %s", program.Name, bin.Path) } } @@ -263,28 +260,27 @@ func CheckDependencies(logger *Logger) (error, bool) { // Check library prerequisites requiredLibraries, err := GetRequiredLibraries() if err != nil { - return err, false + return false, err } distroInfo := GetLinuxDistroInfo() for _, library := range *requiredLibraries { - spinner.Start() switch distroInfo.Distribution { case Ubuntu: installed, err := DpkgInstalled(library.Name) if err != nil { - return err, false + return false, err } if !installed { errors = true - spinner.Errorf("Library '%s' not found. %s", library.Name, library.Help) + logger.Red("Library '%s' not found. %s", library.Name, library.Help) } else { - spinner.Successf("Library '%s' installed.", library.Name) + logger.Green("Library '%s' installed.", library.Name) } default: - return fmt.Errorf("unable to check libraries on distribution '%s'. Please ensure that the '%s' equivalent is installed", distroInfo.DistributorID, library.Name), false + return false, fmt.Errorf("unable to check libraries on distribution '%s'. Please ensure that the '%s' equivalent is installed", distroInfo.DistributorID, library.Name) } } } - return err, !errors + return !errors, err } diff --git a/cmd/wails/0_setup.go b/cmd/wails/0_setup.go index 25e322a67..59a614829 100644 --- a/cmd/wails/0_setup.go +++ b/cmd/wails/0_setup.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "runtime" "github.com/wailsapp/wails/cmd" @@ -17,27 +18,80 @@ func init() { setupCommand.Action(func() error { - var successMessage = `Ready for take off! -Create your first project by running 'wails init'.` - if runtime.GOOS != "windows" { - successMessage = "🚀 " + successMessage - } - system := cmd.NewSystemHelper() err := system.Initialise() if err != nil { return err } - err, success := cmd.CheckDependencies(logger) + var successMessage = `Ready for take off! +Create your first project by running 'wails init'.` + if runtime.GOOS != "windows" { + successMessage = "🚀 " + successMessage + } + switch runtime.GOOS { + case "darwin": + logger.Yellow("Detected Platform: OSX") + case "windows": + logger.Yellow("Detected Platform: Windows") + case "linux": + logger.Yellow("Detected Platform: Linux") + default: + return fmt.Errorf("Platform %s is currently not supported", runtime.GOOS) + } + + logger.Yellow("Checking for prerequisites...") + // Check we have a cgo capable environment + + requiredPrograms, err := cmd.GetRequiredPrograms() if err != nil { return err } + errors := false + programHelper := cmd.NewProgramHelper() + for _, program := range *requiredPrograms { + bin := programHelper.FindProgram(program.Name) + if bin == nil { + errors = true + logger.Red("Program '%s' not found. %s", program.Name, program.Help) + } else { + logger.Green("Program '%s' found: %s", program.Name, bin.Path) + } + } + + // Linux has library deps + if runtime.GOOS == "linux" { + // Check library prerequisites + requiredLibraries, err := cmd.GetRequiredLibraries() + if err != nil { + return err + } + distroInfo := cmd.GetLinuxDistroInfo() + for _, library := range *requiredLibraries { + switch distroInfo.Distribution { + case cmd.Ubuntu: + installed, err := cmd.DpkgInstalled(library.Name) + if err != nil { + return err + } + if !installed { + errors = true + logger.Red("Library '%s' not found. %s", library.Name, library.Help) + } else { + logger.Green("Library '%s' installed.", library.Name) + } + default: + return fmt.Errorf("unable to check libraries on distribution '%s'. Please ensure that the '%s' equivalent is installed", distroInfo.DistributorID, library.Name) + } + } + } + logger.White("") - if success { + if !errors { logger.Yellow(successMessage) } - return nil + + return err }) } diff --git a/cmd/wails/1_init.go b/cmd/wails/1_init.go index c3a053845..2ed9f0765 100644 --- a/cmd/wails/1_init.go +++ b/cmd/wails/1_init.go @@ -34,7 +34,7 @@ Any flags that are required and not given will be prompted for.` return err } - err, success := cmd.CheckDependencies(logger) + success, err := cmd.CheckDependencies(logger) if !success { return err }