// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package version // import "miniflux.app/v2/internal/version"

import (
	"runtime/debug"
)

// Variables populated at build time when using LD_FLAGS.
var (
	Version   = ""
	Commit    = ""
	BuildDate = ""
)

func getCommit() string {
	if info, ok := debug.ReadBuildInfo(); ok {
		for _, setting := range info.Settings {
			if setting.Key == "vcs.revision" {
				if len(setting.Value) >= 8 {
					return setting.Value[:8]
				}
				return setting.Value
			}
		}
	}
	return "Unknown (built outside VCS)"
}

func getBuildDate() string {
	if info, ok := debug.ReadBuildInfo(); ok {
		for _, setting := range info.Settings {
			if setting.Key == "vcs.time" {
				return setting.Value
			}
		}
	}
	return "Unknown (built outside VCS)"
}

// Populate build information from VCS metadata if LDFLAGS are not set.
// Falls back to values from the Go module's build info when available.
func init() {
	if Version == "" {
		// Some Miniflux clients expect a specific version format.
		// For example, Flux News converts the string version to an integer.
		Version = "2.3.x-dev"
	}
	if Commit == "" {
		Commit = getCommit()
	}
	if BuildDate == "" {
		BuildDate = getBuildDate()
	}
}
