You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
pi-launcher/main.go

80 lines
2.1 KiB

package main
import (
"embed"
"fmt"
"os"
"time"
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/options/mac"
)
//go:embed all:frontend/dist
var assets embed.FS
func main() {
// 调试模式:不启 GUI,直接调 CheckEnv 走完流程,看是不是会崩。
if len(os.Args) > 1 && os.Args[1] == "--selftest" {
app := NewApp()
fmt.Println("=== CheckEnv ===")
r := app.CheckEnv()
fmt.Printf("nodeOK=%v piPath=%q piVer=%q cred=%v portBusy=%v\n",
r.NodeOK, r.PiPath, r.PiVersion, r.CredExists, r.PortBusy)
fmt.Printf("issues=%v\n", r.Issues)
fmt.Println("=== CheckUpdate ===")
u := app.CheckUpdate()
fmt.Printf("installed=%q latest=%q hasUpdate=%v\n",
u.Installed, u.Latest, u.HasUpdate)
fmt.Println("=== listPIPids ===")
pids := listPIPids()
fmt.Printf("found %d pi-related pids:\n", len(pids))
for _, p := range pids {
fmt.Printf(" - %s\n", p)
}
fmt.Println("=== waitForPort test (30141, 1s) ===")
fmt.Printf("port ready: %v\n", waitForPort(30141, 1*time.Second))
fmt.Println("=== freePort test (30141) ===")
killed := freePort(30141)
fmt.Printf("killed: %d pid(s)\n", killed)
fmt.Println("=== done, exiting ===")
return
}
app := NewApp()
err := wails.Run(&options.App{
Title: "pi-launcher",
Width: 1040,
Height: 1280,
AssetServer: &assetserver.Options{
Assets: assets,
},
BackgroundColour: &options.RGBA{R: 17, G: 24, B: 39, A: 1},
OnStartup: app.startup,
OnShutdown: app.shutdown,
Bind: []interface{}{
app,
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{
TitlebarAppearsTransparent: true,
HideTitle: false,
HideTitleBar: false,
FullSizeContent: false,
},
Appearance: mac.NSAppearanceNameDarkAqua,
WebviewIsTransparent: false,
About: &mac.AboutInfo{
Title: "pi-launcher",
Message: "本地按需启动 pi-web UI。",
},
},
})
if err != nil {
println("Error:", err.Error())
}
}