Support groovy lint exclusions
makefiles/utils/include.mk
--------------------------
o Added helper method path-by-makefile.
o Derive a path relative to an active makefile.
makefiles/lint/groovy/include.mk
makefiles/lint/groovy/.groovylintrc.json
makefiles/lint/groovy/urls
----------------------------------------
o make lint-groovy: pass argument --config to npm-groovy-lint.
o Bulk filter subjective and personal-preference items to help
shrink logfile size until the warning volume is under control.
o https://github.com/nvuillam/npm-groovy-lint/blob/main/lib/.groovylintrc-recommended.json
[HOWTO: test]
% git clone onf-make
% cd onf-make
% make lint-groovy HIDE=
Display command line being launched (HIDE=@ cleared):
[...] npm-groovy-lint --config "...../onf-make/makefiles/lint/groovy/.groovylintrc.json"
Change-Id: I0f3bf3f7f949d7911c89e809f1702a1615418ea6
diff --git a/makefiles/utils/include.mk b/makefiles/utils/include.mk
index 5a7678f..6090a17 100644
--- a/makefiles/utils/include.mk
+++ b/makefiles/utils/include.mk
@@ -1,6 +1,6 @@
# -*- makefile -*-
# -----------------------------------------------------------------------
-# Copyright 2022-2023 Open Networking Foundation (ONF) and the ONF Contributors
+# Copyright 2022-2024 Open Networking Foundation (ONF) and the ONF Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -24,6 +24,30 @@
if-not = $(info 1=$(1), 2=$(2), 3=$(3))\
$(if $(1),$(null),$(2))
+## -----------------------------------------------------------------------
+## Intent: Derive a filesystem path relative to the active makefile.
+## Primary use is loading adjacent tool config files.
+## Immediate evaluation (:=) needed to preserve path context.
+## Note: We could pass in var=MAKEFILE_LIST
+## -----------------------------------------------------------------------
+## Given:
+## scalar Filename to construct a path for
+## Return:
+## scalar Constructed path for the given filename
+## -----------------------------------------------------------------------
+## Usage:
+## groovy-check-conf := $(call path-by-makefile,.groovylintrc.json)
+## groovy-cmd = npm-groovy-lint --config "$(groovy-check-conf)"
+## -----------------------------------------------------------------------
+path-by-makefile = $(strip \
+ $(foreach filename,$(1),\
+ $(foreach makefile,$(lastword $(MAKEFILE_LIST)),\
+ $(foreach makedir,$(subst /include.mk,$(null),$(makefile)),\
+ $(makedir)/$(filename)\
+ )\
+ ))\
+)
+
$(if $(DEBUG),$(warning LEAVE))
# [EOF]