-
-
Save tshabatyn/9bb3b1b22a1419c560076777cb52e75a to your computer and use it in GitHub Desktop.
"confirm" action for your Makefile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# To use the "confirm" target inside another target, | |
# use the " if $(MAKE) -s confirm ; " syntax. | |
mycommand: | |
@if $(MAKE) -s confirm ; then \ | |
execute_your_command_here ; \ | |
fi | |
.PHONY: mycommand | |
# The CI environment variable can be set to a non-empty string, | |
# it'll bypass this command that will "return true", as a "yes" answer. | |
confirm: | |
@if [[ -z "$(CI)" ]]; then \ | |
REPLY="" ; \ | |
read -p "⚠ Are you sure? [y/n] > " -r ; \ | |
if [[ ! $$REPLY =~ ^[Yy]$$ ]]; then \ | |
printf $(_ERROR) "KO" "Stopping" ; \ | |
exit 1 ; \ | |
else \ | |
printf $(_TITLE) "OK" "Continuing" ; \ | |
exit 0; \ | |
fi \ | |
fi | |
.PHONY: confirm | |
_WARN := "\033[33m[%s]\033[0m %s\n" # Yellow text for "printf" | |
_TITLE := "\033[32m[%s]\033[0m %s\n" # Green text for "printf" | |
_ERROR := "\033[31m[%s]\033[0m %s\n" # Red text for "printf" | |
# Notes: | |
# | |
# As we're using an "if" statement, | |
# we need to use ";" and "\" at the end of lines, | |
# else make would consider each line to be a separate command to call, | |
# which doesn't work. | |
# Using ";" and "\" at the end of lines helps make | |
# interpret this "if" as one single statement/command. | |
# | |
# You can replace ";" with "&&" if you need to stop the | |
# execution process before running next commands. | |
# | |
# |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment