feat: add config, auth, fetcher, java modules
- config: OS-specific paths, launcher.json load/save, DefaultSettings with MRIXSCRAFT_SERVER_URL env override - auth: Yggdrasil client (authenticate, refresh, validate), session persistence in session.json, EnsureValid flow - fetcher: HTTP download with SHA-1 verification, WorkerPool for concurrent downloads - java: JRE detection (IsInstalled/Find), platform-specific executable name - utils: SHA1File, SHA1Bytes, Unzip with zip-slip protection - cmd/launcher: wire config + auth into main, session restore on startup Co-Authored-By: OWL <noreply@anthropic.com>
This commit is contained in:
@@ -2,21 +2,53 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"fyne.io/fyne/v2/app"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
|
||||
"gitea.mrixs.me/Mrixs/MrixsCraft-launcher/internal/auth"
|
||||
"gitea.mrixs.me/Mrixs/MrixsCraft-launcher/internal/config"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("MrixsCraft Launcher starting...")
|
||||
// version is set via -ldflags at build time.
|
||||
var version = "dev"
|
||||
|
||||
func main() {
|
||||
log.Printf("MrixsCraft Launcher %s", version)
|
||||
|
||||
root, err := config.EnsureRoot()
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to initialise data directory: %v", err)
|
||||
}
|
||||
log.Printf("Data directory: %s", root)
|
||||
|
||||
// Try to restore an existing session.
|
||||
client, err := auth.NewFromConfig()
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create auth client: %v", err)
|
||||
}
|
||||
|
||||
sess, err := client.EnsureValid()
|
||||
if err != nil {
|
||||
log.Printf("Session check failed: %v", err)
|
||||
}
|
||||
|
||||
if sess != nil {
|
||||
log.Printf("Logged in as %s", sess.Username)
|
||||
} else {
|
||||
log.Println("No valid session — login required")
|
||||
}
|
||||
|
||||
// Bootstrap Fyne UI.
|
||||
a := app.New()
|
||||
w := a.NewWindow("MrixsCraft Launcher")
|
||||
w.Resize(fyne.NewSize(800, 600))
|
||||
w := a.NewWindow(fmt.Sprintf("MrixsCraft %s", version))
|
||||
w.Resize(fyne.NewSize(900, 600))
|
||||
w.CenterOnScreen()
|
||||
|
||||
w.SetContent(container.NewVBox(
|
||||
widget.NewLabel("MrixsCraft Launcher"),
|
||||
widget.NewLabel(fmt.Sprintf("MrixsCraft Launcher %s", version)),
|
||||
))
|
||||
|
||||
w.ShowAndRun()
|
||||
|
||||
Reference in New Issue
Block a user