mirror of
https://github.com/kairos-io/kairos-agent.git
synced 2025-04-28 03:32:27 +00:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
|
||
|
"github.com/c3os-io/c3os/internal/github"
|
||
|
"github.com/c3os-io/c3os/internal/utils"
|
||
|
)
|
||
|
|
||
|
func upgrade(version, image string, force bool) error {
|
||
|
if version == "" && image == "" {
|
||
|
githubRepo, err := utils.OSRelease("GITHUB_REPO")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
releases, _ := github.FindReleases(context.Background(), "", githubRepo)
|
||
|
version = releases[0]
|
||
|
fmt.Println("latest release is ", version)
|
||
|
}
|
||
|
|
||
|
if utils.Version() == version && !force {
|
||
|
fmt.Println("latest version already installed. use --force to force upgrade")
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
flavor := utils.Flavor()
|
||
|
if flavor == "" {
|
||
|
return errors.New("no flavor detected")
|
||
|
}
|
||
|
|
||
|
registry, err := utils.OSRelease("IMAGE_REPO")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
img := fmt.Sprintf("%s:%s-%s", registry, flavor, version)
|
||
|
if image != "" {
|
||
|
img = image
|
||
|
}
|
||
|
|
||
|
args := []string{"upgrade", "--system.uri", fmt.Sprintf("docker:%s", img)}
|
||
|
cmd := exec.Command("elemental", args...)
|
||
|
cmd.Env = os.Environ()
|
||
|
cmd.Stdout = os.Stdout
|
||
|
cmd.Stdin = os.Stdin
|
||
|
cmd.Stderr = os.Stderr
|
||
|
return cmd.Run()
|
||
|
}
|