예제 #1
0
        TaskResult UpdateProjectFileReferences(TaskResult result)
        {
            try
            {
                // For the build-level vb file:
                // Change
                //< Compile Include = "16.4\16.4.100\Upgrade.16.4.100.vb" />
                // To
                //< Compile Include = "16.4\16.4.6\Upgrade.16.4.6.vb" />

                // For Each build-level sql file:

                // Check for:
                //<Content Include="16.4\16.4.100\NotifyEventTypes.16.4.100.sql" />

                // Change
                //<EmbeddedResource Include="16.4\16.4.100\NotifyEventTypes.16.4.100.sql" />
                // To
                //<EmbeddedResource Include="16.4\16.4.6\NotifyEventTypes.16.4.6.sql" />
            }
            catch (Exception ex)
            {
                result.AddException(ex);
            }
            return(result);
        }
예제 #2
0
        /// <summary>
        /// Updates the build-specific vb file.
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        TaskResult UpdateBuildVersionVbFileContent(TaskResult result)
        {
            try
            {
                var pendingFileContent = File.ReadAllText(PendingVersionBuildVbFile);
                // update the class name.
                // Upgrade16_4_100
                var newFileContent = pendingFileContent.Replace(PendingUpgradeClassName, NewUpgradeClassName);
                // update the version declaration
                // Private Shared ReadOnly VersionConst As New Version(16, 4, 100)
                var pendingVersionDeclaration = String.Format(@"Private Shared ReadOnly VersionConst As New Version({0}, {1}, {2})", PendingDbVersion.Major, PendingDbVersion.Minor, PendingDbVersion.Build);
                var newVersionDeclaration     = String.Format(@"Private Shared ReadOnly VersionConst As New Version({0}, {1}, {2})", NewDbVersion.Major, NewDbVersion.Minor, NewDbVersion.Build);
                newFileContent = newFileContent.Replace(pendingVersionDeclaration, newVersionDeclaration);

                if (_isDebug)
                {
                    Console.WriteLine("Replacing File Content\r\n{0}\r\n--------------- with ---------------\r\n{1}", pendingFileContent, newFileContent);
                }

                File.WriteAllText(PendingVersionBuildVbFile, newFileContent);
            }
            catch (Exception ex)
            {
                result.AddException(ex);
            }
            return(result);
        }
예제 #3
0
 TaskResult VerifyEmbeddedResource(TaskResult result, string fileName)
 {
     try
     {
         var fileContent    = File.ReadAllText(UpgradeProjectVbProjectFile);
         var targetFileName = Path.GetFileName(fileName);
         //var targetFileLine = String.Format(@"xxx", 0, 1, 2, 3);
         var targetFileLine = String.Format("<EmbeddedResource Include=\"{0}.{1}\\{0}.{1}.{2}\\{3}\" />", PendingDbVersion.Major, PendingDbVersion.Minor, PendingDbVersion.Build, targetFileName);
         //<EmbeddedResource Include="16.4\16.4.5\NotifyEventTypes.16.4.5.sql" />
         //<EmbeddedResource Include="{0}.{1}\{0}.{1}.{2}\{3}" />
         if (fileContent.Contains(targetFileLine))
         {
             var newFileLine = String.Format("<EmbeddedResource Include=\"{0}.{1}\\{0}.{1}.{2}\\{3}\" />", NewDbVersion.Major, NewDbVersion.Minor, NewDbVersion.Build, targetFileName);
             fileContent = fileContent.Replace(targetFileLine, newFileLine);
             File.WriteAllText(UpgradeProjectVbProjectFile, fileContent);
         }
         else
         {
             result.AddError(String.Format("{0} is not set as an embedded resource!", targetFileName));
         }
     }
     catch (Exception ex)
     {
         result.AddException(ex);
     }
     return(result);
 }
