/// <summary> /// 获取下一个版本 /// </summary> /// <returns></returns> public TimeVersion GetNextVersion() { var t = dpz3.Time.Now; int y = this.Year; int m = this.Month; // 获取标识中的年月信息 int yy = this.Sign / 100; int mm = this.Sign % 100; // 获取当前年月信息 int ny = t.Year % 100; int nm = t.Month; if (yy != ny) { // 跨年 y++; m = 0; } else if (mm != nm) { // 跨月 m++; } // 新建一个版本并赋值 TimeVersion timeVersion = new TimeVersion() { Year = y, Month = m, Sign = ny * 100 + nm, Build = this.Build + 1 }; return(timeVersion); }
public IResult BuildPackage() { dpz3.db.Connection dbc = Host.Connection; string workFolder = Host.WorkFolder.Replace("\\", "/"); // 获取参数 string groupName = Request.Str["Group"]; string itemName = Request.Str["Item"]; if (!workFolder.EndsWith("/")) { workFolder += "/"; } string pathXml = $"{workFolder}conf/projects.xml"; string szXml = dpz3.File.UTF8File.ReadAllText(pathXml); dpz3.Xml.XmlDocument doc = dpz3.Xml.Parser.GetDocument(szXml); var xml = doc["xml"]; dpz3.Xml.XmlNode group = xml.GetNodeByAttr("name", groupName, false); dpz3.Xml.XmlNode item = null; if (group != null) { item = group.GetNodeByAttr("name", itemName, false); } if (item == null) { return(Fail("未发现项目信息")); } // 获取路径信息 // string workFolder = item.Attr["path"]; string path = item.Attr["path"].Replace("\\", "/"); // 判断路径是否指定 if (path.IsNoneOrNull()) { // Console.WriteLine($"[!] 未指定路径"); return(Fail("未指定路径")); } // 将路径进行处理 if (!path.EndsWith("/")) { path += "/"; } string pathCfg = $"{path}modular.json"; if (!System.IO.File.Exists(pathCfg)) { //Console.WriteLine($"[!] 未找到配置文件"); return(Fail("未找到配置文件")); } // 读取配置文件 // Console.WriteLine($"[*] 读取配置文件 {pathCfg} ..."); string szJson = dpz3.File.UTF8File.ReadAllText(pathCfg); string name; string version; using (var json = dpz3.Json.Parser.ParseJson(szJson)) { name = json.Str["name"]; version = json.Str["version"]; // Console.WriteLine($"[*] 当前版本 {version}"); var ver = new dpz3.TimeVersion(version); version = ver.GetNextVersion().ToString(); // Console.WriteLine($"[*] 新版本 {version}"); json.Str["version"] = version; dpz3.File.UTF8File.WriteAllText(pathCfg, json.ToJsonString()); } // 创建临时输出目录 string pathOutput = $"{path}output"; if (!System.IO.Directory.Exists(pathOutput)) { // Console.WriteLine($"[+] 创建目录 {pathOutput} ..."); System.IO.Directory.CreateDirectory(pathOutput); } // 复制配置文件 string pathOutputCfg = $"{pathOutput}/modular.json"; Console.WriteLine($"[+] 增加拷贝文件 {pathOutputCfg} ..."); System.IO.File.Copy(pathCfg, pathOutputCfg, true); // 复制静态页面 string pathRoot = $"{path}wwwroot"; if (System.IO.Directory.Exists(pathRoot)) { string pathOutputRoot = $"{pathOutput}/wwwroot"; if (!System.IO.Directory.Exists(pathOutputRoot)) { //Console.WriteLine($"[+] 创建目录 {pathOutputRoot} ..."); System.IO.Directory.CreateDirectory(pathOutputRoot); } // 复制需要打包的文件到临时文件夹中 CopyFolder(pathRoot, pathOutputRoot); } // 复制数据库定义文件夹 string pathXorm = $"{path}xorm"; if (System.IO.Directory.Exists(pathXorm)) { string pathOutputXorm = $"{pathOutput}/xorm"; if (!System.IO.Directory.Exists(pathOutputXorm)) { Console.WriteLine($"[+] 创建目录 {pathOutputXorm} ..."); System.IO.Directory.CreateDirectory(pathOutputXorm); } // 复制需要打包的文件到临时文件夹中 CopyFolder(pathXorm, pathOutputXorm); } // 复制控制器 string pathController = $"{path}controller/bin/Debug/netcoreapp3.1"; if (System.IO.Directory.Exists(pathController)) { // 复制需要打包的文件到临时文件夹中 CopyFolder(pathController, pathOutput); } // 建立包文件夹 string pathPackage = $"{path}package"; if (!System.IO.Directory.Exists(pathPackage)) { //Console.WriteLine($"[+] 创建目录 {pathPackage} ..."); System.IO.Directory.CreateDirectory(pathPackage); } // 打包文件 string pathPackageFile = $"{pathPackage}/{name}-{version}.zip"; //Console.WriteLine($"[+] 输出包文件 {pathPackageFile} ..."); ZipFile.CreateFromDirectory(pathOutput, pathPackageFile); // 清理临时目录 if (System.IO.Directory.Exists(pathOutput)) { //Console.WriteLine($"[-] 清理目录 {pathOutput} ..."); System.IO.Directory.Delete(pathOutput, true); } // 生成脚本文件 string pathBatFile = $"{pathPackage}/{name}.bat"; string cmd = $"@echo off\r\n" + $"cd ..\r\n" + $".\\pm /name {name} /version {version}\r\n" + $"cd downloads\r\n" + $"del {name}.bat\r\n" + $"pause"; dpz3.File.TextFile.WriteAllBytes(pathBatFile, System.Text.Encoding.ASCII.GetBytes(cmd)); return(Success("生成MP包成功")); }
static void MainProcess(string[] args) { var arg = new dpz3.Console.Arguments(args); string path = arg["path"]; // 判断路径是否指定 if (path.IsNoneOrNull()) { Console.WriteLine($"[!] 未指定路径"); return; } // 将路径进行处理 if (!path.EndsWith(it.SplitChar)) { path += it.SplitChar; } string pathCfg = $"{path}modular.json"; if (!System.IO.File.Exists(pathCfg)) { Console.WriteLine($"[!] 未找到配置文件"); return; } // 读取配置文件 Console.WriteLine($"[*] 读取配置文件 {pathCfg} ..."); string szJson = dpz3.File.UTF8File.ReadAllText(pathCfg); string name; string version; using (var json = dpz3.Json.Parser.ParseJson(szJson)) { name = json.Str["name"]; version = json.Str["version"]; Console.WriteLine($"[*] 当前版本 {version}"); var ver = new dpz3.TimeVersion(version); version = ver.GetNextVersion().ToString(); Console.WriteLine($"[*] 新版本 {version}"); json.Str["version"] = version; dpz3.File.UTF8File.WriteAllText(pathCfg, json.ToJsonString()); } // 创建临时输出目录 string pathOutput = $"{path}output"; if (!System.IO.Directory.Exists(pathOutput)) { Console.WriteLine($"[+] 创建目录 {pathOutput} ..."); System.IO.Directory.CreateDirectory(pathOutput); } // 复制配置文件 string pathOutputCfg = $"{pathOutput}{it.SplitChar}modular.json"; Console.WriteLine($"[+] 增加拷贝文件 {pathOutputCfg} ..."); System.IO.File.Copy(pathCfg, pathOutputCfg, true); // 复制静态页面 string pathRoot = $"{path}wwwroot"; if (System.IO.Directory.Exists(pathRoot)) { string pathOutputRoot = $"{pathOutput}{it.SplitChar}wwwroot"; if (!System.IO.Directory.Exists(pathOutputRoot)) { Console.WriteLine($"[+] 创建目录 {pathOutputRoot} ..."); System.IO.Directory.CreateDirectory(pathOutputRoot); } // 复制需要打包的文件到临时文件夹中 CopyFolder(pathRoot, pathOutputRoot); } // 复制数据库定义文件夹 string pathXorm = $"{path}xorm"; if (System.IO.Directory.Exists(pathXorm)) { string pathOutputXorm = $"{pathOutput}{it.SplitChar}xorm"; if (!System.IO.Directory.Exists(pathOutputXorm)) { Console.WriteLine($"[+] 创建目录 {pathOutputXorm} ..."); System.IO.Directory.CreateDirectory(pathOutputXorm); } // 复制需要打包的文件到临时文件夹中 CopyFolder(pathXorm, pathOutputXorm); } // 复制控制器 string pathController = $"{path}controller{it.SplitChar}bin{it.SplitChar}Debug{it.SplitChar}netcoreapp3.1"; if (System.IO.Directory.Exists(pathController)) { // 复制需要打包的文件到临时文件夹中 CopyFolder(pathController, pathOutput); } // 建立包文件夹 string pathPackage = $"{path}package"; if (!System.IO.Directory.Exists(pathPackage)) { Console.WriteLine($"[+] 创建目录 {pathPackage} ..."); System.IO.Directory.CreateDirectory(pathPackage); } // 打包文件 string pathPackageFile = $"{pathPackage}{it.SplitChar}{name}-{version}.zip"; Console.WriteLine($"[+] 输出包文件 {pathPackageFile} ..."); ZipFile.CreateFromDirectory(pathOutput, pathPackageFile); // 清理临时目录 if (System.IO.Directory.Exists(pathOutput)) { Console.WriteLine($"[-] 清理目录 {pathOutput} ..."); System.IO.Directory.Delete(pathOutput, true); } // 生成脚本文件 string pathBatFile = $"{pathPackage}{it.SplitChar}{name}.bat"; string cmd = $"@echo off\r\n" + $"cd ..\r\n" + $".\\pm /name {name} /version {version}\r\n" + $"cd downloads\r\n" + $"del {name}.bat\r\n" + $"pause"; dpz3.File.TextFile.WriteAllBytes(pathBatFile, System.Text.Encoding.ASCII.GetBytes(cmd)); }