From a1e9740ef784a2ceaac926c341ecf3bb1e70cd76 Mon Sep 17 00:00:00 2001 From: Andrea Tosatto Date: Wed, 11 Mar 2020 11:08:52 +0100 Subject: [PATCH] doc: update README with meta/main.yml usage example --- README.md | 27 ++++++++++++++++++++++++++- requirements/parser.go | 3 ++- requirements/parser_test.go | 1 + 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a1be792..f6770bb 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Given the following `requirements.yml` file in your current working directory ```bash $ cat requirements.yml +--- # Prometheus - name: atosatto.prometheus @@ -45,11 +46,35 @@ $ cat requirements.yml `ansible-requirements-lint` can be used to detect updates to the list of requirements with ```bash -$ bin/ansible-requirements-lint requirements.yml +$ ansible-requirements-lint requirements.yml WARN: atosatto.prometheus: role not at the latest version, upgrade from v1.0.1 to v1.1.0. WARN: atosatto.grafana: role not at the latest version, upgrade from v1.0.0 to v1.1.0. ``` + +In addition to requirements files, `ansible-requirements-lint` can also parse role dependencies +declared in the `meta/main.yml` file in your role directory + +```bash +$ cat meta/main.yml +--- + +dependencies: +- role: atosatto.prometheus + version: v1.0.0 + prometheus_release_tag: "v2.16.0" + +- name: atosatto.alertmanager + version: v1.0.0 +``` + +Running `ansible-requirements-lint` will produce the following results + +```bash +$ ansible-requirements-lint meta/main.yml +WARN: atosatto.prometheus: role not at the latest version, upgrade from v1.0.0 to v1.1.0. +``` + ## License MIT diff --git a/requirements/parser.go b/requirements/parser.go index 942677a..2ad19c9 100644 --- a/requirements/parser.go +++ b/requirements/parser.go @@ -120,7 +120,8 @@ func parseRolesFromNodesList(nodes []*yaml.Node) ([]*Role, error) { case k.Kind == yaml.ScalarNode && k.Value == "include": role.Include = v.Value case k.Kind == yaml.ScalarNode: - return nil, NewUnexpectedMappingNodeValueError(k.Line, k.Value) + // when parsing dependencies in the meta/main.yml format + // we might encounter some variables names, let's ignore them default: return nil, NewUnexpectedNodeKindError(k.Line, k.Kind) } diff --git a/requirements/parser_test.go b/requirements/parser_test.go index 1416252..907fb01 100644 --- a/requirements/parser_test.go +++ b/requirements/parser_test.go @@ -127,6 +127,7 @@ func TestParseMetaRequirementsFile(t *testing.T) { - role: test.ansible-requirements-lint-role version: v1.0.0 + ansible_requirements_lint_role_variable: "ansible_requirements_lint" - name: test.ansible-requirements-lint-name version: v1.0.0