Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            try
            {
                string startingPath = args[0];

                var repositoryVersionInformationLoader = new RepositoryVersionInformationLoader();

                RepositoryVersionInformation repositoryVersionInformation = repositoryVersionInformationLoader.GetRepositoryVersionInformation(startingPath);

                var calculator = new VersionCalculator();

                var version = calculator.CalculateVersion(
                    repositoryVersionInformation.LastTaggedVersion,
                    repositoryVersionInformation.AnnotationMessage,
                    repositoryVersionInformation.CommitsSinceLastTaggedVersion,
                    repositoryVersionInformation.PrereleaseOverride);

                Console.WriteLine("{");
                Console.WriteLine("\"Version\": \"" + version.Version + "\",");
                Console.WriteLine("\"NugetVersion\": \"" + version.NugetVersion + "\",");
                Console.WriteLine("\"InformationalVersion\": \"" + version.InformationalVersion + "\"");
                Console.WriteLine("}");
            }
            catch (Exception exception)
            {
                Console.WriteLine("Error occured: " + exception);
            }
        }
Exemplo n.º 2
0
        private RepositoryVersionInformation GetRepositoryVersionInformation()
        {
            string startingPath = this.SolutionDirectory;

            var repositoryVersionInformationLoader = new RepositoryVersionInformationLoader();

            RepositoryVersionInformation repositoryVersionInformation =
                repositoryVersionInformationLoader.GetRepositoryVersionInformation(startingPath);

            return(repositoryVersionInformation);
        }
Exemplo n.º 3
0
        public override bool Execute()
        {
            try
            {
                string startingPath = this.SolutionDirectory;

                var repositoryVersionInformationLoader = new RepositoryVersionInformationLoader();

                RepositoryVersionInformation repositoryVersionInformation = repositoryVersionInformationLoader.GetRepositoryVersionInformation(startingPath);

                this.Log.LogMessage(MessageImportance.Normal, "version pattern = " + repositoryVersionInformation.LastTaggedVersion + ", commits since tag = " + repositoryVersionInformation.CommitsSinceLastTaggedVersion);

                var calculator = new VersionCalculator();

                var version = calculator.CalculateVersion(
                    repositoryVersionInformation.LastTaggedVersion,
                    repositoryVersionInformation.AnnotationMessage,
                    repositoryVersionInformation.CommitsSinceLastTaggedVersion,
                    repositoryVersionInformation.PrereleaseOverride);

                this.Log.LogMessage(MessageImportance.Normal, "Version: " + version.Version);
                this.Log.LogMessage(MessageImportance.Normal, "NugetVersion: " + version.NugetVersion);
                this.Log.LogMessage(MessageImportance.Normal, "InformationalVersion:" + version.InformationalVersion);
                this.Log.LogMessage(MessageImportance.Normal, "PrereleaseOverride:" + repositoryVersionInformation.PrereleaseOverride);

                string versionAssemblyInfo = string.Format(
            @"
            using System;
            using System.Reflection;

            [assembly: AssemblyVersion(""{0}"")]
            [assembly: AssemblyFileVersion(""{0}"")]
            [assembly: AssemblyInformationalVersion(""{1}"")]
            ",
             version.Version,
             version.InformationalVersion);

                string tempFolder = Path.Combine(Path.GetTempPath(), "Appccelerate.VersionTask");

                if (!Directory.Exists(tempFolder))
                {
                    Directory.CreateDirectory(tempFolder);
                }

                foreach (string tempFilePath in Directory.GetFiles(tempFolder))
                {
                    try
                    {
                        // we cannot delete just all files because they might be used in other projects currently built
                        if (File.GetLastWriteTime(tempFilePath) < DateTime.Now.AddDays(-1))
                        {
                            File.Delete(tempFilePath);
                        }
                    }
                    // ReSharper disable once EmptyGeneralCatchClause
                    catch
                    {
                        // try next time
                    }
                }

                var tempFileName = string.Format("AssemblyInfo_{0}_{1}.g.cs", Path.GetFileNameWithoutExtension(this.ProjectFile), Path.GetRandomFileName());
                this.TempAssemblyInfoFilePath = Path.Combine(tempFolder, tempFileName);
                File.WriteAllText(this.TempAssemblyInfoFilePath, versionAssemblyInfo);

                TeamCity.WriteSetParameterMessage("Version", version.Version.ToString(), this.WriteToLog);
                TeamCity.WriteSetParameterMessage("InformationalVersion", version.InformationalVersion, this.WriteToLog);
                TeamCity.WriteSetParameterMessage("NugetVersion", version.NugetVersion, this.WriteToLog);

                return true;
            }
            catch (Exception exception)
            {
                this.Log.LogErrorFromException(exception);

                return false;
            }
        }