private static void ApplyAppSettings(NameValueCollection appSettings, BootstrapperOptions options)
 {
     if (appSettings.IsTrue(AppSettingKeys.PreferNuget))
     {
         options.PreferNuget = true;
     }
     if (appSettings.IsTrue(AppSettingKeys.ForceNuget))
     {
         options.ForceNuget = true;
     }
 }
        private static IEnumerable<string> EvaluateDownloadOptions(DownloadArguments downloadArguments, IEnumerable<string> args, NameValueCollection appSettings, IDictionary envVariables, bool magicMode)
        {
            var folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var target = magicMode ? GetMagicModeTarget() : Path.Combine(folder, "paket.exe");
            string nugetSource = downloadArguments.NugetSource;

            var appSettingsVersion = appSettings.GetKey(AppSettingKeys.PaketVersion);
            var latestVersion = appSettingsVersion ?? envVariables.GetKey(EnvArgs.PaketVersionEnv) ?? downloadArguments.LatestVersion;
            var appSettingsRequestPrerelease = appSettings.IsTrue(AppSettingKeys.Prerelease);
            var prerelease = (appSettingsRequestPrerelease && string.IsNullOrEmpty(latestVersion)) || !downloadArguments.IgnorePrerelease;
            bool doSelfUpdate = downloadArguments.DoSelfUpdate;
            var ignoreCache = downloadArguments.IgnoreCache;
            var commandArgs = args.ToList();
            int? maxFileAgeInMinutes = downloadArguments.MaxFileAgeInMinutes;

            if (commandArgs.Contains(CommandArgs.SelfUpdate))
            {
                commandArgs.Remove(CommandArgs.SelfUpdate);
                doSelfUpdate = true;
            }
            var nugetSourceArg = commandArgs.SingleOrDefault(x => x.StartsWith(CommandArgs.NugetSourceArgPrefix));
            if (nugetSourceArg != null)
            {
                commandArgs = commandArgs.Where(x => !x.StartsWith(CommandArgs.NugetSourceArgPrefix)).ToList();
                nugetSource = nugetSourceArg.Substring(CommandArgs.NugetSourceArgPrefix.Length);
            }
            if (commandArgs.Contains(CommandArgs.IgnoreCache))
            {
                commandArgs.Remove(CommandArgs.IgnoreCache);
                ignoreCache = true;
            }

            var maxFileAgeArg = commandArgs.SingleOrDefault(x => x.StartsWith(CommandArgs.MaxFileAge, StringComparison.Ordinal));
            if (maxFileAgeArg != null)
            {
                var parts = maxFileAgeArg.Split("=".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (parts.Length == 2)
                {
                    var maxFileAgeInMinutesCommandArg = parts[1];
                    int parsedMaxFileAgeInMinutesCommandArg;
                    if (int.TryParse(maxFileAgeInMinutesCommandArg, out parsedMaxFileAgeInMinutesCommandArg))
                        maxFileAgeInMinutes = parsedMaxFileAgeInMinutesCommandArg;
                }

                commandArgs.Remove(maxFileAgeArg);
            }

            if (commandArgs.Count >= 1)
            {
                if (commandArgs[0] == CommandArgs.Prerelease)
                {
                    prerelease = true;
                    latestVersion = String.Empty;
                    commandArgs.Remove(CommandArgs.Prerelease);
                }
                else
                {
                    prerelease = false;
                    latestVersion = commandArgs[0];
                    commandArgs.Remove(commandArgs[0]);
                }
            }

            downloadArguments.LatestVersion = latestVersion;
            downloadArguments.IgnorePrerelease = !prerelease;
            downloadArguments.IgnoreCache = ignoreCache;
            downloadArguments.NugetSource = nugetSource;
            downloadArguments.DoSelfUpdate = doSelfUpdate;
            downloadArguments.Target = target;
            downloadArguments.Folder = Path.GetDirectoryName(target);
            if (magicMode)
            {
                if (appSettingsRequestPrerelease || !String.IsNullOrWhiteSpace(appSettingsVersion))
                    downloadArguments.MaxFileAgeInMinutes = 0;
                else
                    downloadArguments.MaxFileAgeInMinutes = 60 * 12;
            }
            else
                downloadArguments.MaxFileAgeInMinutes = maxFileAgeInMinutes;
            return commandArgs;
        }
Example #3
0
 private static void FillOptionsFromAppSettings(BootstrapperOptions options, NameValueCollection appSettings)
 {
     if (appSettings.IsTrue(AppSettingKeys.PreferNuget))
     {
         options.PreferNuget = true;
     }
     if (appSettings.IsTrue(AppSettingKeys.ForceNuget))
     {
         options.ForceNuget = true;
     }
     var latestVersion = appSettings.GetKey(AppSettingKeys.PaketVersion);
     if (latestVersion != null)
     {
         options.DownloadArguments.LatestVersion = latestVersion;
     }
     if (appSettings.IsTrue(AppSettingKeys.Prerelease))
     {
         options.DownloadArguments.IgnorePrerelease = false;
     }
 }