@@ -24,6 +24,9 @@ SERVICES_DIR := $(abspath $(REPODIR)/services)
2424IMAGE := local/requirements/tools
2525
2626UPGRADE_OPTION := $(if $(upgrade ) ,upgrade=$(upgrade ) ,)
27+ STARTSWITH_OPTION := $(if $(startswith ) ,startswith=$(startswith ) ,)
28+ UPGRADE_OR_STARTSWITH_OPTION := $(if $(upgrade ) ,upgrade=$(upgrade ) ,$(if $(startswith ) ,startswith=$(startswith ) ,) )
29+ UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION := $(if $(upgrade ) ,upgrade=$(upgrade ) ,$(if $(startswith ) ,startswith=$(startswith ) ,$(if $(clean ) ,clean=$(clean ) ,) ) )
2730
2831# tools
2932MAKE_C := $(MAKE ) --directory
@@ -70,20 +73,20 @@ touch: ## touches all package requirement inputs
7073
7174only-tools : # # upgrades tools repo wide
7275 # Upgrading ONLY _tools.in
73- @$(foreach p,${_tools-in},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OPTION ) ;)
76+ @$(foreach p,${_tools-in},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION ) ;)
7477
75- reqs : # # updates test & tooling requirements
76- # Upgrading $(upgrade) requirements
77- @$(foreach p,${_target-inputs},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OPTION ) ;)
78+ reqs : guard-UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION # # updates test & tooling requirements
79+ # Upgrading $(upgrade)$(startswith)$(if $(clean), cleaning) requirements
80+ @$(foreach p,${_target-inputs},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION ) ;)
7881
7982
80- reqs-all : guard-UPGRADE_OPTION # # updates a given package repository-wise IN ALL `requirements/` folders (e.g. make reqs-all upgrade=foo==1.2.3 )
81- # Upgrading $(upgrade) ALL requirements
82- @$(foreach p,${_all-in},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OPTION ) ;)
83+ reqs-all : guard-UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION # # updates a given package or pattern repository-wise IN ALL `requirements/` folders (e.g. make reqs-all upgrade=foo==1.2.3 or make reqs-all startswith=pytest or make reqs-all clean=1 )
84+ # Upgrading $(upgrade)$(startswith)$(if $(clean), cleaning) ALL requirements
85+ @$(foreach p,${_all-in},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION ) ;)
8386
84- reqs-services : guard-UPGRADE_OPTION # # updates a given package on all services [and not packages] (e.g. make reqs-services upgrade=foo==1.2.3 )
85- # Upgrading $(upgrade) in services
86- @$(foreach p,${_services-in},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OPTION ) ;)
87+ reqs-services : guard-UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION # # updates a given package or pattern on all services [and not packages] (e.g. make reqs-services upgrade=foo==1.2.3 or make reqs-services startswith=pytest or make reqs-services clean=1 )
88+ # Upgrading $(upgrade)$(startswith)$(if $(clean), cleaning) in services
89+ @$(foreach p,${_services-in},echo Touching $(p ) ;touch $(p ) ;$(MAKE_C ) $(dir $(p ) ) reqs $(UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION ) ;)
8790
8891
8992reqs-ci : # # upgrades requirements for pylint recipe in CI
@@ -112,7 +115,7 @@ run: build ## Runs upgrade in a container [WARNING! UNDER DEV. USE CAREFULY]
112115 --user=$(shell id -u) :$(shell id -g) \
113116 --entrypoint=/bin/bash \
114117 ${IMAGE_NAME} \
115- -c "cd requirements/tools; make reqs $(if $( upgrade ) ,upgrade= $( upgrade ) , ) "
118+ -c "cd requirements/tools; make reqs $(UPGRADE_OR_STARTSWITH_OR_CLEAN_OPTION ) "
116119
117120
118121.PHONY : shell
@@ -134,6 +137,21 @@ help: ## this colorful help
134137 @echo " "
135138 @awk --posix ' BEGIN {FS = ":.*?## "} /^[[:alpha:][:space:]_-]+:.*?## / {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST )
136139 @echo " "
140+ @echo " Examples:"
141+ @echo " make reqs # Upgrade all test & tooling requirements"
142+ @echo " make reqs upgrade=pytest # Upgrade only pytest package in test & tooling"
143+ @echo " make reqs startswith=pytest # Upgrade all packages starting with 'pytest' in test & tooling"
144+ @echo " make reqs clean=1 # Clean and rebuild all test & tooling requirements"
145+ @echo " "
146+ @echo " make reqs-all upgrade=fastapi # Upgrade fastapi in ALL requirements files"
147+ @echo " make reqs-all startswith=pydantic # Upgrade all packages starting with pydantic repo-wide"
148+ @echo " make reqs-all clean=1 # Clean and rebuild ALL requirements"
149+ @echo " "
150+ @echo " make reqs-services upgrade=uvicorn # Upgrade uvicorn only in services"
151+ @echo " make reqs-services startswith=sqlalchemy # Upgrade all packages starting with sqlalchemy in services folder"
152+ @echo " "
153+ @echo " make only-tools upgrade=black # Upgrade black only in tools requirements"
154+ @echo " "
137155
138156
139157.PHONY : guard-%
0 commit comments