mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-04-29 04:16:29 +00:00
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package version
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/kubeshark/kubeshark/misc"
|
|
"github.com/kubeshark/kubeshark/utils"
|
|
"github.com/rs/zerolog/log"
|
|
|
|
"github.com/google/go-github/v37/github"
|
|
)
|
|
|
|
func CheckNewerVersion() {
|
|
if os.Getenv(fmt.Sprintf("%s_DISABLE_VERSION_CHECK", strings.ToUpper(misc.Program))) != "" {
|
|
return
|
|
}
|
|
|
|
log.Info().Msg("Checking for a newer version...")
|
|
start := time.Now()
|
|
client := github.NewClient(nil)
|
|
latestRelease, _, err := client.Repositories.GetLatestRelease(context.Background(), misc.Program, misc.Program)
|
|
if err != nil {
|
|
log.Error().Msg("Failed to get the latest release.")
|
|
return
|
|
}
|
|
|
|
latestVersion := *latestRelease.TagName
|
|
|
|
log.Debug().
|
|
Str("upstream-version", latestVersion).
|
|
Str("local-version", misc.Ver).
|
|
Dur("elapsed-time", time.Since(start)).
|
|
Msg("Fetched the latest release:")
|
|
|
|
if misc.Ver != latestVersion {
|
|
var downloadCommand string
|
|
if runtime.GOOS == "windows" {
|
|
downloadCommand = fmt.Sprintf("curl -LO %v/%s.exe", strings.Replace(*latestRelease.HTMLURL, "tag", "download", 1), misc.Program)
|
|
} else {
|
|
downloadCommand = fmt.Sprintf("sh <(curl -Ls %s/install)", misc.Website)
|
|
}
|
|
msg := fmt.Sprintf("There is a new release! %v -> %v Please upgrade to the latest release, as new releases are not always backward compatible. Run:", misc.Ver, latestVersion)
|
|
log.Warn().Str("command", downloadCommand).Msg(fmt.Sprintf(utils.Yellow, msg))
|
|
}
|
|
}
|