package release

import (
	"strconv"
	"strings"
)

// IsNewer возвращает true, если версия remote строго новее local.
// Понимает semver вида "MAJOR.MINOR.PATCH" (с опциональным префиксом "v"
// и суффиксом "-beta" — суффикс игнорируется при сравнении чисел).
// Некорректные/пустые версии считаются «старыми» (0.0.0).
func IsNewer(remote, local string) bool {
	rm := parseVer(remote)
	lc := parseVer(local)
	for i := 0; i < 3; i++ {
		if rm[i] != lc[i] {
			return rm[i] > lc[i]
		}
	}
	return false
}

func parseVer(s string) [3]int {
	s = strings.TrimSpace(s)
	s = strings.TrimPrefix(s, "v")
	if i := strings.IndexAny(s, "-+"); i >= 0 {
		s = s[:i] // отбрасываем -beta, +build
	}
	var out [3]int
	parts := strings.Split(s, ".")
	for i := 0; i < 3 && i < len(parts); i++ {
		n, _ := strconv.Atoi(parts[i])
		out[i] = n
	}
	return out
}
