From 624fc6ff48543d7e5be6dd5a3be72c2f1c345bf7 Mon Sep 17 00:00:00 2001 From: Sorin Sbarnea Date: Mon, 22 Mar 2021 15:10:51 +0000 Subject: [PATCH] Enable prepare_environment to be used without cli Allows reuse of prepare_environment() outside the ansible-lint, so other tools like molecule can reuse its logic. --- src/ansiblelint/__main__.py | 8 +++++--- src/ansiblelint/config.py | 1 + src/ansiblelint/prerun.py | 8 ++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/ansiblelint/__main__.py b/src/ansiblelint/__main__.py index 482e395fd0..f153358ab5 100755 --- a/src/ansiblelint/__main__.py +++ b/src/ansiblelint/__main__.py @@ -27,7 +27,7 @@ import subprocess import sys from contextlib import contextmanager -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, List, Optional from enrich.console import should_do_markup @@ -76,9 +76,9 @@ def initialize_logger(level: int = 0) -> None: _logger.debug("Logging initialized to level %s", logging_level) -def initialize_options(arguments: List[str]): +def initialize_options(arguments: Optional[List[str]] = None) -> None: """Load config options and store them inside options module.""" - new_options = cli.get_config(arguments) + new_options = cli.get_config(arguments or []) new_options.cwd = pathlib.Path.cwd() if new_options.version: @@ -105,6 +105,8 @@ def initialize_options(arguments: List[str]): options.skip_list = [normalize_tag(tag) for tag in options.skip_list] options.warn_list = [normalize_tag(tag) for tag in options.warn_list] + options.configured = True + def report_outcome(result: "LintResult", options, mark_as_success=False) -> int: """Display information about how to skip found rules. diff --git a/src/ansiblelint/config.py b/src/ansiblelint/config.py index 2ff68905e8..93f8b0f42d 100644 --- a/src/ansiblelint/config.py +++ b/src/ansiblelint/config.py @@ -53,6 +53,7 @@ options = Namespace( colored=True, + configured=False, cwd=".", display_relative_path=True, exclude_paths=[], diff --git a/src/ansiblelint/prerun.py b/src/ansiblelint/prerun.py index 3ec4b9df61..43c82b6b5f 100644 --- a/src/ansiblelint/prerun.py +++ b/src/ansiblelint/prerun.py @@ -96,6 +96,14 @@ def _get_ver_err() -> Tuple[str, str]: def prepare_environment() -> None: """Make dependencies available if needed.""" + if not options.configured: + # Allow method to be used without calling the command line, so we can + # reuse it in other tools, like molecule. + # pylint: disable=import-outside-toplevel,cyclic-import + from ansiblelint.__main__ import initialize_options + + initialize_options() + if not options.offline and os.path.exists("requirements.yml"): cmd = [