From 1477f2150031a66490f34cf72f801a41f0650341 Mon Sep 17 00:00:00 2001 From: Caelan Sayler Date: Sat, 20 Aug 2022 14:36:02 +0100 Subject: [PATCH] github-down should only download latest release --- src/Squirrel.CommandLine/SquirrelHost.cs | 8 +++--- .../Sync/GitHubRepository.cs | 25 +++++++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Squirrel.CommandLine/SquirrelHost.cs b/src/Squirrel.CommandLine/SquirrelHost.cs index 84bc6c84f..62e228dd9 100644 --- a/src/Squirrel.CommandLine/SquirrelHost.cs +++ b/src/Squirrel.CommandLine/SquirrelHost.cs @@ -64,10 +64,10 @@ public static int Main(string[] args) packageCommands, "", "[ Package Deployment / Syncing ]", - { "s3-down", "Download releases from S3 compatible API", new SyncS3Options(), o => Download(new S3Repository(o)) }, - { "s3-up", "Upload releases to S3 compatible API", new SyncS3Options(), o => Upload(new S3Repository(o)) }, - { "http-down", "Download releases from an HTTP source", new SyncHttpOptions(), o => Download(new SimpleWebRepository(o)) }, - { "github-down", "Download releases from GitHub", new SyncGithubOptions(), o => Download(new GitHubRepository(o)) }, + { "http-down", "Download latest release from HTTP", new SyncHttpOptions(), o => Download(new SimpleWebRepository(o)) }, + { "s3-down", "Download latest release from S3 API", new SyncS3Options(), o => Download(new S3Repository(o)) }, + { "s3-up", "Upload releases to S3 API", new SyncS3Options(), o => Upload(new S3Repository(o)) }, + { "github-down", "Download latest release from GitHub", new SyncGithubOptions(), o => Download(new GitHubRepository(o)) }, }; if (verbose) { diff --git a/src/Squirrel.CommandLine/Sync/GitHubRepository.cs b/src/Squirrel.CommandLine/Sync/GitHubRepository.cs index 9f7ed1cff..1645c3841 100644 --- a/src/Squirrel.CommandLine/Sync/GitHubRepository.cs +++ b/src/Squirrel.CommandLine/Sync/GitHubRepository.cs @@ -1,5 +1,6 @@ -using System; +using System; using System.IO; +using System.Linq; using System.Threading.Tasks; using Squirrel.SimpleSplat; using Squirrel.Sources; @@ -33,16 +34,26 @@ public async Task DownloadRecentPackages() return; } - Log.Info($"Found {latestReleaseEntries.Length} assets in latest release ({source.Release.Name})."); + Log.Info($"Found {latestReleaseEntries.Length} assets in RELEASES file for GitHub version {source.Release.Name}."); - foreach (var entry in latestReleaseEntries) { - var localFile = Path.Combine(releaseDirectoryInfo.FullName, entry.Filename); - if (File.Exists(localFile)) { - Log.Info($"File '{entry.Filename}' exists on disk, skipping download."); + var releasesToDownload = latestReleaseEntries + .Where(x => !x.IsDelta) + .OrderByDescending(x => x.Version) + .Take(1) + .Select(x => new { + Obj = x, + LocalPath = Path.Combine(releaseDirectoryInfo.FullName, x.Filename), + Filename = x.Filename, + }); + + foreach (var entry in releasesToDownload) { + if (File.Exists(entry.LocalPath)) { + Log.Warn($"File '{entry.Filename}' exists on disk, skipping download."); continue; } + Log.Info($"Downloading {entry.Filename}..."); - await source.DownloadReleaseEntry(entry, localFile, (p) => { }); + await source.DownloadReleaseEntry(entry.Obj, entry.LocalPath, (p) => { }); } ReleaseEntry.BuildReleasesFile(releaseDirectoryInfo.FullName);