summaryrefslogtreecommitdiff
path: root/internal/showcase/metadata.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/showcase/metadata.go')
-rw-r--r--internal/showcase/metadata.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/internal/showcase/metadata.go b/internal/showcase/metadata.go
index 147e714..79eaf4a 100644
--- a/internal/showcase/metadata.go
+++ b/internal/showcase/metadata.go
@@ -2,6 +2,7 @@ package showcase
import (
"fmt"
+ "math"
"os"
"os/exec"
"path/filepath"
@@ -28,6 +29,7 @@ type RepoMetadata struct {
LastCommitDate string
License string
AvgCommitAge float64 // Average age of last 42 commits in days
+ Score float64 // Project score combining LOC and recent activity: log10(LOC) * 1000 / (avgCommitAge + 1)
LatestTag string // Latest version tag (empty if no tags)
LatestTagDate string // Date of the latest tag (empty if no tags)
HasReleases bool // Whether the project has any releases/tags
@@ -89,6 +91,14 @@ func extractRepoMetadata(repoPath string) (*RepoMetadata, error) {
}
metadata.AvgCommitAge = avgAge
+ // Calculate score: log10(LOC) * 1000 / (avgCommitAge + 1)
+ // This balances project size with recent activity
+ score := 0.0
+ if metadata.LinesOfCode > 0 {
+ score = math.Log10(float64(metadata.LinesOfCode)) * 1000.0 / (metadata.AvgCommitAge + 1.0)
+ }
+ metadata.Score = score
+
// Get latest tag and check for releases
latestTag, latestTagDate, hasReleases, err := getLatestTag(repoPath)
if err != nil {