# -*- makefile -*-
# -----------------------------------------------------------------------
# Copyright 2022-2023 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.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -----------------------------------------------------------------------

# JSON_FILES ?= $(error JSON_FILES= is required)

.PHONY: lint-license

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
lint : lint-license

lint-license-gargs += --recursive

# ignore: png, xlsx
# will utf8 be excluded(?)
lint-license-gargs += --binary-files=without-match
lint-license-gargs += --files-without-match

# [TODO] license checking accepts either Copy or Apache.
# [TODO] At least Copyright should be required (both?)
lint-license-gargs += --extended-regexp
lint-license-gargs += -e 'Copyright[[:space:]]+[[:digit:]]{4}'
lint-license-gargs += -e 'Apache License'

# [TODO] --strict, --strict-dates

# Editor temp files
lint-license-gargs += --exclude='*.~'
lint-license-gargs += --exclude='*.swp'

lint-license-gargs += --exclude-dir='.git'

# TODO: Normalize into .venv for consistent filtering across projects.
lint-license-gargs += --exclude-dir='vst_venv'
lint-license-gargs += --exclude-dir='flog'

lint-license-gargs += --exclude='*.json'
lint-license-gargs += --exclude='*.md'
lint-license-gargs += --exclude='*.out'
lint-license-gargs += --exclude='*.pyc'
lint-license-gargs += --exclude='*.xml'

# [FILE(s)]
lint-license-gargs += --exclude='VERSION'

# [GIT]
# lint-license-gargs += --exclude='.gitignore'
# lint-license-gargs += --exclude='.gitreview'
lint-license-gargs += --exclude='\.*'

# [PYTHON]
lint-license-gargs += --exclude='requirements.txt'

# [WIP]
lint-license-gargs += --exclude='patch'

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
lint-license-new:
	grep $(lint-license-gargs) $(dot)

## -----------------------------------------------------------------------
## Jenkins job checking logic.
## -----------------------------------------------------------------------
lint-license:
	$(MAKEDIR)/lint/license/license-check.sh

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
help ::
	@echo "  lint-license         Verify sources contain a license block."
	@echo "  lint-license-new     Grep driven replacement logic."

# [EOF]
