public static List <string> GetProfiles(Project project, ToolWindowType toolWindowType) { if (toolWindowType == ToolWindowType.PluginTraceViewer) { return(null); } SpklConfig spklConfig = ConfigFile.GetSpklConfigFile(project); string projectPath = ProjectWorker.GetProjectPath(project); switch (toolWindowType) { case ToolWindowType.PluginDeployer: return(GetConfigProfiles(projectPath, spklConfig.plugins)); case ToolWindowType.SolutionPackager: return(GetConfigProfiles(projectPath, spklConfig.solutions)); case ToolWindowType.WebResourceDeployer: return(GetConfigProfiles(projectPath, spklConfig.webresources)); default: return(null); } }
public static void AddOrUpdateSpklMapping(Project project, string profile, SolutionPackageConfig solutionPackageConfig) { SpklConfig spklConfig = CoreMapping.GetSpklConfigFile(project); if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.solutions[0] = solutionPackageConfig; } else { SolutionPackageConfig existingSolutionPackageConfig = spklConfig.solutions.FirstOrDefault(s => s.profile == profile); if (existingSolutionPackageConfig != null && solutionPackageConfig != null) { existingSolutionPackageConfig.increment_on_import = solutionPackageConfig.increment_on_import; existingSolutionPackageConfig.map = solutionPackageConfig.map; existingSolutionPackageConfig.packagetype = solutionPackageConfig.packagetype; existingSolutionPackageConfig.packagepath = solutionPackageConfig.packagepath.Replace("/", string.Empty); existingSolutionPackageConfig.solution_uniquename = solutionPackageConfig.solution_uniquename; existingSolutionPackageConfig.solutionpath = FormatSolutionName(solutionPackageConfig.solutionpath); } } string projectPath = CrmDeveloperExtensions2.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static void AddSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { var spklConfigWebresourceFile = new SpklConfigWebresourceFile { uniquename = webResourceItem.Name, file = webResourceItem.BoundFile, description = webResourceItem.Description }; if (WebResourceTypes.GetExtensionType(webResourceItem.BoundFile) == D365DeveloperExtensions.Core.Enums.FileExtensionType.Ts) { spklConfigWebresourceFile.file = TsHelper.GetJsForTsPath(webResourceItem.BoundFile, project); spklConfigWebresourceFile.ts = webResourceItem.BoundFile; } if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files.Add(spklConfigWebresourceFile); } else { spklConfig.webresources.FirstOrDefault(w => w.profile == profile)?.files.Add(spklConfigWebresourceFile); } var projectPath = D365DeveloperExtensions.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static void UpdateSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { var spklConfigWebresourceFiles = GetSpklConfigWebresourceFiles(profile, spklConfig); if (spklConfigWebresourceFiles == null) { return; } if (!string.IsNullOrEmpty(webResourceItem.BoundFile)) { var isTs = WebResourceTypes.GetExtensionType(webResourceItem.BoundFile) == D365DeveloperExtensions.Core.Enums.FileExtensionType.Ts; foreach (var spklConfigWebresourceFile in spklConfigWebresourceFiles.Where(w => w.uniquename == webResourceItem.Name)) { spklConfigWebresourceFile.file = webResourceItem.BoundFile; spklConfigWebresourceFile.description = webResourceItem.Description; spklConfigWebresourceFile.ts = null; if (!isTs) { continue; } spklConfigWebresourceFile.file = TsHelper.GetJsForTsPath(webResourceItem.BoundFile, project); spklConfigWebresourceFile.ts = webResourceItem.BoundFile; } } else { spklConfigWebresourceFiles.RemoveAll(w => w.uniquename == webResourceItem.Name); } if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files = spklConfigWebresourceFiles; } else { var webresourceDeployConfig = spklConfig.webresources.FirstOrDefault(w => w.profile == profile); if (webresourceDeployConfig != null) { webresourceDeployConfig.files = spklConfigWebresourceFiles; } } var projectPath = D365DeveloperExtensions.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
public static PluginDeployConfig GetSpklPluginConfig(Project project, string profile) { SpklConfig spklConfig = D365DeveloperExtensions.Core.Config.Mapping.GetSpklConfigFile(project); List <PluginDeployConfig> spklPluginDeployConfigs = spklConfig.plugins; if (spklPluginDeployConfigs == null) { return(null); } return(profile.StartsWith(ExtensionConstants.NoProfilesText) ? spklPluginDeployConfigs[0] : spklPluginDeployConfigs.FirstOrDefault(p => p.profile == profile)); }
public static SolutionPackageConfig GetSolutionPackageConfig(Project project, string profile, ObservableCollection <CrmSolution> crmSolutions) { SpklConfig spklConfig = CoreMapping.GetSpklConfigFile(project); List <SolutionPackageConfig> spklSolutionPackageConfigs = spklConfig.solutions; if (spklSolutionPackageConfigs == null) { return(null); } SolutionPackageConfig solutionPackageConfig = profile.StartsWith(ExtensionConstants.NoProfilesText) ? spklSolutionPackageConfigs[0] : spklSolutionPackageConfigs.FirstOrDefault(p => p.profile == profile); return(solutionPackageConfig); }
public static void RemoveSpklMappings(SpklConfig spklConfig, Project project, string profile, List <SpklConfigWebresourceFile> crmDexExConfigWebResources) { string projectPath = CrmDeveloperExtensions2.Core.Vs.ProjectWorker.GetProjectPath(project); if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files .RemoveAll(w => crmDexExConfigWebResources.Any(m => m.uniquename == w.uniquename)); } else { spklConfig.webresources.FirstOrDefault(w => w.profile == profile)?.files .RemoveAll(w => crmDexExConfigWebResources.Any(m => m.uniquename == w.uniquename)); } ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
public static void AddOrUpdateSpklMapping(Project project, string profile, WebResourceItem webResourceItem) { SpklConfig spklConfig = CrmDeveloperExtensions2.Core.Config.Mapping.GetSpklConfigFile(project); List <SpklConfigWebresourceFile> spklConfigWebresourceFiles = GetSpklConfigWebresourceFiles(profile, spklConfig) ?? new List <SpklConfigWebresourceFile>(); SpklConfigWebresourceFile spklConfigWebresourceFile = spklConfigWebresourceFiles.FirstOrDefault(w => w.uniquename == webResourceItem.Name); if (spklConfigWebresourceFile == null) { AddSpklMapping(spklConfig, project, profile, webResourceItem); } else { UpdateSpklMapping(spklConfig, project, profile, webResourceItem); } }
private static void UpdateSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { List <SpklConfigWebresourceFile> spklConfigWebresourceFiles = GetSpklConfigWebresourceFiles(profile, spklConfig); if (spklConfigWebresourceFiles == null) { return; } if (!string.IsNullOrEmpty(webResourceItem.BoundFile)) { foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in spklConfigWebresourceFiles.Where(w => w.uniquename == webResourceItem.Name)) { spklConfigWebresourceFile.file = webResourceItem.BoundFile; spklConfigWebresourceFile.description = webResourceItem.Description; } } else { spklConfigWebresourceFiles.RemoveAll(w => w.uniquename == webResourceItem.Name); } if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files = spklConfigWebresourceFiles; } else { WebresourceDeployConfig webresourceDeployConfig = spklConfig.webresources.FirstOrDefault(w => w.profile == profile); if (webresourceDeployConfig != null) { webresourceDeployConfig.files = spklConfigWebresourceFiles; } } string projectPath = CrmDeveloperExtensions2.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static void AddSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { SpklConfigWebresourceFile spklConfigWebresourceFile = new SpklConfigWebresourceFile { uniquename = webResourceItem.Name, file = webResourceItem.BoundFile, description = webResourceItem.Description }; if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files.Add(spklConfigWebresourceFile); } else { spklConfig.webresources.FirstOrDefault(w => w.profile == profile)?.files.Add(spklConfigWebresourceFile); } string projectPath = CrmDeveloperExtensions2.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static SpklConfig RecreateConfig(Project project, string configPath) { try { bool fileExists = FileSystem.DoesFileExist(new[] { configPath }, true); if (fileExists) { FileSystem.RenameFile(configPath); } CreateSpklConfigFile(project); SpklConfig recreateConfig = GetSpklConfigFile(project, true); MessageBox.Show(Resource.MessageBox_RecreatedConfig); return(recreateConfig); } catch (Exception ex) { ExceptionHandler.LogException(Logger, Resource.ErrorMessage_RecreateConfigFile, ex); throw; } }
private static List <SpklConfigWebresourceFile> GetSpklConfigWebresourceFiles(string profile, SpklConfig spklConfig) { List <SpklConfigWebresourceFile> spklConfigWebresourceFiles = profile.StartsWith(ExtensionConstants.NoProfilesText) ? spklConfig.webresources[0].files : spklConfig.webresources.FirstOrDefault(w => w.profile == profile)?.files; return(spklConfigWebresourceFiles); }
public static ObservableCollection <WebResourceItem> HandleSpklMappings(Project project, string profile, ObservableCollection <WebResourceItem> webResourceItems) { SpklConfig spklConfig = CrmDeveloperExtensions2.Core.Config.Mapping.GetSpklConfigFile(project); List <SpklConfigWebresourceFile> mappingsToRemove = new List <SpklConfigWebresourceFile>(); var mappedWebResources = GetSpklConfigWebresourceFiles(profile, spklConfig); if (mappedWebResources == null) { return(webResourceItems); } //Remove mappings where CRM web resource was deleted foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in mappedWebResources) { if (webResourceItems.Count(w => w.Name == spklConfigWebresourceFile.uniquename) != 0) { continue; } mappingsToRemove.Add(spklConfigWebresourceFile); } mappedWebResources = mappedWebResources.Except(mappingsToRemove).ToList(); //Add bound file & description from mapping foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in mappedWebResources) { if (webResourceItems.Count(w => w.Name == spklConfigWebresourceFile.uniquename) <= 0) { continue; } List <WebResourceItem> matches = webResourceItems .Where(w => w.Name == spklConfigWebresourceFile.uniquename).ToList(); foreach (WebResourceItem match in matches) { match.Description = string.IsNullOrEmpty(spklConfigWebresourceFile.description) ? null : spklConfigWebresourceFile.description; match.BoundFile = spklConfigWebresourceFile.file; } } //Remove mappings where project file was deleted foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in mappedWebResources) { string mappedFilePath = FileSystem.BoundFileToLocalPath(spklConfigWebresourceFile.file, project.FullName); if (File.Exists(mappedFilePath)) { continue; } mappingsToRemove.Add(spklConfigWebresourceFile); webResourceItems.Where(w => w.BoundFile == spklConfigWebresourceFile.file).ToList().ForEach(w => w.BoundFile = null); } if (mappingsToRemove.Count > 0) { RemoveSpklMappings(spklConfig, project, profile, mappingsToRemove); } return(webResourceItems); }
/// <summary>Updates an configuration file.</summary> /// <param name="projectPath">The project path.</param> /// <param name="spklConfig">The configuration file.</param> public static void UpdateSpklConfigFile(string projectPath, SpklConfig spklConfig) { var text = JsonConvert.SerializeObject(spklConfig, Formatting.Indented); WriteSpklConfigFile(projectPath, text); }
public static ObservableCollection <WebResourceItem> HandleSpklMappings(Project project, string profile, ObservableCollection <WebResourceItem> webResourceItems) { SpklConfig spklConfig = D365DeveloperExtensions.Core.Config.Mapping.GetSpklConfigFile(project); var mappedWebResources = GetSpklConfigWebresourceFiles(profile, spklConfig); if (mappedWebResources == null) { return(webResourceItems); } //Lock mappings where CRM web resource was deleted foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in mappedWebResources) { if (webResourceItems.Count(w => w.Name == spklConfigWebresourceFile.uniquename) == 0) { webResourceItems.Where(w => w.Name == spklConfigWebresourceFile.uniquename).ToList() .ForEach(ww => ww.Locked = true); } } //Add bound file & description from mapping foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in mappedWebResources) { if (webResourceItems.Count(w => w.Name == spklConfigWebresourceFile.uniquename) <= 0) { continue; } List <WebResourceItem> matches = webResourceItems.Where(w => w.Name == spklConfigWebresourceFile.uniquename).ToList(); foreach (WebResourceItem match in matches) { match.Description = string.IsNullOrEmpty(spklConfigWebresourceFile.description) ? null : spklConfigWebresourceFile.description; match.BoundFile = string.IsNullOrEmpty(spklConfigWebresourceFile.ts) ? spklConfigWebresourceFile.file : spklConfigWebresourceFile.ts; } } //Lock mappings where project file was deleted foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in mappedWebResources) { string mappedFilePath = FileSystem.BoundFileToLocalPath(spklConfigWebresourceFile.file, project.FullName); string relativePath = ProjectItemWorker.GetRelativePathFromPath(ProjectWorker.GetProjectPath(project), mappedFilePath); bool inProject = ProjectWorker.IsFileInProjectFile(project.FullName, relativePath); if (File.Exists(mappedFilePath) && inProject) { continue; } if (!string.IsNullOrEmpty(spklConfigWebresourceFile.ts)) { mappedFilePath = FileSystem.BoundFileToLocalPath(spklConfigWebresourceFile.ts, project.FullName); } if (File.Exists(mappedFilePath) && inProject) { continue; } webResourceItems.Where(w => w.BoundFile == spklConfigWebresourceFile.file).ToList().ForEach(w => w.Locked = true); } return(webResourceItems); }