public override object GetValue()

in build/VersionInfoAttribute.cs [12:43]


        public override object GetValue(MemberInfo member, object instance) =>
            GetFromSpace() ?? GetFromGit() ?? GetFromTime();

        bool IsMainBranch(string branch) => 
            string.Equals(branch, "refs/heads/main", StringComparison.OrdinalIgnoreCase) ||
            string.Equals(branch, "main", StringComparison.OrdinalIgnoreCase);

        VersionInfo? GetFromSpace()
        {
            var versionInfo = File.Exists("version-info.txt")
                ? File.ReadAllText("version-info.txt").TrimStart('v')
                : $"{VersionMajor}.{VersionMinor}";

            var executionNumber = Environment.GetEnvironmentVariable("JB_SPACE_EXECUTION_NUMBER");
            var branch = Environment.GetEnvironmentVariable("JB_SPACE_GIT_BRANCH")?.Replace("refs/heads/", "").Replace("/", "-");
            var revision = Environment.GetEnvironmentVariable("JB_SPACE_GIT_REVISION");

            if (!string.IsNullOrEmpty(executionNumber) &&
                !string.IsNullOrEmpty(branch) &&
                !string.IsNullOrEmpty(revision))
            {
                return new VersionInfo(
                    $"{VersionMajor}.{VersionMinor}.{executionNumber}.0",
                    $"{VersionMajor}.{VersionMinor}.{executionNumber}.0",
                    $"{VersionMajor}.{VersionMinor}.{executionNumber}.0+Branch.{branch}.Sha.{revision}.Server.{versionInfo}",
                    IsMainBranch(branch) 
                        ? $"{versionInfo}.{executionNumber}"
                        : $"{versionInfo}-{branch}.{executionNumber}");
            }

            return null;
        }