Skip to content

Commit

Permalink
Merge pull request #1022 from baronfel/bootstrapper_url
Browse files Browse the repository at this point in the history
rework github strategy to use a more direct method in the common case…
  • Loading branch information
forki committed Aug 28, 2015
2 parents f88a204 + f3c111a commit 1990385
Showing 1 changed file with 27 additions and 14 deletions.
41 changes: 27 additions & 14 deletions src/Paket.Bootstrapper/GitHubDownloadStrategy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,39 @@ public GitHubDownloadStrategy(PrepareWebClientDelegate prepareWebClient, Prepare

public string GetLatestVersion(bool ignorePrerelease)
{
string latestVersion = "";
using (var client = new WebClient())
{
const string releasesUrl = "https://github.com/fsprojects/Paket/releases";
PrepareWebClient(client, releasesUrl);

var data = client.DownloadString(releasesUrl);
var start = 0;
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 = "";
}
if (ignorePrerelease)
return GetLatestStable(client);
else
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

0 comments on commit 1990385

Please sign in to comment.