public static void ShowAddPackageDialog(string selectedFileName, string projectGuid = null) { Paket.Dependencies dependenciesFile = null; try { dependenciesFile = Paket.Dependencies.Locate(selectedFileName); } catch (Exception) { var dir = new System.IO.FileInfo(SolutionExplorerExtensions.GetSolutionFileName()).Directory.FullName; Dependencies.Init(dir); dependenciesFile = Paket.Dependencies.Locate(selectedFileName); } var secondWindow = new AddPackage(); //Create observable paket trace var paketTraceObs = Observable.Create <Logging.Trace>(observer => { [email protected](x => observer.OnNext(x)); return(Disposable.Create(() => { })); }); Action <NugetResult> addPackageToDependencies = result => { if (projectGuid != null) { var guid = Guid.Parse(projectGuid); SolutionExplorerExtensions.UnloadProject(guid); dependenciesFile.AddToProject(Microsoft.FSharp.Core.FSharpOption <string> .None, result.PackageName, "", false, false, false, false, selectedFileName, true, SemVerUpdateMode.NoRestriction); SolutionExplorerExtensions.ReloadProject(guid); } else { dependenciesFile.Add(Microsoft.FSharp.Core.FSharpOption <string> .None, result.PackageName, "", false, false, false, false, false, true, SemVerUpdateMode.NoRestriction); } }; Func <string, IObservable <string> > searchNuGet = searchText => Observable.Create <string>(obs => { var disposable = new CancellationDisposable(); dependenciesFile .SearchPackagesByName( searchText, FSharpOption <CancellationToken> .Some(disposable.Token), FSharpOption <int> .None) .Subscribe(obs); return(disposable); }); //TODO: Use interfaces? secondWindow.ViewModel = new AddPackageViewModel(searchNuGet, addPackageToDependencies, paketTraceObs); secondWindow.ShowDialog(); }
public static void ShowAddPackageDialog(string selectedFileName, string projectGuid = null) { Paket.Dependencies dependenciesFile = null; try { dependenciesFile = Dependencies.Locate(selectedFileName); } catch (Exception) { var dir = new System.IO.FileInfo(SolutionExplorerExtensions.GetSolutionFileName()).Directory.FullName; PaketLauncher.LaunchPaket(dir, "init", (send, args) => PaketOutputPane.OutputPane.OutputStringThreadSafe(args.Data + "\n")); dependenciesFile = Dependencies.Locate(selectedFileName); } var secondWindow = new AddPackage(); //Create observable paket trace var paketTraceObs = Observable.Create <Logging.Trace>(observer => { [email protected](x => observer.OnNext(x)); return(Disposable.Create(() => { })); }); Action <NugetResult> addPackageToDependencies = result => { if (projectGuid != null) { var guid = Guid.Parse(projectGuid); DteHelper.ExecuteCommand("File.SaveAll"); SolutionExplorerExtensions.UnloadProject(guid); PaketLauncher.LaunchPaket(SolutionExplorerExtensions.GetSolutionDirectory(), "add " + result.PackageName + " --project " + selectedFileName, (send, args) => PaketOutputPane.OutputPane.OutputStringThreadSafe(args.Data + "\n")); SolutionExplorerExtensions.ReloadProject(guid); } else { PaketLauncher.LaunchPaket(SolutionExplorerExtensions.GetSolutionDirectory(), "add " + result.PackageName, (send, args) => PaketOutputPane.OutputPane.OutputStringThreadSafe(args.Data + "\n")); } }; Func <string, IObservable <string> > searchNuGet = searchText => Observable.Create <string>(obs => { var disposable = new CancellationDisposable(); dependenciesFile .SearchPackagesByName( searchText, FSharpOption <CancellationToken> .Some(disposable.Token), FSharpOption <int> .None) .Subscribe(obs); return(disposable); }); //TODO: Use interfaces? secondWindow.ViewModel = new AddPackageViewModel(searchNuGet, addPackageToDependencies, paketTraceObs); secondWindow.ShowDialog(); }