From cc8fad4d3cc7401513dd061de8a1c9d2cd31b961 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Wed, 17 Apr 2019 12:33:23 +0200 Subject: [PATCH] add exclude_filter option --- CHANGELOG.md | 4 ++-- README.md | 5 ++++- ansiblelater/__main__.py | 2 ++ ansiblelater/command/candidates.py | 15 ++++++++------- ansiblelater/settings.py | 1 + 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e397efc..b51b17a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,2 @@ -- BUGFIXES - - Fix multiprocessing handler causing performance issues +- ENHANCEMENT + - Add exclude_filter options ([#21](https://github.com/xoxys/ansible-later/issues/21)) diff --git a/README.md b/README.md index 5a6f4a2..e971c98 100644 --- a/README.md +++ b/README.md @@ -108,9 +108,12 @@ rules: # - molecule/ # - files/**/*.py - # List of Ansible rule ID's + # Limit checks to given rule ID's # If empty all rules will be used. filter: [] + + # Exclude given rule ID's from checks + exclude_filter: [] # All dotfiles (including hidden folders) are excluded by default. # You can disable this setting and handle dotfiles by yourself with `exclude_files`. diff --git a/ansiblelater/__main__.py b/ansiblelater/__main__.py index 7fdb750..4660357 100755 --- a/ansiblelater/__main__.py +++ b/ansiblelater/__main__.py @@ -22,6 +22,8 @@ def main(): help="location of standards rules") parser.add_argument("-s", "--standards", dest="rules.filter", action="append", help="limit standards to specific ID's") + parser.add_argument("-x", "--exclude-standards", dest="rules.exclude_filter", action="append", + help="exclude standards by ID") parser.add_argument("-v", dest="logging.level", action="append_const", const=-1, help="increase log level") parser.add_argument("-q", dest="logging.level", action="append_const", diff --git a/ansiblelater/command/candidates.py b/ansiblelater/command/candidates.py index c68a4d0..aa3ba70 100644 --- a/ansiblelater/command/candidates.py +++ b/ansiblelater/command/candidates.py @@ -91,14 +91,15 @@ class Candidate(object): def _get_standards(self, settings, standards): target_standards = [] - limits = settings.config["rules"]["filter"] + includes = settings.config["rules"]["filter"] + excludes = settings.config["rules"]["exclude_filter"] - if limits: - for standard in standards: - if standard.id in limits: - target_standards.append(standard) - else: - target_standards = standards + if len(includes) == 0: + includes = [s.id for s in standards] + + for standard in standards: + if standard.id in includes and standard.id not in excludes: + target_standards.append(standard) return target_standards diff --git a/ansiblelater/settings.py b/ansiblelater/settings.py index 46cf2c9..0311ced 100644 --- a/ansiblelater/settings.py +++ b/ansiblelater/settings.py @@ -95,6 +95,7 @@ class Settings(object): "rules": { "standards": rules_dir, "filter": [], + "exclude_filter": [], "ignore_dotfiles": True, "exclude_files": [] },