Exemplo n.º 1
0
        private ValidationResult PopulateDeleteBranchAfterMerge(
            SettingsContainer settings)
        {
            var fileSettings = FileSettingsCache.GetSettings();

            bool defaultValue;

            // The default value is true, if it is supported for the corresponding platform.
            if (Platform.HasValue && !_platformsSupportingDeleteBranchAfterMerge.Contains(Platform.Value))
            {
                defaultValue = false;
            }
            else
            {
                defaultValue = true;
            }

            settings.BranchSettings.DeleteBranchAfterMerge = Concat.FirstValue(DeleteBranchAfterMerge, fileSettings.DeleteBranchAfterMerge, defaultValue);

            // Ensure that the resulting DeleteBranchAfterMerge value is supported.
            if (settings.BranchSettings.DeleteBranchAfterMerge &&
                Platform.HasValue &&
                !_platformsSupportingDeleteBranchAfterMerge.Contains(Platform.Value))
            {
                return(ValidationResult.Failure("Deletion of source branch after merge is currently only available for Azure DevOps, Gitlab and Bitbucket."));
            }

            return(ValidationResult.Success);
        }
Exemplo n.º 2
0
        protected override ValidationResult PopulateSettings(SettingsContainer settings)
        {
            var baseResult = base.PopulateSettings(settings);

            if (!baseResult.IsSuccess)
            {
                return(baseResult);
            }

            var regexIncludeReposValid = PopulateIncludeRepos(settings);

            if (!regexIncludeReposValid.IsSuccess)
            {
                return(regexIncludeReposValid);
            }

            var regexExcludeReposValid = PopulateExcludeRepos(settings);

            if (!regexExcludeReposValid.IsSuccess)
            {
                return(regexExcludeReposValid);
            }

            var fileSettings = FileSettingsCache.GetSettings();

            const int defaultMaxReposChanged = 10;

            settings.UserSettings.MaxRepositoriesChanged = Concat.FirstValue(
                AllowedMaxRepositoriesChangedChange, fileSettings.MaxRepo, defaultMaxReposChanged);

            return(ValidationResult.Success);
        }
Exemplo n.º 3
0
        private string GithubEndpointWithFallback()
        {
            const string defaultGithubApi = "https://api.github.com/";
            var          fileSetting      = FileSettingsCache.Get();

            return(Concat.FirstValue(GithubApiEndpoint, fileSetting.Api, defaultGithubApi));
        }
        protected override async Task <ValidationResult> PopulateSettings(SettingsContainer settings)
        {
            var baseResult = await base.PopulateSettings(settings);

            if (!baseResult.IsSuccess)
            {
                return(baseResult);
            }

            const int defaultMaxPackageUpdates = 1;
            var       fileSettings             = FileSettingsCache.GetSettings();

            var maxUpdates = Concat.FirstValue(
                MaxPackageUpdates,
                fileSettings.MaxPackageUpdates,
                defaultMaxPackageUpdates);

            if (maxUpdates < 1)
            {
                return(ValidationResult.Failure($"Max package updates of {maxUpdates} is not valid"));
            }

            settings.PackageFilters.MaxPackageUpdates = maxUpdates;
            return(ValidationResult.Success);
        }
Exemplo n.º 5
0
        protected override ValidationResult PopulateSettings(SettingsContainer settings)
        {
            var baseResult = base.PopulateSettings(settings);

            if (!baseResult.IsSuccess)
            {
                return(baseResult);
            }

            var fileSettings = FileSettingsCache.GetSettings();

            var endpoint = Concat.FirstValue(ApiEndpoint, fileSettings.Api, settings.SourceControlServerSettings.Repository?.ApiUri.ToString());
            var forkMode = ForkMode ?? fileSettings.ForkMode;
            var platform = Platform ?? fileSettings.Platform;

            if (!Uri.TryCreate(endpoint, UriKind.Absolute, out var baseUri))
            {
                return(ValidationResult.Failure($"Bad Api Base '{endpoint}'"));
            }

            try
            {
                var collaborationResult = CollaborationFactory.Initialise(
                    baseUri, PersonalAccessToken,
                    forkMode, platform);

                if (!collaborationResult.IsSuccess)
                {
                    return(collaborationResult);
                }
            }
#pragma warning disable CA1031
            catch (Exception ex)
#pragma warning restore CA1031
            {
                return(ValidationResult.Failure(ex.Message));
            }

            if (CollaborationFactory.Settings.Token == null)
            {
                return(ValidationResult.Failure("The required access token was not found"));
            }

            settings.UserSettings.ConsolidateUpdatesInSinglePullRequest =
                Concat.FirstValue(Consolidate, fileSettings.Consolidate, false);

            const int defaultMaxPackageUpdates = 3;
            settings.PackageFilters.MaxPackageUpdates =
                Concat.FirstValue(MaxPackageUpdates, fileSettings.MaxPackageUpdates, defaultMaxPackageUpdates);

            var defaultLabels = new List <string> {
                "nukeeper"
            };

            settings.SourceControlServerSettings.Labels =
                Concat.FirstPopulatedList(Label, fileSettings.Label, defaultLabels);

            return(ValidationResult.Success);
        }
