public AppUpdater(IHostApplicationLifetime applicationLifetime, IOptions <PrintSpoolerOptions> options, ILogger <AppUpdater> logger) { _applicationLifetime = applicationLifetime; _options = options.Value; _logger = logger; IPackageResolver resolver; if (_options.LocalPackageRepository is object) { resolver = new LocalPackageResolver(_options.LocalPackageRepository); } else { resolver = new GithubPackageResolver("rmja", "Cloudspool", "PrintSpooler-win64.zip"); } var entryAssembly = AssemblyMetadata.FromEntryAssembly(); var updateeName = _options.UpdateeName ?? entryAssembly.Name; var updatee = new AssemblyMetadata(updateeName, entryAssembly.Version, entryAssembly.FilePath); _um = new UpdateManager( updatee, resolver, new ZipPackageExtractor()); }
private async Task DownloadReloadedAsync(string downloadLocation, IProgress <double> downloadProgress) { CurrentStepDescription = "Downloading Reloaded II"; var resolver = new GithubPackageResolver("Reloaded-Project", "Reloaded-II", "Release.zip"); var versions = await resolver.GetPackageVersionsAsync(); var latestVersion = versions.First(); await resolver.DownloadPackageAsync(latestVersion, downloadLocation, downloadProgress, CancellationToken.Token); if (!File.Exists(downloadLocation)) { throw new Exception($"Reloaded failed to download (no file was written to disk)."); } }
public async Task GithubPackageResolver_DownloadAsync_Test() { // Arrange var version = Version.Parse("2.0"); var expectedContent = "Hello world"; // Act var resolver = new GithubPackageResolver("Tyrrrz", "OnovaTestRepo", "*.onv"); var destFilePath = Path.Combine(TempDirPath, "Output.onv"); await resolver.DownloadAsync(version, destFilePath); // Assert Assert.That(File.Exists(destFilePath)); Assert.That(File.ReadAllText(destFilePath), Is.EqualTo(expectedContent)); }
public async Task GithubPackageResolver_GetAllVersionsAsync_Test() { // This uses a stub repository (github.com/Tyrrrz/OnovaTestRepo) // Arrange var expectedVersions = new[] { Version.Parse("1.0"), Version.Parse("2.0"), Version.Parse("3.0") }; // Act var resolver = new GithubPackageResolver("Tyrrrz", "OnovaTestRepo", "Test.onv"); var versions = await resolver.GetAllVersionsAsync(); // Assert Assert.That(versions, Is.Not.Null); Assert.That(versions, Is.EquivalentTo(expectedVersions)); }
public async Task GithubPackageResolver_GetPackageAsync_Test() { // This uses a stub repository (github.com/Tyrrrz/OnovaTestRepo) // Arrange const string expectedContent = "Hello world"; // Act var resolver = new GithubPackageResolver("Tyrrrz", "OnovaTestRepo", "Test.onv"); var stream = await resolver.GetPackageAsync(Version.Parse("2.0")); // Assert Assert.That(stream, Is.Not.Null); using (stream) using (var reader = new StreamReader(stream)) { var content = await reader.ReadToEndAsync(); Assert.That(content, Is.EqualTo(expectedContent)); } }
public UpdateManager(string repoOwner, string repoName, string assetNamePattern) { PackageResolver = new GithubPackageResolver(repoOwner, repoName, assetNamePattern); }