feat: initial commit

This commit is contained in:
eric
2026-03-12 22:16:34 +01:00
parent 8555b02752
commit f13f4a9a69
155 changed files with 11988 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
package main
import (
"fmt"
"net/http"
"os"
"path/filepath"
"runtime"
"github.com/Eriyc/rules_wails/pkg/wails3kit/updates"
updatesdarwin "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/platform/darwin"
updateslinux "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/platform/linux"
updateswindows "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/platform/windows"
httpmanifest "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/providers/httpmanifest"
filestore "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/storage/file"
)
const (
productID = "com.eriyc.updater-example"
currentVersion = "0.1.0"
)
type updaterSettings struct {
ManifestURL string
Token string
}
func currentAppDescriptor() (updates.AppDescriptor, error) {
executablePath, err := os.Executable()
if err != nil {
return updates.AppDescriptor{}, err
}
workingDirectory, err := os.Getwd()
if err != nil {
return updates.AppDescriptor{}, err
}
return updates.AppDescriptor{
ProductID: productID,
CurrentVersion: currentVersion,
Channel: updates.ChannelStable,
OS: runtime.GOOS,
Arch: runtime.GOARCH,
ExecutablePath: executablePath,
Args: os.Args[1:],
WorkingDirectory: workingDirectory,
}, nil
}
func loadUpdaterSettings() updaterSettings {
settings := updaterSettings{
ManifestURL: os.Getenv("UPDATER_MANIFEST_URL"),
Token: os.Getenv("UPDATER_TOKEN"),
}
if settings.ManifestURL == "" {
settings.ManifestURL = "http://127.0.0.1:18765/manifest.json"
}
if settings.Token == "" {
settings.Token = "test-token"
}
return settings
}
func newController(app updates.AppDescriptor) (*updates.Controller, error) {
settings := loadUpdaterSettings()
provider, err := httpmanifest.New(httpmanifest.Config{
ManifestURL: settings.ManifestURL,
HTTPClient: http.DefaultClient,
PrepareRequest: func(request *http.Request) error {
request.Header.Set("Authorization", "Bearer "+settings.Token)
return nil
},
})
if err != nil {
return nil, err
}
platformInstaller, err := currentPlatformInstaller()
if err != nil {
return nil, err
}
return updates.NewController(updates.Config{
App: app,
Provider: provider,
Downloader: updates.NewHTTPDownloader(http.DefaultClient),
Store: filestore.New(filepath.Join(os.TempDir(), "wails3kit-example", "snapshot.json")),
Platform: platformInstaller,
})
}
func currentPlatformInstaller() (updates.PlatformInstaller, error) {
switch runtime.GOOS {
case "darwin":
return updatesdarwin.New(), nil
case "linux":
return updateslinux.New(), nil
case "windows":
return updateswindows.New(), nil
default:
return nil, fmt.Errorf("unsupported platform: %s", runtime.GOOS)
}
}