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.0.yyMM.dHH") + "\")");
else
outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("1.7.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;
}
}
}