Example #1
0
        /// <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);
        }
Example #2
0
        /// <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));
        }