/// <summary> /// Does the actual bootstrapping. /// </summary> /// <param name="version">The Version to download.</param> internal void Bootstrap(GradleVersionIdentifier version) { var versionInfo = GetGradleVersion(version) .ConfigureAwait(false) .GetAwaiter() .GetResult(); _log.Verbose($"Current gradle version is {versionInfo.Version}"); var toolsFolder = _fileSystem.GetDirectory( _config.GetToolPath(_environment.WorkingDirectory, _environment)); if (!toolsFolder.Exists) { toolsFolder.Create(); } var gradleInstallFolder = toolsFolder.Path.Combine($"gradle-{versionInfo.Version}"); if (_fileSystem.GetDirectory(gradleInstallFolder).Exists) { _log.Debug("Gradle tool directory exists. Not downloading."); return; } // download gradle var gradleZip = DownloadGradle(versionInfo.DownloadUrl, toolsFolder.Path) .ConfigureAwait(false) .GetAwaiter() .GetResult(); UnzipGradle(gradleZip, toolsFolder.Path); }
/// <summary> /// Used internally. /// </summary> /// <param name="identifier">The Identifier.</param> /// <returns>The Download-Information.</returns> internal async Task <GradleDownloadInformation> GetGradleVersion(GradleVersionIdentifier identifier) { var json = await WebAdapter.DownloadString(identifier.Source); return(identifier.Parse(json)); }