129 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using System.IO;
 | |
| using System.Text.RegularExpressions;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| namespace AdjustBuildRevision
 | |
| {
 | |
| 	class Program
 | |
| 	{
 | |
| 		static void Main(string[] args)
 | |
| 		{
 | |
| 			// args[0] - FileName
 | |
| 			try
 | |
| 			{
 | |
| 				FileInfo fi = new FileInfo(args[0]);
 | |
| 				DateTime dtLatest = GetLatestDateTime(fi.Directory.Parent,fi.LastWriteTime);
 | |
| 				if (fi.Exists)
 | |
| 				{
 | |
| 					StreamReader sr = fi.OpenText();
 | |
| 					string content = sr.ReadToEnd();
 | |
| 					sr.Close();
 | |
| 					string[] seps = { "\r\n" };
 | |
| 					string[] lines = content.Split(seps, StringSplitOptions.None);
 | |
| 					bool changed = false;
 | |
| 					for (int i = 0; i < lines.Length;i++ )
 | |
| 					{
 | |
| 						string line = lines[i];
 | |
| 						string outline = line;
 | |
| 						if (line.Contains("AssemblyVersion") || line.Contains("AssemblyFileVersion"))
 | |
| 						{
 | |
| 							// Allow for setting build revision on either proms or the roeditor:
 | |
| 							if (Directory.GetCurrentDirectory().ToUpper().Contains("REFOBJ"))
 | |
| 								outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")");
 | |
| 							else
 | |
| 								outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.2.yyMM.dHH") + "\")");
 | |
| 					//		if (outline != line)
 | |
| 					//		{
 | |
| 					//			Console.WriteLine("Before: '{0}'", line);
 | |
| 					//			Console.WriteLine("After:  '{0}'", outline);
 | |
| 					//			lines[i] = outline;
 | |
| 					//			changed = true;
 | |
| 					//		}
 | |
| 					//		else
 | |
| 					//		{
 | |
| 					//			Console.WriteLine("No change: '{0}'", line);
 | |
| 					//		}
 | |
| 					//	}
 | |
| 					//}
 | |
| 					//if (changed)
 | |
| 					//{
 | |
| 					//	if (!fi.IsReadOnly) fi.IsReadOnly = false;
 | |
| 					//	StreamWriter sw = fi.CreateText();
 | |
| 					//	foreach (string line in lines)
 | |
| 					//		sw.WriteLine(line);
 | |
| 					//	sw.Close();
 | |
| 					//	string line = lines[i];
 | |
| 					//	string outline = line;
 | |
| 					//	if (line.Contains("AssemblyVersion") || line.Contains("AssemblyFileVersion"))
 | |
| 					//	{
 | |
| 							//outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("1.1.yyMM.dHH") + "\")");
 | |
| 							if (outline != line)
 | |
| 							{
 | |
| 								Console.WriteLine("Before: '{0}'", line);
 | |
| 								Console.WriteLine("After:  '{0}'", outline);
 | |
| 								lines[i] = outline;
 | |
| 								changed = true;
 | |
| 							}
 | |
| 							else
 | |
| 							{
 | |
| 								Console.WriteLine("No change: '{0}'", line);
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 					if (changed)
 | |
| 					{
 | |
| 						if (!fi.IsReadOnly) fi.IsReadOnly = false;
 | |
| 						StreamWriter sw = fi.CreateText();
 | |
| 						foreach (string line in lines)
 | |
| 							sw.WriteLine(line);
 | |
| 						sw.Close();
 | |
| 					}
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					MessageBox.Show("File " + fi.FullName + " does not exist");
 | |
| 				}
 | |
| 			}
 | |
| 			catch (Exception ex)
 | |
| 			{
 | |
| 				MessageBox.Show(ex.Message, ex.GetType().FullName, MessageBoxButtons.OK, MessageBoxIcon.Error);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		//private static DateTime GetLatestDateTime(string path)
 | |
| 		//{
 | |
| 		//	return GetLatestDateTime(new DirectoryInfo(path));
 | |
| 		//}
 | |
| 		private static DateTime GetLatestDateTime(DirectoryInfo di, DateTime dtCheck)
 | |
| 		{
 | |
| 			DateTime dtMax = dtCheck;
 | |
| 			FileInfo[] myFiles = di.GetFiles();
 | |
| 			foreach(FileInfo myFile in myFiles)
 | |
| 			{
 | |
| 				DateTime dt = myFile.LastWriteTime;
 | |
| 				//if (dt > dtCheck)
 | |
| 				//{
 | |
| 					//Console.WriteLine("\"File\"\t\"{0}\"\t\"{1}\"\t{2}\t{3}",myFile.FullName,dt.ToString("1.1.yyMM.dHH"),dt,dtCheck);
 | |
| 					if(dtMax < dt) dtMax = dt;
 | |
| 				//}
 | |
| 			}
 | |
| 			DirectoryInfo[] myFolders = di.GetDirectories();
 | |
| 			foreach (DirectoryInfo diChild in myFolders)
 | |
| 			{
 | |
| 				DateTime dtChild = GetLatestDateTime(diChild,dtCheck);
 | |
| 				//if (dtChild > dtCheck)
 | |
| 				//{
 | |
| 					//Console.WriteLine("\"SubFolder\"\t\"{0}\"\t\"{1}\"\t{2}\t{3}", diChild.FullName, dtChild.ToString("1.1.yyMM.dHH"),dtChild,dtCheck);
 | |
| 					if(dtChild > dtMax) dtMax = dtChild;
 | |
| 				//}
 | |
| 			}
 | |
| 			//if(dtMax > dtCheck)
 | |
| 			//	Console.WriteLine("\"Folder\"\t\"{0}\"\t\"{1}\"", di.FullName, dtMax.ToString("1.1.yyMM.dHH"));
 | |
| 			return dtMax;
 | |
| 		}
 | |
| 	}
 | |
| }
 |