package app

import (
	"fmt"
	"runtime"
)

// Name of the app
const Name = "datarhei-core"

// Variant distinguishes a Dragon Fork build from upstream Datarhei
// Core in the startup banner and in the /api/v3/about endpoint
// payload. Empty would imply an upstream build; we override the
// linker default with the fork identity.
//
// Kept as a var (not const) so a downstream packager can override it
// at build time via -ldflags="-X github.com/datarhei/core/v16/app.Variant=…"
// without forking the source.
var Variant = "dragonfork"

// Fork carries the human-readable fork name surfaced in logs.
var Fork = "Datarhei — Dragon Fork"

type versionInfo struct {
	Major int
	Minor int
	Patch int
}

func (v versionInfo) String() string {
	return fmt.Sprintf("%d.%d.%d", v.Major, v.Minor, v.Patch)
}

func (v versionInfo) MajorString() string {
	return fmt.Sprintf("%d.0.0", v.Major)
}

func (v versionInfo) MinorString() string {
	return fmt.Sprintf("%d.%d.0", v.Major, v.Minor)
}

// Version of the app
var Version = versionInfo{
	Major: 16,
	Minor: 16,
	Patch: 0,
}

// Commit is the git commit the app is build from. It should be filled in during compilation
var Commit = ""

// Branch is the git branch the app is build from. It should be filled in during compilation
var Branch = ""

// Build is the timestamp of when the app has been build. It should be filled in during compilation
var Build = ""

// Arch is the OS and CPU architecture this app is build for.
var Arch = runtime.GOOS + "/" + runtime.GOARCH

// Compiler is the golang version this app has been build with.
var Compiler = runtime.Version()