예제 #4
0
        /// <summary>
        /// Renames all of the files in the build directory, and then renames the directory.
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        TaskResult UpdateBuildFiles(TaskResult result)
        {
            try
            {
                var pendingBuildFileDirectory = Path.GetDirectoryName(PendingVersionBuildVbFile);

                // rename the files in the build directory.
                foreach (string pendingSqlBuildFile in PendingBuildFiles)
                {
                    if (pendingSqlBuildFile.ToUpper().EndsWith("SQL"))
                    {
                        // verify embedded resource
                        result = VerifyEmbeddedResource(result, pendingSqlBuildFile);
                        if (!result.IsValid)
                        {
                            return(result);
                        }
                    }

                    var pendingBuildFileName = Path.GetFileName(pendingSqlBuildFile);
                    var newBuildFileTitle    = pendingBuildFileName.Replace(PendingBuildNumber, NewBuildNumber);
                    var newBuildFile         = Path.Combine(pendingBuildFileDirectory, newBuildFileTitle);
                    if (_isDebug)
                    {
                        Console.WriteLine("Renaming file {0} to {1}", pendingSqlBuildFile, newBuildFile);
                    }
                    // rename the script
                    File.Move(pendingSqlBuildFile, newBuildFile);
                }
                // update the build vb file content.
                UpdateBuildVersionVbFileContent(result);
                if (!result.IsValid)
                {
                    return(result);
                }

                var newBuildVbFile = Path.Combine(pendingBuildFileDirectory, Path.GetFileName(NewVersionBuildVbFile));
                if (_isDebug)
                {
                    Console.WriteLine("Renaming file {0} to {1}", PendingVersionBuildVbFile, newBuildVbFile);
                }
                // rename the build file.
                File.Move(PendingVersionBuildVbFile, newBuildVbFile);

                if (_isDebug)
                {
                    Console.WriteLine("Renaming directory {0} to {1}", PendingVersionBuildFolder, NewVersionBuildFolder);
                }
                // rename the build directory
                Directory.Move(PendingVersionBuildFolder, NewVersionBuildFolder);
            }
            catch (Exception ex)
            {
                result.AddException(ex);
            }
            return(result);
        }
예제 #5
0
 TaskResult RestoreBackupFiles(TaskResult result)
 {
     try
     {
     }
     catch (Exception ex)
     {
         result.AddException(ex);
     }
     return(result);
 }
예제 #6
0
 /// <summary>
 /// Executes the SetVersion script
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 TaskResult RunSetDbVersion(TaskResult result)
 {
     try
     {
         //Process.Start(@"C:\Users\rroberts\Source\Repos\Advantage\tools\version\SetVersion.ps1 -IncrementDb");
     }
     catch (Exception ex)
     {
         result.AddException(ex);
     }
     return(result);
 }
예제 #7
0
 /// <summary>
 /// Validates the version number increment.
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 TaskResult ValidateVersionIncrement(TaskResult result)
 {
     try
     {
         if (CurrentDbVersion.Major != VersionFileVersion.Major || CurrentDbVersion.Minor != VersionFileVersion.Minor || CurrentDbVersion.Build != VersionFileVersion.Build)
         {
             result.AddError("Version file and AdvUpgrade project out of sync!");
         }
     }
     catch (Exception ex)
     {
         result.AddException(ex);
     }
     return(result);
 }
예제 #8
0
        public TaskResult UpdateProject()
        {
            var result = new TaskResult()
            {
                IsValid = true
            };

            try
            {
                result = ValidateVersionIncrement(result);
                if (!result.IsValid)
                {
                    return(result);
                }

                result = BackupFiles(result);
                if (!result.IsValid)
                {
                    return(result);
                }

                result = UpdateBuildFiles(result);
                if (!result.IsValid)
                {
                    return(result);
                }

                result = UpdateMinorVersionFile(result);
                if (!result.IsValid)
                {
                    return(result);
                }

                result = RunSetDbVersion(result);
                if (!result.IsValid)
                {
                    return(result);
                }
            }
            catch (Exception ex)
            {
                result.AddException(ex);
            }
            return(result);
        }
예제 #9
0
        TaskResult BackupFiles(TaskResult result)
        {
            try
            {
                var backupDir = @"c:\Backups\DbVersionHelper\";

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

                var backupVersionDir = Path.Combine(backupDir, DateTime.Now.ToString("mmDDyyyy") + "-" + NewDbVersion.ToString());
                if (_isDebug)
                {
                    Console.WriteLine("Backing up directory {0}\r\n--------------- to ---------------\r\n{1}", PendingVersionBuildFolder, backupVersionDir);
                }
                DirectoryCopy(PendingVersionBuildFolder, backupVersionDir, true);
            }
            catch (Exception ex)
            {
                result.AddException(ex);
            }
            return(result);
        }
예제 #10
0
 /// <summary>
 /// Updates the Minor version vb file.
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 TaskResult UpdateMinorVersionFile(TaskResult result)
 {
     try
     {
         var fileContent = File.ReadAllText(MinorVersionVbFile);
         // update the class name.
         //Public Class Upgrade16_4_100
         if (fileContent.Contains(PendingUpgradeClassName))
         {
             fileContent = fileContent.Replace(PendingUpgradeClassName, NewUpgradeClassName);
         }
         else
         {
             // need to add the new class to the end of the list.
             fileContent = BuildMinorVersionVbFile();
         }
         File.WriteAllText(MinorVersionVbFile, fileContent);
     }
     catch (Exception ex)
     {
         result.AddException(ex);
     }
     return(result);
 }