blob: 1563c7c93152fbc60128b1f92cf9861aada4f8d0 [file] [log] [blame]
Joey Armstrongee4d8262023-08-22 15:19:19 -04001# -*- makefile -*-
2# -----------------------------------------------------------------------
3# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
4#
5# Licensed under the Apache License, Version 2.0 (the "License")
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16# -----------------------------------------------------------------------
17
18$(if $(DEBUG),$(warning ENTER))
19
20##-------------------##
21##---] GLOBALS [---##
22##-------------------##
23.PHONY: lint-yaml lint-yaml-all lint-yaml-modified
24
25have-yaml-files := $(if $(strip $(YAML_FILES)),true)
26YAML_FILES ?= $(error YAML_FILES= is required)
27
28YAMLLINT = $(activate) && yamllint
29yamllint-args += --strict
30
31## -----------------------------------------------------------------------
32## Intent: Use the yaml command to perform syntax checking.
33## -----------------------------------------------------------------------
34ifndef NO-LINT-YAML
35 lint-yaml-mode := $(if $(have-yaml-files),modified,all)
36 lint : lint-yaml
37 lint-yaml : lint-yaml-$(lint-yaml-mode)
38endif# NO-LINT-YAML
39
40## -----------------------------------------------------------------------
41## Intent: exhaustive yaml syntax checking
42## -----------------------------------------------------------------------
43lint-yaml-all: lint-yaml-cmd-version
44
45 $(call banner-enter,Target $@)
46 $(HIDE)$(MAKE) --no-print-directory lint-yaml-install
47 $(HIDE)$(activate) && $(call gen-yaml-find-cmd) \
48 | $(env-clean) $(xargs-cmd) -I'{}' \
49 bash -c "$(YAMLLINT) $(yamllint-args) {}"
50 $(call banner-leave,Target $@)
51
52## -----------------------------------------------------------------------
53## Intent: check deps for format and python3 cleanliness
54## Note:
55## yaml --py3k option no longer supported
56## -----------------------------------------------------------------------
57lint-yaml-modified: lint-yaml-cmd-version
58
59 $(call banner-enter,Target $@)
60 $(HIDE)$(MAKE) --no-print-directory lint-yaml-install
61 $(YAMLLINT) $(yamllint-args) $(YAML_FILES)
62 $(call banner-leave,Target $@)
63
64## -----------------------------------------------------------------------
65## Intent: Display command usage
66## -----------------------------------------------------------------------
67help::
68 @echo ' lint-yaml Syntax check python using the yaml command'
69 ifdef VERBOSE
70 @echo ' $(MAKE) lint-yaml YAML_FILES=...'
71 @echo ' lint-yaml-all yaml checking: exhaustive'
72 @echo ' lint-yaml-modified yaml checking: only locally modified'
73 @echo ' lint-yaml-install Install the pylint command'
74 endif
75
76$(if $(DEBUG),$(warning LEAVE))
77
78# [EOF]