5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 20:03:01 +08:00
This commit is contained in:
Lea Anthony 2019-01-07 22:58:25 +11:00
parent 53cf2bb953
commit f06ce760ba
3 changed files with 75 additions and 25 deletions

View File

@ -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
}

View File

@ -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
})
}

View File

@ -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
}