5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 05:11:29 +08:00

Change style of doctor command (#2660)

* Refactor doctor command

* Refactor doctor command

* Refactor doctor command

* Refactor doctor command

* Added changelog entry
This commit is contained in:
Marvin Wendt 2023-05-26 09:55:53 +02:00 committed by GitHub
parent 37e43dabc0
commit 65c68301a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 39 deletions

View File

@ -14,43 +14,33 @@ import (
)
func diagnoseEnvironment(f *flags.Doctor) error {
if f.NoColour {
pterm.DisableColor()
colour.ColourEnabled = false
}
app.PrintBanner()
pterm.DefaultSection = *pterm.DefaultSection.
WithBottomPadding(0).
WithStyle(pterm.NewStyle(pterm.FgBlue, pterm.Bold))
spinner, _ := pterm.DefaultSpinner.Start("Scanning system - Please wait (this may take a long time)...")
pterm.Println() // Spacer
pterm.DefaultHeader.WithBackgroundStyle(pterm.NewStyle(pterm.BgLightBlue)).WithMargin(10).Println("Wails Doctor")
pterm.Println() // Spacer
spinner, _ := pterm.DefaultSpinner.WithRemoveWhenDone().Start("Scanning system - Please wait (this may take a long time)...")
// Get system info
info, err := system.GetInfo()
if err != nil {
spinner.Fail("Failed.")
return err
}
spinner.Success("Done.")
pterm.DefaultSection.Println("System")
systemTabledata := [][]string{
{"OS", info.OS.Name},
{"Version", info.OS.Version},
{"ID", info.OS.ID},
{"Go Version", runtime.Version()},
{"Platform", runtime.GOOS},
{"Architecture", runtime.GOARCH},
}
err = pterm.DefaultTable.WithData(systemTabledata).Render()
if err != nil {
spinner.Fail()
pterm.Error.Println("Failed to get system information")
return err
}
spinner.Success()
pterm.DefaultSection.Println("Wails")
wailsTableData := [][]string{
wailsTableData := pterm.TableData{
{"Version", app.Version()},
}
@ -78,41 +68,57 @@ func diagnoseEnvironment(f *flags.Doctor) error {
return err
}
pterm.DefaultSection.Println("System")
systemTabledata := pterm.TableData{
{pterm.Bold.Sprint("OS"), info.OS.Name},
{pterm.Bold.Sprint("Version"), info.OS.Version},
{pterm.Bold.Sprint("ID"), info.OS.ID},
{pterm.Bold.Sprint("Go Version"), runtime.Version()},
{pterm.Bold.Sprint("Platform"), runtime.GOOS},
{pterm.Bold.Sprint("Architecture"), runtime.GOARCH},
}
err = pterm.DefaultTable.WithBoxed().WithData(systemTabledata).Render()
if err != nil {
return err
}
pterm.DefaultSection.Println("Dependencies")
// Output Dependencies Status
var dependenciesMissing = []string{}
var externalPackages = []*packagemanager.Dependency{}
var dependenciesMissing []string
var externalPackages []*packagemanager.Dependency
var dependenciesAvailableRequired = 0
var dependenciesAvailableOptional = 0
dependenciesTableData := [][]string{
dependenciesTableData := pterm.TableData{
{"Dependency", "Package Name", "Status", "Version"},
}
hasOptionalDependencies := false
// Loop over dependencies
for _, dependency := range info.Dependencies {
name := dependency.Name
if dependency.Optional {
name = "*" + name
name = pterm.Gray("*") + name
hasOptionalDependencies = true
}
packageName := "Unknown"
status := "Not Found"
status := pterm.LightRed("Not Found")
// If we found the package
if dependency.PackageName != "" {
packageName = dependency.PackageName
// If it's installed, update the status
if dependency.Installed {
status = "Installed"
status = pterm.LightGreen("Installed")
} else {
// Generate meaningful status text
status = "Available"
status = pterm.LightMagenta("Available")
if dependency.Optional {
dependenciesAvailableOptional++
@ -133,22 +139,19 @@ func diagnoseEnvironment(f *flags.Doctor) error {
dependenciesTableData = append(dependenciesTableData, []string{name, packageName, status, dependency.Version})
}
err = pterm.DefaultTable.WithHasHeader(true).WithData(dependenciesTableData).Render()
dependenciesTableString, _ := pterm.DefaultTable.WithHasHeader(true).WithData(dependenciesTableData).Srender()
dependenciesBox := pterm.DefaultBox.WithTitleBottomCenter()
if hasOptionalDependencies {
pterm.Println("* - Optional Dependency")
dependenciesBox = dependenciesBox.WithTitle(pterm.Gray("*") + " - Optional Dependency")
}
dependenciesBox.Println(dependenciesTableString)
pterm.DefaultSection.Println("Diagnosis")
// Generate an appropriate diagnosis
if len(dependenciesMissing) == 0 && dependenciesAvailableRequired == 0 {
pterm.Println("Your system is ready for Wails development!")
} else {
pterm.Println("Your system has missing dependencies!")
}
if dependenciesAvailableRequired != 0 {
pterm.Println("Required package(s) installation details: \n" + info.Dependencies.InstallAllRequiredCommand())
}
@ -157,11 +160,18 @@ func diagnoseEnvironment(f *flags.Doctor) error {
pterm.Println("Optional package(s) installation details: \n" + info.Dependencies.InstallAllOptionalCommand())
}
if len(dependenciesMissing) == 0 && dependenciesAvailableRequired == 0 {
pterm.Success.Println("Your system is ready for Wails development!")
} else {
pterm.Warning.Println("Your system has missing dependencies!")
}
if len(dependenciesMissing) != 0 {
pterm.Println("Fatal:")
pterm.Println("Required dependencies missing: " + strings.Join(dependenciesMissing, " "))
pterm.Println("Please read this article on how to resolve this: https://wails.io/guides/resolving-missing-packages")
}
pterm.Println() // Spacer for sponsor message
return nil
}

View File

@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Changed styling of `doctor` command. Changed by @MarvinJWendt in [PR](https://github.com/wailsapp/wails/pull/2660)
- [v3] Typescript model generation using `StructDef`s from new AST-based parser. Added by @ATenderholt in [PR1](https://github.com/wailsapp/wails/pull/2428/files) and [PR2](https://github.com/wailsapp/wails/pull/2485).
### Fixed