Skip to content

Commit 0bb3387

Browse files
committed
🐛 Enhance reqs target in Makefile to support upgrading packages with startswith option
1 parent 7473f30 commit 0bb3387

File tree

1 file changed

+29
-11
lines changed

1 file changed

+29
-11
lines changed

requirements/tools/Makefile

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ SERVICES_DIR := $(abspath $(REPODIR)/services)
2424
IMAGE := local/requirements/tools
2525

2626
UPGRADE_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
2932
MAKE_C := $(MAKE) --directory
@@ -70,20 +73,20 @@ touch: ## touches all package requirement inputs
7073

7174
only-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

8992
reqs-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

Comments
 (0)