Exemplo n.º 6
0
        protected override ValidationResult PopulateSettings(SettingsContainer settings)
        {
            var baseResult = base.PopulateSettings(settings);

            if (!baseResult.IsSuccess)
            {
                return(baseResult);
            }

            var apiBase = GithubEndpointWithFallback();

            if (string.IsNullOrWhiteSpace(apiBase))
            {
                return(ValidationResult.Failure("No GitHub Api base found"));
            }

            if (!Uri.TryCreate(apiBase, UriKind.Absolute, out var githubUri))
            {
                return(ValidationResult.Failure($"Bad GitHub Api base '{GithubApiEndpoint}'"));
            }

            var token = ReadToken();

            if (string.IsNullOrWhiteSpace(token))
            {
                return(ValidationResult.Failure("The required GitHub access token was not found"));
            }

            var githubUrl = GitSettingsReader.EnsureTrailingSlash(githubUri);

            var fileSettings = FileSettingsCache.Get();

            settings.GithubAuthSettings = new GithubAuthSettings(githubUrl, token);

            settings.UserSettings.ConsolidateUpdatesInSinglePullRequest =
                Concat.FirstValue(Consolidate, fileSettings.Consolidate, false);


            const int defaultMaxPullRequests = 3;

            settings.PackageFilters.MaxPackageUpdates =
                Concat.FirstValue(MaxPullRequestsPerRepository, fileSettings.MaxPr, defaultMaxPullRequests);

            settings.UserSettings.ForkMode   = ForkMode;
            settings.UserSettings.ReportMode = ReportMode;

            var defaultLabels = new[] { "nukeeper" };

            settings.SourceControlServerSettings.Labels =
                Concat.FirstPopulatedList(Label, fileSettings.Label, defaultLabels);

            return(ValidationResult.Success);
        }
Exemplo n.º 7
0
        protected override async Task <ValidationResult> PopulateSettings(SettingsContainer settings)
        {
            var fileSettings = FileSettingsCache.GetSettings();

            ApiEndpoint = Concat.FirstValue(ApiEndpoint, fileSettings.Api, "https://api.github.com");

            var baseResult = await base.PopulateSettings(settings);

            if (!baseResult.IsSuccess)
            {
                return(baseResult);
            }

            settings.SourceControlServerSettings.Scope            = ServerScope.Organisation;
            settings.SourceControlServerSettings.OrganisationName = GithubOrganisationName;
            return(ValidationResult.Success);
        }
Exemplo n.º 8
0
        private ValidationResult PopulateExcludeRepos(SettingsContainer settings)
        {
            var settingsFromFile = FileSettingsCache.GetSettings();
            var value            = Concat.FirstValue(ExcludeRepos, settingsFromFile.ExcludeRepos);

            if (string.IsNullOrWhiteSpace(value))
            {
                settings.SourceControlServerSettings.ExcludeRepos = null;
                return(ValidationResult.Success);
            }

            try
            {
                settings.SourceControlServerSettings.ExcludeRepos = new Regex(value);
            }
            catch (Exception ex)
            {
                return(ValidationResult.Failure($"Unable to parse regex '{value}' for ExcludeRepos: {ex.Message}"));
            }

            return(ValidationResult.Success);
        }
        private ValidationResult PopulateDeleteBranchAfterMerge(
            SettingsContainer settings)
        {
            var fileSettings = FileSettingsCache.GetSettings();

            if (!Platform.HasValue)
            {
                settings.BranchSettings.DeleteBranchAfterMerge = true;
                return(ValidationResult.Success);
            }

            if (Platform != Abstractions.CollaborationPlatform.Platform.AzureDevOps &&
                Platform != Abstractions.CollaborationPlatform.Platform.GitLab &&
                Platform != Abstractions.CollaborationPlatform.Platform.Bitbucket)
            {
                return(ValidationResult.Failure(
                           $"Deletion of source branch after merge is currently only available for Azure DevOps, Gitlab and Bitbucket."));
            }

            settings.BranchSettings.DeleteBranchAfterMerge = Concat.FirstValue(DeleteBranchAfterMerge, fileSettings.DeleteBranchAfterMerge, true);
            return(ValidationResult.Success);
        }
 public TestAccessor(FileSettingsCache fileSettingsCache)
 {
     _fileSettingsCache = fileSettingsCache;
 }