Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
refactor and cleanup different version retrieval
  • Loading branch information
Chet Husk
Chet Husk committed Aug 28, 2015
commit f3c111aec30f1aae31acdb4435d2a25d03f26f83
51 changes: 26 additions & 25 deletions src/Paket.Bootstrapper/GitHubDownloadStrategy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,38 +22,39 @@ public GitHubDownloadStrategy(PrepareWebClientDelegate prepareWebClient, Prepare

public string GetLatestVersion(bool ignorePrerelease)
{
const string latest = "https://github.com/fsprojects/Paket/releases/latest";
const string releases = "https://github.com/fsprojects/Paket/releases";
using (var client = new WebClient())
{
if (ignorePrerelease)
{
PrepareWebClient(client, latest);
var data = client.DownloadString(latest);
var title = data.Substring(data.IndexOf("<title>"), (data.IndexOf("</title>") + 8 - data.IndexOf("<title>"))); // grabs everything in the <title> tag
var version = title.Split(' ')[1]; // <title>Release, 1.34.0, etc, etc, etc <-- the release number is the second part fo this split string
return version;
}
return GetLatestStable(client);
else
{
// have to iterate over the releases in the old manner.
var latestVersion = "";
var start = 0;
PrepareWebClient(client, releases);
var data = client.DownloadString(releases);
while (latestVersion == "")
{
start = data.IndexOf("Paket/tree/", start) + 11;
var end = data.IndexOf("\"", start);
latestVersion = data.Substring(start, end - start);
if (latestVersion.Contains("-") && ignorePrerelease)
latestVersion = "";
}
return latestVersion;
}
return GetLatestPrerelease(client);
}
}

private string GetLatestPrerelease(WebClient client)
{
const string releases = "https://github.com/fsprojects/Paket/releases";
// get the first release on this page
var latestVersion = "";
var start = 0;
PrepareWebClient(client, releases);
var data = client.DownloadString(releases);
start = data.IndexOf("Paket/tree/", start) + 11;
var end = data.IndexOf("\"", start);
latestVersion = data.Substring(start, end - start);
return latestVersion;
}

private string GetLatestStable(WebClient client)
{
const string latest = "https://github.com/fsprojects/Paket/releases/latest";
PrepareWebClient(client, latest);
var data = client.DownloadString(latest);
var title = data.Substring(data.IndexOf("<title>") + 7, (data.IndexOf("</title>") + 8 - data.IndexOf("<title>") + 7)); // grabs everything in the <title> tag
var version = title.Split(' ')[1]; // Release, 1.34.0, etc, etc, etc <-- the release number is the second part fo this split string
return version;
}

public void DownloadVersion(string latestVersion, string target, bool silent)
{
var url = String.Format("https://github.com/fsprojects/Paket/releases/download/{0}/paket.exe", latestVersion);
Expand Down