mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-03-05 20:49:04 -08:00
feat(upgrade): do not upgrade to major versions automatically
resolves #5273
This commit is contained in:
parent
cdfd249b28
commit
55bc366a8a
|
@ -57,6 +57,13 @@ var upgradeCmd = &cobra.Command{
|
|||
|
||||
version := fmt.Sprintf("v%s", build.Version)
|
||||
|
||||
if upgrade.IsMajorUpgrade(build.Version, latest) {
|
||||
message := terminal.StopProgress()
|
||||
message += fmt.Sprintf("\n🚨 major upgrade available: %s -> %s, use oh-my-posh upgrade --force to upgrade\n\n", version, latest)
|
||||
fmt.Print(message)
|
||||
return
|
||||
}
|
||||
|
||||
if version != latest {
|
||||
executeUpgrade(latest)
|
||||
return
|
||||
|
|
|
@ -2,6 +2,7 @@ package upgrade
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/charmbracelet/bubbles/spinner"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
|
@ -144,3 +145,15 @@ func Run(latest string) error {
|
|||
|
||||
return programModel.error
|
||||
}
|
||||
|
||||
func IsMajorUpgrade(current, latest string) bool {
|
||||
if len(current) == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
getMajorNumber := func(version string) string {
|
||||
return strings.Split(version, ".")[0]
|
||||
}
|
||||
|
||||
return getMajorNumber(current) != getMajorNumber(latest)
|
||||
}
|
||||
|
|
25
src/upgrade/cli_test.go
Normal file
25
src/upgrade/cli_test.go
Normal file
|
@ -0,0 +1,25 @@
|
|||
package upgrade
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestIsMajorUpgrade(t *testing.T) {
|
||||
cases := []struct {
|
||||
Case string
|
||||
Expected bool
|
||||
CurrentVersion string
|
||||
LatestVersion string
|
||||
}{
|
||||
{Case: "Same version", Expected: false, CurrentVersion: "v3.0.0", LatestVersion: "v3.0.0"},
|
||||
{Case: "Breaking change", Expected: true, CurrentVersion: "v3.0.0", LatestVersion: "v4.0.0"},
|
||||
{Case: "Empty version, mostly development build", Expected: false, LatestVersion: "v4.0.0"},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
canUpgrade := IsMajorUpgrade(tc.CurrentVersion, tc.LatestVersion)
|
||||
assert.Equal(t, tc.Expected, canUpgrade, tc.Case)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue