| name | interactive-menu-builder-5-confirmation-dialogs |
| description | Sub-skill of interactive-menu-builder: 5. Confirmation Dialogs (+1). |
| version | 1.0.0 |
| category | _core |
| type | reference |
| scripts_exempt | true |
5. Confirmation Dialogs (+1)
5. Confirmation Dialogs
Request user confirmation:
#!/bin/bash
confirm() {
local prompt="${1:-Are you sure?}"
local default="${2:-n}"
if [[ "$default" == "y" ]]; then
prompt+=" [Y/n]: "
else
prompt+=" [y/N]: "
fi
read -p "$prompt" response
response="${response:-$default}"
[[ "${response,,}" == "y" || "${response,,}" == "yes" ]]
}
confirm_action() {
local action="$1"
local details="$2"
echo ""
echo -e "${YELLOW}⚠ Confirmation Required${NC}"
echo ""
echo "Action: $action"
[[ -n "$details" ]] && echo "Details: $details"
echo ""
confirm "Proceed?" "n"
}
confirm_dangerous() {
local action="$1"
local confirm_word="${2:-DELETE}"
echo ""
echo -e "${RED}⚠ DANGEROUS OPERATION${NC}"
echo ""
echo "This action cannot be undone!"
echo "Action: $action"
echo ""
echo -e "Type '${YELLOW}${confirm_word}${NC}' to confirm:"
read -p "> " response
[[ "$response" == "$confirm_word" ]]
}
if confirm "Delete all logs?"; then
rm -rf logs/*
fi
if confirm_dangerous "Delete all repositories" "DELETE"; then
echo "Proceeding..."
fi
6. Progress Indicators
Show progress during operations:
#!/bin/bash
spinner() {
local pid=$1
local message="${2:-Processing}"
local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'
local i=0
while kill -0 "$pid" 2>/dev/null; do
i=$(( (i+1) % ${#spin} ))
printf "\r${CYAN}%s${NC} %s" "${spin:$i:1}" "$message"
sleep 0.1
done
printf "\r${GREEN}✓${NC} %s\n" "$message"
}
long_running_task &
spinner $! "Running long task..."
progress_bar() {
local current=$1
local total=$2
local width=40
local percent=$((current * 100 / total))
local filled=$((current * width / total))
local empty=$((width - filled))
printf
|
|
}
total=100
i $( 1 );
progress_bar
0.05
() {
message=
}
() {
message=
-e
}
() {
message=
-e
}
() {
message=
-e
}