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); }
/// <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); }
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); }
/// <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); }
TaskResult RestoreBackupFiles(TaskResult result) { try { } catch (Exception ex) { result.AddException(ex); } return(result); }
/// <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); }
/// <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); }
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); }
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); }
/// <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); }