# -*- makefile -*-
# -----------------------------------------------------------------------
# Copyright 2023-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.
# 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.
# -----------------------------------------------------------------------
# https://gerrit.lfbroadband.org/plugins/gitiles/onf-make
# ONF.makefiles.include.version = 1.1
# ONF.confg.mk                  = 1.5
# -----------------------------------------------------------------------

--repo-name-- := ci-management
--repo-name-- ?= $(error --repo-name--= is required)

##--------------------------------##
##---]  Disable lint targets  [---##
##--------------------------------##
# NO-LINT-DOC8      := true
# NO-LINT-GOLANG    := true
NO-LINT-GROOVY      := true#               # Note[1]
# NO-LINT-JJB       := true#               # Note[2]
# NO-LINT-JSON      := true#               # Note[1]
NO-LINT-MAKEFILE    := true#               # Note[1]
NO-LINT-REUSE       := true                # License check
NO-LINT-ROBOT       := true
NO-LINT-SHELL       := true#               # Note[1]
# NO-LINT-TOX       := true#               # Note[1]
NO-LINT-YAML        := true#               # Note[1]

# NO-LINT-FLAKE8    := true#               # Note[1]
NO-LINT-PYTHON      := true#               # Note[1]
# NO-LINT-PYLINT    := true#               # Note[1]

# Note[1] - A boatload of source to cleanup prior to enable.
# Note[2] - No sources available

##---------------------------------##
##---] Conditional make logic  [---##
##---------------------------------##
# USE-ONF-DOCKER-MK      := true
# USE-ONF-GERRIT-MK      := true
# USE-ONF-GIT-MK         := true
USE-ONF-JJB-MK           := true
# USE-VOLTHA-RELEASE-MK  := true

##----------------------##
##---]  Debug Mode  [---##
##----------------------##
# export DEBUG           := 1      # makefile debug
# export DISTUTILS_DEBUG := 1      # verbose: pip
# export DOCKER_DEBUG    := 1      # verbose: docker
# export VERBOSE         := 1      # makefile debug

##-----------------------------------##
##---]  JJB/Jenkins Job Builder  [---##
##-----------------------------------##
JJB_VERSION   ?= 3.2.0             # lint-from: jjb/ci-management/ci-management.yaml
JOBCONFIG_DIR ?= job-configs

##---------------------------------##
##---]  Filesystem exclusions  [---##
##---------------------------------##
onf-excl-dirs := $(null)        # make clean: dirs=
onf-excl-dirs += .venv#         # $(venv-name)
onf-excl-dirs += vendor#        # golang / voltha*-go
onf-excl-dirs += patches#       # voltha docs - python upgrade
onf-excl-dirs += .tox           # also a python dependency

ifeq ($(--repo-name--),voltha-docs)
  lint-doc8-excl += '_build'
endif

onf-excl-dirs ?= $(error onf-excl-dirs= is required)

##-----------------------------##
##---]  Feature Detection  [---##
##-----------------------------##
# [TODO] include makefiles/features/include.mk
# [TODO] All logic below can migrate there.

$(if $(filter %ci-management,$(--repo-name--)),\
  $(eval --REPO-IS-CI-MANAGEMENT-- := true)\
)
$(if $(filter %voltha-docs,$(--repo-name--)),\
  $(eval --REPO-IS-VOLTHA-DOCS-- := true)\
)

# create makefiles/config/byrepo/{--repo-name--}.mk for one-off snowflakes ?
# $(if $(wildcard docker),$(eval USE-ONF-DOCKER-MK := true))

##-------------------------##
##---]  Derived Flags  [---##
##-------------------------##
ifdef --REPO-IS-CI-MANAGEMENT--
  USE-ONF-JJB := true

  onf-excl-dirs += global-jjb
  onf-excl-dirs += lf-ansible
  onf-excl-dirs += packer
endif

ifdef --REPO-IS-VOLTHA-DOCS--
  onf-excl-dirs += _build
  onf-excl-dirs += repos
endif

ifdef NO-LINT-PYTHON
  NO-LINT-FLAKE8 := true
  NO-LINT-PYLINT := true
endif

ifndef USE-ONF-JJB
  NO-LINT-JJB := true
endif

onf-excl-dirs := $(sort $(strip $(onf-excl-dirs)))

# --------------------------------------------------------------------
# Repository specific values
# --------------------------------------------------------------------
sterile-dirs += archives

# submodules
# sterile-dirs += global-jjb
# sterile-dirs += lf-ansible
# sterile-dirs += packer

# [TODO]#
#  --------------------------------------------------------------------
#   o two distinct makefiles/ directories are needed, one for onf-make
#   o second for repository specific makefile configs and logic.
#   o Two independent vars specify path:
#       ONF_MAKEDIR = library makefiles
#       MAKEDIR     = repository specific content
#   o Conditional repository testing above can crush down all the
#     "if-this-repository-is-X-do-Y' logic above intoL
#     include $(MAKEDIR)/config.mk   # repo:$(--repo-name--)
#  --------------------------------------------------------------------

# [EOF]
