public void OpenBasedOnArguments(WarwolfStartupEventArgs e) { if (e.Args.Any(p => p.Contains("-merge"))) { _mergeFactory.OpenMergeWindow(_shellViewModel, e); } else { foreach (var item in e.Args) { _shellViewModel.LoadWorkflowAsync(item.Replace("\"", "")); } } }
public void OpenMergeWindow(IShellViewModel shellViewModel, WarwolfStartupEventArgs args) { VerifyArgument.IsNotNull(nameof(shellViewModel), shellViewModel); VerifyArgument.IsNotNull(nameof(args), args); var cleanPath = args.Args[1].Replace('^', ' '); var mergeHeadPath = cleanPath; using (var stream = File.OpenRead(mergeHeadPath)) { using (var streamReader = new StreamReader(stream)) { var resourceContent = streamReader.ReadToEnd(); var resourceXml = resourceContent; var serviceXml = XDocument.Parse(resourceXml); var resourceId = GetAttributeValue(serviceXml, "ID"); var serverID = GetAttributeValue(serviceXml, "ServerID"); var serverRepo = CustomContainer.Get <IServerRepository>(); var localResource = serverRepo.Source.ResourceRepository.LoadContextualResourceModel(new Guid(resourceId)); var resoureSource = serverRepo.Get(new Guid(serverID)); if (resoureSource != null) { var remoteResource = resoureSource.ResourceRepository.LoadContextualResourceModel(new Guid(resourceId)); shellViewModel.OpenMergeConflictsView(localResource, remoteResource, true); } else { var resource = new Resource(resourceContent.ToStringBuilder().ToXElement()); var remoteResource = new ResourceModel(serverRepo.ActiveServer) { DisplayName = resource.ResourceName, DataList = resource.DataList.ToString(), ID = new Guid(resourceId), WorkflowXaml = serviceXml.Element("Service").Element("Action").ToString(SaveOptions.DisableFormatting).ToStringBuilder() }; shellViewModel.OpenMergeConflictsView(localResource, remoteResource, false); } } } }