|
@@ -0,0 +1,137 @@
|
|
|
+using System;
|
|
|
+using System.Diagnostics;
|
|
|
+using LJLib.Cmd;
|
|
|
+using System.IO;
|
|
|
+using System.Text.RegularExpressions;
|
|
|
+using System.Windows.Forms;
|
|
|
+
|
|
|
+namespace NetGitTool
|
|
|
+{
|
|
|
+ class Program
|
|
|
+ {
|
|
|
+ static void Main(string[] args)
|
|
|
+ {
|
|
|
+ if (args == null || args.Length < 2)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var op = args[0].Trim();
|
|
|
+ var projectPath = args[1].Trim();
|
|
|
+ var config = args.Length >= 3 ? args[2] : string.Empty;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (projectPath.StartsWith("\""))
|
|
|
+ {
|
|
|
+ projectPath = projectPath.Substring(1, projectPath.Length - 1);
|
|
|
+ }
|
|
|
+ if (projectPath.EndsWith("\""))
|
|
|
+ {
|
|
|
+ projectPath = projectPath.Substring(0, projectPath.Length - 1);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var lastindex = projectPath.LastIndexOf("\"");
|
|
|
+ if (lastindex > 0)
|
|
|
+ {
|
|
|
+ config = projectPath.Substring(lastindex + 1).Trim().ToUpper();
|
|
|
+ projectPath = projectPath.Substring(0, lastindex);
|
|
|
+ }
|
|
|
+ else if (!Directory.Exists(projectPath))
|
|
|
+ {
|
|
|
+ lastindex = projectPath.LastIndexOf(" ");
|
|
|
+ if (lastindex > 0)
|
|
|
+ {
|
|
|
+ config = projectPath.Substring(lastindex + 1).Trim().ToUpper();
|
|
|
+ projectPath = projectPath.Substring(0, lastindex);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (projectPath.EndsWith("\\"))
|
|
|
+ {
|
|
|
+ projectPath = projectPath.Substring(0, projectPath.Length - 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Directory.Exists(projectPath))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (op == "/before")
|
|
|
+ {
|
|
|
+ var versionName = string.Empty;
|
|
|
+ var gitlog = CMDHelper.RunWithReturn("git log -1 --format=%D", projectPath);
|
|
|
+ if (gitlog.Contains("tag"))
|
|
|
+ {
|
|
|
+ var dscrpArr = gitlog.Split(',');
|
|
|
+ foreach(var item in dscrpArr)
|
|
|
+ {
|
|
|
+ var dscrpItem = item.Trim();
|
|
|
+ if(dscrpItem.StartsWith("tag: V"))
|
|
|
+ {
|
|
|
+ versionName = dscrpItem.Substring(5);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (string.IsNullOrEmpty(versionName))
|
|
|
+ {
|
|
|
+ versionName = CMDHelper.RunWithReturn("git describe --tags --dirty", projectPath);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var dirtyDscrp = CMDHelper.RunWithReturn("git describe --dirty", projectPath);
|
|
|
+ if (dirtyDscrp.EndsWith("-dirty"))
|
|
|
+ {
|
|
|
+ versionName += "-dirty";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!versionName.StartsWith("V"))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(config) && config != "RELEASE")
|
|
|
+ {
|
|
|
+ versionName += config;
|
|
|
+ }
|
|
|
+
|
|
|
+ var file = projectPath + "\\Properties\\AssemblyInfo.cs";
|
|
|
+ if (!File.Exists(file))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ string content;
|
|
|
+ using (var reader = File.OpenText(file))
|
|
|
+ {
|
|
|
+ content = reader.ReadToEnd();
|
|
|
+ }
|
|
|
+ File.Move(file, file + ".bak");
|
|
|
+ Regex regex = new Regex("AssemblyFileVersion\\(\".*\"\\)");
|
|
|
+ content = regex.Replace(content, string.Format("AssemblyFileVersion(\"{0}\")", versionName));
|
|
|
+ using (var writer = File.CreateText(file))
|
|
|
+ {
|
|
|
+ writer.Write(content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (op == "/after")
|
|
|
+ {
|
|
|
+ var file = projectPath + "\\Properties\\AssemblyInfo.cs";
|
|
|
+ var bakfile = file + ".bak";
|
|
|
+ if (!File.Exists(bakfile))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (File.Exists(file))
|
|
|
+ {
|
|
|
+ File.Delete(file);
|
|
|
+ }
|
|
|
+ File.Move(bakfile, file);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Trace.Write(string.Format("{0} {1}\r\n{2}", args[0].Trim(), args[1].Trim(), ex.ToString()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|