private void GeneratorJsForm(string entity, int i, int count) { var forms = new List <string>(); var isDebugForm = true; var webApi = true; var isDebugWebApi = true; var fileTypeScriptDeclaration = $"{currentDirectory}\\{json.rootfolder}\\{entity}.d.ts"; if (File.Exists(fileTypeScriptDeclaration)) { var lines = File.ReadAllLines(fileTypeScriptDeclaration); if (lines.Count() != 0) { var json = lines[lines.Length - 1]; var comment = SimpleJson.DeserializeObject <CommentTypeScriptDeclaration>(json.Substring("//".Length).Replace("'", "\"")); forms = comment.JsForm; isDebugForm = comment.IsDebugForm; webApi = comment.JsWebApi; isDebugWebApi = comment.IsDebugWebApi; } } if (forms.Count == 0) { var parts2 = json.rootnamespace.Split(".".ToCharArray()); var projectName2 = parts2.Length > 1 ? parts2[1] : parts2[0]; var jsForm2 = new JsForm(XrmHelper.GetIOrganizationService(crmServiceClient), projectName2, entity); forms = GetAllForms(entity, jsForm2); } if (forms.Count == 0) { return; } if (File.Exists($"{currentDirectory}\\{json.rootfolder}\\{entity}.js")) { var text = File.ReadAllText($"{currentDirectory}\\{json.rootfolder}\\{entity}.js"); text = text.Replace("\r\n", string.Empty); if (text.Length == 0 || text == $"//@ts-check///<reference path=\"{entity}.d.ts\" />") { Utility.TryDeleteFile($"{currentDirectory}\\{json.rootfolder}\\{entity}.js"); } } var parts = json.rootnamespace.Split(".".ToCharArray()); var projectName = parts.Length > 1 ? parts[1] : parts[0]; var jsForm = new JsForm(XrmHelper.GetIOrganizationService(crmServiceClient), projectName, entity); if (json.debug.Length > 0) { isDebugForm = json.debug == "yes" ? true : false; } jsForm.GeneratorCode(forms, isDebugForm, webApi, isDebugWebApi); if (!File.Exists($"{currentDirectory}\\{json.rootfolder}\\{entity}.js")) { var text = jsForm.Form; text = text.Replace($"[[{entity}]]", $"{entity}.d.ts"); Utility.ForceWriteAllText($"{currentDirectory}\\{json.rootfolder}\\{entity}.js", text); } var old = string.Empty; if (File.Exists(fileTypeScriptDeclaration)) { old = File.ReadAllText(fileTypeScriptDeclaration).Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); } var @new = jsForm.FormCodeTypeScriptDeclaration.Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); if (old != @new) { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorGreen, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Processing ", CliLog.ColorGreen, entity, ".d.ts"); Utility.ForceWriteAllText(fileTypeScriptDeclaration, jsForm.FormCodeTypeScriptDeclaration); } else { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorGreen, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "No change ", CliLog.ColorGreen, entity, ".d.ts"); } var fileForm = $"{currentDirectory}\\{json.rootfolder}\\{entity}.form.js"; old = string.Empty; if (File.Exists(fileForm)) { old = File.ReadAllText(fileForm).Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); } @new = jsForm.FormCode.Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); if (old != @new) { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorGreen, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Processing ", CliLog.ColorGreen, entity, ".form.js"); Utility.ForceWriteAllText(fileForm, jsForm.FormCode); } else { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorGreen, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "No change ", CliLog.ColorGreen, entity, ".form.js"); } }
private void GeneratorJsWebApi(string entity, int i, int count) { var jsForm = new List <string>(); var isDebugForm = false; var isDebugWebApi = false; var jsFormVersion = string.Empty; if (!File.Exists($"{currentDirectory}\\{json.rootfolder}\\{entity}.js")) { var text = string.Empty; text += "//@ts-check\r\n"; text += $"///<reference path=\"{entity}.d.ts\" />\r\n"; Utility.ForceWriteAllText($"{currentDirectory}\\{json.rootfolder}\\{entity}.js", text); CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Created ", CliLog.ColorGreen, entity, ".js"); } var fileTypeScriptDeclaration = $"{currentDirectory}\\{json.rootfolder}\\{entity}.d.ts"; if (File.Exists(fileTypeScriptDeclaration)) { var lines = File.ReadAllLines(fileTypeScriptDeclaration); if (lines.Count() != 0) { var json = lines[lines.Length - 1]; var comment = SimpleJson.DeserializeObject <CommentTypeScriptDeclaration>(json.Substring("//".Length).Replace("'", "\"")); isDebugWebApi = comment.IsDebugWebApi; jsForm = comment.JsForm; isDebugForm = comment.IsDebugForm; jsFormVersion = comment.JsFormVersion; } } var parts = json.rootnamespace.Split(".".ToCharArray()); var projectName = parts.Length > 1 ? parts[1] : parts[0]; if (json.debug.Length > 0) { isDebugWebApi = json.debug == "yes" ? true : false; } var jsWebApi = new JsWebApi(XrmHelper.GetIOrganizationService(crmServiceClient), projectName, entity, isDebugWebApi, jsForm, isDebugForm, jsFormVersion); jsWebApi.GeneratorCode(); var old = string.Empty; if (File.Exists(fileTypeScriptDeclaration)) { old = File.ReadAllText(fileTypeScriptDeclaration); //.Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); } var @new = jsWebApi.WebApiCodeTypeScriptDeclaration; //.Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); if (RemoveForCompare(old) != RemoveForCompare(@new)) { if (File.Exists(fileTypeScriptDeclaration)) { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Updated ", CliLog.ColorGreen, entity, ".d.ts"); } else { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Created ", CliLog.ColorGreen, entity, ".d.ts"); } Utility.ForceWriteAllText(fileTypeScriptDeclaration, jsWebApi.WebApiCodeTypeScriptDeclaration); } else { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorGreen, entity, ".d.ts"); } var fileWebApi = $"{currentDirectory}\\{json.rootfolder}\\{entity}.webapi.js"; old = string.Empty; if (File.Exists(fileWebApi)) { old = File.ReadAllText(fileWebApi); //.Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); } @new = jsWebApi.WebApiCode; //.Replace(" ", string.Empty).Replace("\r\n", string.Empty).Replace("\t", string.Empty); if (RemoveForCompare(old) != RemoveForCompare(@new)) { if (File.Exists(fileWebApi)) { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Updated ", CliLog.ColorGreen, entity, ".webapi.js"); } else { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorMagenta, "Created ", CliLog.ColorGreen, entity, ".webapi.js"); } Utility.ForceWriteAllText(fileWebApi, jsWebApi.WebApiCode); } else { CliLog.WriteLine(CliLog.ColorWhite, "|", CliLog.ColorBlue, string.Format("{0,0}{1," + count.ToString().Length + "}", "", i) + ": ", CliLog.ColorGreen, entity, ".webapi.js"); } }