cli/cmd/updater/docs/getting-started.md
Claude 7bb3488f0e
refactor: flatten commands, extract php/ci variants to own repos
- Remove internal/cmd/php/ (now core/php repo)
- Remove internal/cmd/ci/ and internal/cmd/sdk/ (now core/ci repo)
- Remove internal/variants/ build tag system entirely
- Move all 30 remaining command packages from internal/cmd/ to cmd/
- Rewrite main.go with direct imports (no more variant selection)
- Update all cross-references from internal/cmd/ to cmd/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 14:41:05 +00:00

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.