Files
MrixsCraft-launcher/cmd/launcher/main.go
Vladimir Zagainov 070b5c0262 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>
2026-05-26 06:35:09 +03:00

56 lines
1.2 KiB
Go

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"
)
// 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(fmt.Sprintf("MrixsCraft %s", version))
w.Resize(fyne.NewSize(900, 600))
w.CenterOnScreen()
w.SetContent(container.NewVBox(
widget.NewLabel(fmt.Sprintf("MrixsCraft Launcher %s", version)),
))
w.ShowAndRun()
}