public async Task <(string?MutagenVersion, string?SynthesisVersion)> GetLatestVersions(Version?dotNetVersion) { try { if (dotNetVersion == null) { Log.Logger.Error("Can not query for latest nuget versions as there is not dotnet SDK installed."); return(null, null); } Log.Logger.Information("Querying for latest published library versions"); var bootstrapProjectDir = new DirectoryPath(Path.Combine(Execution.Constants.WorkingDirectory, "VersionQuery")); bootstrapProjectDir.DeleteEntireFolder(); bootstrapProjectDir.Create(); var slnPath = Path.Combine(bootstrapProjectDir.Path, "VersionQuery.sln"); SolutionInitialization.CreateSolutionFile(slnPath); var projPath = Path.Combine(bootstrapProjectDir.Path, "VersionQuery.csproj"); SolutionInitialization.CreateProject(projPath, GameCategory.Skyrim); SolutionInitialization.AddProjectToSolution(slnPath, projPath); var ret = await DotNetQueries.QuerySynthesisVersions(projPath, current : false); Log.Logger.Information("Latest published library versions:"); Log.Logger.Information($" Mutagen: {ret.MutagenVersion}"); Log.Logger.Information($" Synthesis: {ret.SynthesisVersion}"); return(ret.MutagenVersion ?? this.MutagenVersion, ret.SynthesisVersion ?? this.SynthesisVersion); } catch (Exception ex) { Log.Logger.Error(ex, "Error querying for latest nuget versions"); return(null, null); } }
public void DepreciatedNugetParse() { DotNetQueries.TryParseLibraryLine( " > Mutagen.Bethesda.Synthesis 0.10.7.0 0.10.7 (D) 0.10.8.1", out var package, out var requested, out var resolved, out var latest) .Should().BeTrue(); package.Should().Be("Mutagen.Bethesda.Synthesis"); requested.Should().Be("0.10.7.0"); resolved.Should().Be("0.10.7"); latest.Should().Be("0.10.8.1"); }
public MainVM() { var dotNet = Observable.Interval(TimeSpan.FromSeconds(10), RxApp.TaskpoolScheduler) .StartWith(0) .SelectTask(async i => { try { var ret = await DotNetQueries.DotNetSdkVersion(); Log.Logger.Information($"dotnet SDK: {ret}"); return(ret); } catch (Exception ex) { Log.Logger.Error(ex, $"Error retrieving dotnet SDK version"); return(default(Version?)); } }); DotNetSdkInstalled = dotNet .Take(1) .Merge(dotNet .FirstAsync(v => v != null)) .DistinctUntilChanged() .Replay(1) .RefCount(); Configuration = new ConfigurationVM(this); ActivePanel = Configuration; DiscardActionCommand = ReactiveCommand.Create(() => ActiveConfirmation = null); ConfirmActionCommand = ReactiveCommand.Create( () => { if (ActiveConfirmation == null) { return; } ActiveConfirmation.ToDo(); ActiveConfirmation = null; }); _Hot = this.WhenAnyValue(x => x.ActivePanel) .Select(x => { switch (x) { case ConfigurationVM config: return(config.WhenAnyFallback(x => x.CurrentRun !.Running, fallback: false)); case PatchersRunVM running: return(running.WhenAnyValue(x => x.Running)); default: break; } return(Observable.Return(false)); }) .Switch() .DistinctUntilChanged() .ToGuiProperty(this, nameof(Hot)); OpenProfilesPageCommand = ReactiveCommand.Create(() => { ActivePanel = new ProfilesDisplayVM(Configuration, ActivePanel); }, canExecute: Observable.CombineLatest( this.WhenAnyFallback(x => x.Configuration.CurrentRun !.Running, fallback: false), this.WhenAnyValue(x => x.ActivePanel) .Select(x => x is ProfilesDisplayVM), (running, isProfile) => !running && !isProfile)); IdeOptions.AddRange(EnumExt.GetValues <IDE>()); Task.Run(() => Mutagen.Bethesda.WarmupAll.Init()).FireAndForget(); SynthesisVersion = Mutagen.Bethesda.Synthesis.Versions.SynthesisVersion; MutagenVersion = Mutagen.Bethesda.Synthesis.Versions.MutagenVersion; var latestVersions = Observable.Return(Unit.Default) .ObserveOn(RxApp.TaskpoolScheduler) .CombineLatest( DotNetSdkInstalled, (_, v) => v) .SelectTask(GetLatestVersions) .Replay(1) .RefCount(); NewestMutagenVersion = latestVersions .Select(x => x.MutagenVersion); NewestSynthesisVersion = latestVersions .Select(x => x.SynthesisVersion); // Switch to DotNet screen if missing DotNetSdkInstalled .Subscribe(v => { if (v == null) { ActivePanel = new DotNetNotInstalledVM(this, this.ActivePanel, DotNetSdkInstalled); } }); }