/// <summary> /// Download assets from a previous release into the releases folder. /// </summary> /// <param name="release"></param> private static void getAssetsFromRelease(GitHubRelease release) { if (!canGitHub) { return; } //there's a previous release for this project. var assetReq = new JsonWebRequest <List <GitHubObject> >($"{GitHubApiEndpoint}/{release.Id}/assets"); assetReq.AuthenticatedBlockingPerform(); var assets = assetReq.ResponseObject; //make sure our RELEASES file is the same as the last build on the server. var releaseAsset = assets.FirstOrDefault(a => a.Name == "RELEASES"); //if we don't have a RELEASES asset then the previous release likely wasn't a Squirrel one. if (releaseAsset == null) { return; } bool requireDownload = false; if (!File.Exists(Path.Combine(releases_folder, $"{PackageName}-{release.Name}-full.nupkg"))) { write("Last version's package not found locally.", ConsoleColor.Red); requireDownload = true; } else { var lastReleases = new RawFileWebRequest($"{GitHubApiEndpoint}/assets/{releaseAsset.Id}"); lastReleases.AuthenticatedBlockingPerform(); if (File.ReadAllText(Path.Combine(releases_folder, "RELEASES")) != lastReleases.ResponseString) { write("Server's RELEASES differed from ours.", ConsoleColor.Red); requireDownload = true; } } if (!requireDownload) { return; } write("Refreshing local releases directory..."); refreshDirectory(releases_folder); foreach (var a in assets) { if (a.Name.EndsWith(".exe") || a.Name.EndsWith(".app.zip")) { continue; } write($"- Downloading {a.Name}...", ConsoleColor.Yellow); new FileWebRequest(Path.Combine(releases_folder, a.Name), $"{GitHubApiEndpoint}/assets/{a.Id}").AuthenticatedBlockingPerform(); } }
private static void checkGitHubReleases() { if (!canGitHub) { return; } write("Checking GitHub releases..."); var req = new JsonWebRequest <List <GitHubRelease> >($"{GitHubApiEndpoint}"); req.AuthenticatedBlockingPerform(); var lastRelease = req.ResponseObject.FirstOrDefault(); if (lastRelease == null) { return; } if (lastRelease.Draft) { openGitHubReleasePage(); error("There's a pending draft release! You probably don't want to push a build with this present."); } //there's a previous release for this project. var assetReq = new JsonWebRequest <List <GitHubObject> >($"{GitHubApiEndpoint}/{lastRelease.Id}/assets"); assetReq.AuthenticatedBlockingPerform(); var assets = assetReq.ResponseObject; //make sure our RELEASES file is the same as the last build on the server. var releaseAsset = assets.FirstOrDefault(a => a.Name == "RELEASES"); //if we don't have a RELEASES asset then the previous release likely wasn't a Squirrel one. if (releaseAsset == null) { return; } write($"Last GitHub release was {lastRelease.Name}."); bool requireDownload = false; if (!File.Exists(Path.Combine(ReleasesFolder, nupkgDistroFilename(lastRelease.Name)))) { write("Last version's package not found locally.", ConsoleColor.Red); requireDownload = true; } else { var lastReleases = new RawFileWebRequest($"{GitHubApiEndpoint}/assets/{releaseAsset.Id}"); lastReleases.AuthenticatedBlockingPerform(); if (File.ReadAllText(Path.Combine(ReleasesFolder, "RELEASES")) != lastReleases.ResponseString) { write("Server's RELEASES differed from ours.", ConsoleColor.Red); requireDownload = true; } } if (!requireDownload) { return; } write("Refreshing local releases directory..."); refreshDirectory(ReleasesFolder); foreach (var a in assets) { if (a.Name.EndsWith(".exe")) { continue; } write($"- Downloading {a.Name}...", ConsoleColor.Yellow); new FileWebRequest(Path.Combine(ReleasesFolder, a.Name), $"{GitHubApiEndpoint}/assets/{a.Id}").AuthenticatedBlockingPerform(); } }