Moved from core/cli as part of repo cleanup: - cmd/vanity-import/ — Go vanity import server - cmd/community/ — community landing page - cmd/updater/ — self-update service with Angular UI Co-Authored-By: Virgil <virgil@lethean.io>
2 KiB
2 KiB
Getting Started
This guide will help you integrate the updater library into your Go application.
Installation
To install the library, run:
go get github.com/snider/updater
Basic Usage
The updater library provides an UpdateService that simplifies the process of checking for and applying updates.
GitHub-based Updates
If you are hosting your releases on GitHub, you can configure the service to check your repository.
package main
import (
"fmt"
"log"
"github.com/snider/updater"
)
func main() {
// Configure the update service
config := updater.UpdateServiceConfig{
RepoURL: "https://github.com/your-username/your-repo",
Channel: "stable", // or "beta", "alpha", etc.
CheckOnStartup: updater.CheckAndUpdateOnStartup,
}
// Create the service
updateService, err := updater.NewUpdateService(config)
if err != nil {
log.Fatalf("Failed to create update service: %v", err)
}
// Start the service (checks for updates and applies them if configured)
if err := updateService.Start(); err != nil {
fmt.Printf("Update check/apply failed: %v\n", err)
} else {
fmt.Println("Update check completed.")
}
}
Generic HTTP Updates
If you are hosting your releases on a generic HTTP server, the server must provide a way to check for the latest version.
package main
import (
"fmt"
"log"
"github.com/snider/updater"
)
func main() {
config := updater.UpdateServiceConfig{
RepoURL: "https://your-server.com/updates",
CheckOnStartup: updater.CheckOnStartup, // Check only, don't apply automatically
}
updateService, err := updater.NewUpdateService(config)
if err != nil {
log.Fatalf("Failed to create update service: %v", err)
}
if err := updateService.Start(); err != nil {
fmt.Printf("Update check failed: %v\n", err)
}
}
For Generic HTTP updates, the endpoint is expected to return a JSON object with version and url fields. See Architecture for more details.