public void GenerateCode(RamlInfo data, string targetNamespace, string clientRootClassName, string ramlDestFile, string destFolderPath, string destFolderName, ProjectItem ramlProjItem) { //var ramlInfo = await RamlInfoService.GetRamlInfo(ramlDestFile); //if (ramlInfo.HasErrors) //{ // ActivityLog.LogError(VisualStudioAutomationHelper.RamlVsToolsActivityLogSource, ramlInfo.ErrorMessage); // MessageBox.Show(ramlInfo.ErrorMessage); // return; //} var model = new ClientGeneratorService(data.RamlDocument, clientRootClassName, targetNamespace, targetNamespace + ".Models").BuildModel(); var directoryName = Path.GetDirectoryName(ramlDestFile).TrimEnd(Path.DirectorySeparatorChar); var templateFolder = directoryName.Substring(0, directoryName.LastIndexOf(Path.DirectorySeparatorChar)) + Path.DirectorySeparatorChar + "Templates" + Path.DirectorySeparatorChar; var templateFilePath = Path.Combine(templateFolder, ClientT4TemplateName); var extensionPath = Path.GetDirectoryName(GetType().Assembly.Location) + Path.DirectorySeparatorChar; var t4Service = new T4Service(ServiceProvider); var res = t4Service.TransformText(templateFilePath, model, extensionPath, ramlDestFile, targetNamespace); if (res.HasErrors) { ActivityLog.LogError(VisualStudioAutomationHelper.RamlVsToolsActivityLogSource, res.Errors); MessageBox.Show(res.Errors); return; } var content = TemplatesManager.AddClientMetadataHeader(res.Content); var csTargetFile = Path.Combine(destFolderPath, destFolderName + ".cs"); File.WriteAllText(csTargetFile, content); ramlProjItem.ProjectItems.AddFromFile(csTargetFile); }
public override void GenerateCode(RamlInfo data, Project proj, string targetNamespace, string clientRootClassName, string apiRefsFolderPath, string ramlDestFile, string destFolderPath, string destFolderName, ProjectItem ramlProjItem) { //ramlProjItem.Properties.Item("CustomTool").Value = string.Empty; // to cause a refresh when file already exists //ramlProjItem.Properties.Item("CustomTool").Value = "RamlClientTool"; var model = new ClientGeneratorService(data.RamlDocument, clientRootClassName, targetNamespace, targetNamespace + ".Models").BuildModel(); var directoryName = Path.GetDirectoryName(ramlDestFile).TrimEnd(Path.DirectorySeparatorChar); var templateFolder = directoryName.Substring(0, directoryName.LastIndexOf(Path.DirectorySeparatorChar)) + Path.DirectorySeparatorChar + "Templates" + Path.DirectorySeparatorChar; var templateFilePath = Path.Combine(templateFolder, ClientT4TemplateName); var extensionPath = Path.GetDirectoryName(GetType().Assembly.Location) + Path.DirectorySeparatorChar; TemplatesManager.CopyClientTemplateToProjectFolder(apiRefsFolderPath, "Client"); var t4Service = new T4Service(ServiceProvider); var res = t4Service.TransformText(templateFilePath, model, extensionPath, ramlDestFile, targetNamespace); if (res.HasErrors) { ActivityLog.LogError(VisualStudioAutomationHelper.RamlVsToolsActivityLogSource, res.Errors); MessageBox.Show(res.Errors); } else { var content = TemplatesManager.AddClientMetadataHeader(res.Content); var csTargetFile = Path.Combine(destFolderPath, destFolderName + ".cs"); File.WriteAllText(csTargetFile, content); ramlProjItem.ProjectItems.AddFromFile(csTargetFile); } }
public void GenerateCode(RamlInfo data, string targetNamespace, string clientRootClassName, string ramlDestFile, string destFolderPath, string destFolderName, ProjectItem ramlProjItem) { ThreadHelper.ThrowIfNotOnUIThread(); //var ramlInfo = await RamlInfoService.GetRamlInfo(ramlDestFile); //if (ramlInfo.HasErrors) //{ // ActivityLog.LogError(VisualStudioAutomationHelper.RamlVsToolsActivityLogSource, ramlInfo.ErrorMessage); // MessageBox.Show(ramlInfo.ErrorMessage); // return; //} var model = new ClientGeneratorService(data.RamlDocument, clientRootClassName, targetNamespace, targetNamespace + ".Models").BuildModel(); var directoryName = Path.GetDirectoryName(ramlDestFile).TrimEnd(Path.DirectorySeparatorChar); var templateFolder = directoryName.Substring(0, directoryName.LastIndexOf(Path.DirectorySeparatorChar)) + Path.DirectorySeparatorChar + "Templates" + Path.DirectorySeparatorChar; var templateFilePath = Path.Combine(templateFolder, ClientT4TemplateName); var extensionPath = Path.GetDirectoryName(GetType().Assembly.Location) + Path.DirectorySeparatorChar; // when array has no properties, set it collection on base type foreach (var arrayModel in model.Objects.Where(o => o.IsArray && o.Properties.Count == 0 && o.Type != null && CollectionTypeHelper.IsCollection(o.Type) && !NewNetTypeMapper.IsPrimitiveType(CollectionTypeHelper.GetBaseType(o.Type)))) { arrayModel.BaseClass = arrayModel.Type.Substring(1); // remove the initil "I" to make it a concrete class } var t4Service = new T4Service(ServiceProvider); var res = t4Service.TransformText(templateFilePath, model, extensionPath, ramlDestFile, targetNamespace); if (res.HasErrors) { ActivityLog.LogError(VisualStudioAutomationHelper.RamlVsToolsActivityLogSource, res.Errors); MessageBox.Show(res.Errors); return; } var content = TemplatesManager.AddClientMetadataHeader(res.Content); var csTargetFile = Path.Combine(destFolderPath, destFolderName + ".cs"); File.WriteAllText(csTargetFile, content); ramlProjItem.ProjectItems.AddFromFile(csTargetFile); }