5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 07:40:17 +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 { func diagnoseEnvironment(f *flags.Doctor) error {
if f.NoColour { if f.NoColour {
pterm.DisableColor() pterm.DisableColor()
colour.ColourEnabled = false 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 // Get system info
info, err := system.GetInfo() info, err := system.GetInfo()
if err != nil { if err != nil {
spinner.Fail("Failed.") spinner.Fail()
return err pterm.Error.Println("Failed to get system information")
}
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 {
return err return err
} }
spinner.Success()
pterm.DefaultSection.Println("Wails") pterm.DefaultSection.Println("Wails")
wailsTableData := [][]string{ wailsTableData := pterm.TableData{
{"Version", app.Version()}, {"Version", app.Version()},
} }
@ -78,41 +68,57 @@ func diagnoseEnvironment(f *flags.Doctor) error {
return err 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") pterm.DefaultSection.Println("Dependencies")
// Output Dependencies Status // Output Dependencies Status
var dependenciesMissing = []string{} var dependenciesMissing []string
var externalPackages = []*packagemanager.Dependency{} var externalPackages []*packagemanager.Dependency
var dependenciesAvailableRequired = 0 var dependenciesAvailableRequired = 0
var dependenciesAvailableOptional = 0 var dependenciesAvailableOptional = 0
dependenciesTableData := [][]string{ dependenciesTableData := pterm.TableData{
{"Dependency", "Package Name", "Status", "Version"}, {"Dependency", "Package Name", "Status", "Version"},
} }
hasOptionalDependencies := false hasOptionalDependencies := false
// Loop over dependencies // Loop over dependencies
for _, dependency := range info.Dependencies { for _, dependency := range info.Dependencies {
name := dependency.Name name := dependency.Name
if dependency.Optional { if dependency.Optional {
name = "*" + name name = pterm.Gray("*") + name
hasOptionalDependencies = true hasOptionalDependencies = true
} }
packageName := "Unknown" packageName := "Unknown"
status := "Not Found" status := pterm.LightRed("Not Found")
// If we found the package // If we found the package
if dependency.PackageName != "" { if dependency.PackageName != "" {
packageName = dependency.PackageName packageName = dependency.PackageName
// If it's installed, update the status // If it's installed, update the status
if dependency.Installed { if dependency.Installed {
status = "Installed" status = pterm.LightGreen("Installed")
} else { } else {
// Generate meaningful status text // Generate meaningful status text
status = "Available" status = pterm.LightMagenta("Available")
if dependency.Optional { if dependency.Optional {
dependenciesAvailableOptional++ dependenciesAvailableOptional++
@ -133,22 +139,19 @@ func diagnoseEnvironment(f *flags.Doctor) error {
dependenciesTableData = append(dependenciesTableData, []string{name, packageName, status, dependency.Version}) 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 { if hasOptionalDependencies {
pterm.Println("* - Optional Dependency") dependenciesBox = dependenciesBox.WithTitle(pterm.Gray("*") + " - Optional Dependency")
} }
dependenciesBox.Println(dependenciesTableString)
pterm.DefaultSection.Println("Diagnosis") pterm.DefaultSection.Println("Diagnosis")
// Generate an appropriate 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 { if dependenciesAvailableRequired != 0 {
pterm.Println("Required package(s) installation details: \n" + info.Dependencies.InstallAllRequiredCommand()) 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()) 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 { if len(dependenciesMissing) != 0 {
pterm.Println("Fatal:") pterm.Println("Fatal:")
pterm.Println("Required dependencies missing: " + strings.Join(dependenciesMissing, " ")) 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("Please read this article on how to resolve this: https://wails.io/guides/resolving-missing-packages")
} }
pterm.Println() // Spacer for sponsor message
return nil return nil
} }

View File

@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### 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). - [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 ### Fixed