From 0d591e2e21611814bc187b1989afd5746bc324eb Mon Sep 17 00:00:00 2001 From: Fimeg Date: Wed, 29 Oct 2025 12:08:30 -0400 Subject: [PATCH] Fix missing utils package for fresh clones - Remove aggregator-server/internal/utils/ from gitignore - Add utils/version.go with version comparison functions - Resolves 'does not contain package' error when cloning from GitHub --- .gitignore | 1 - aggregator-server/internal/utils/version.go | 53 +++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 aggregator-server/internal/utils/version.go diff --git a/.gitignore b/.gitignore index f8c1dfe..301ef85 100644 --- a/.gitignore +++ b/.gitignore @@ -273,7 +273,6 @@ dev/ # Development packages and scripts aggregator-agent/pkg/ aggregator-server/scripts/ -aggregator-server/internal/utils/ # Build artifacts *.tar.gz diff --git a/aggregator-server/internal/utils/version.go b/aggregator-server/internal/utils/version.go new file mode 100644 index 0000000..39491e8 --- /dev/null +++ b/aggregator-server/internal/utils/version.go @@ -0,0 +1,53 @@ +package utils + +import ( + "strconv" + "strings" +) + +// CompareVersions compares two semantic version strings +// Returns: +// -1 if version1 < version2 +// 0 if version1 == version2 +// 1 if version1 > version2 +func CompareVersions(version1, version2 string) int { + // Parse version strings (expected format: "0.1.4") + v1Parts := parseVersion(version1) + v2Parts := parseVersion(version2) + + // Compare major, minor, patch versions + for i := 0; i < 3; i++ { + if v1Parts[i] < v2Parts[i] { + return -1 + } + if v1Parts[i] > v2Parts[i] { + return 1 + } + } + + return 0 +} + +// IsNewerVersion returns true if version1 is newer than version2 +func IsNewerVersion(version1, version2 string) bool { + return CompareVersions(version1, version2) == 1 +} + +// parseVersion parses a version string like "0.1.4" into [0, 1, 4] +func parseVersion(version string) [3]int { + // Default version if parsing fails + result := [3]int{0, 0, 0} + + // Remove any 'v' prefix and split by dots + cleanVersion := strings.TrimPrefix(version, "v") + parts := strings.Split(cleanVersion, ".") + + // Parse each part, defaulting to 0 if parsing fails + for i := 0; i < len(parts) && i < 3; i++ { + if num, err := strconv.Atoi(parts[i]); err == nil { + result[i] = num + } + } + + return result +} \ No newline at end of file