-
-
Save soyuka/d00d769b1bc9b5e2499d9975165593b7 to your computer and use it in GitHub Desktop.
"confirm" action for your Makefile
This file contains hidden or 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 | |
_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