deicidus
2 years ago
3 changed files with 87 additions and 77 deletions
@ -1,30 +0,0 @@ |
|||||||
#!/usr/bin/env sh |
|
||||||
|
|
||||||
# Define ask_Yn, which asks a yes or no question and saves the result in the given variable name (defaults to yes) |
|
||||||
# Takes one arg, which is the variable name where the result will be saved |
|
||||||
# No is 0 and Yes is 1 |
|
||||||
|
|
||||||
source say |
|
||||||
|
|
||||||
ask_Yn() { |
|
||||||
if [ -n "$2" ]; then |
|
||||||
say_inline "$2 (Y/n): " |
|
||||||
fi |
|
||||||
STTY_CONFIG=$(stty -g) # Save current stty config |
|
||||||
stty raw -echo # Disable echo |
|
||||||
ANSWER=$(head -c 1) # Scrape terminal input |
|
||||||
stty $STTY_CONFIG # Restore stty config |
|
||||||
if [ "$ANSWER" != "${ANSWER#[Nn]}" ]; then |
|
||||||
say "N" |
|
||||||
export "${1}=0" |
|
||||||
else |
|
||||||
say "Y" |
|
||||||
export "${1}=1" |
|
||||||
fi |
|
||||||
} |
|
||||||
|
|
||||||
# Check if the script is being called from another script |
|
||||||
if [ "${BASH_SOURCE[0]}" = "$0" ]; then |
|
||||||
# If not, call the function |
|
||||||
ask_Yn "$@" |
|
||||||
fi |
|
@ -0,0 +1,35 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# Define ask_yn, which asks a yes or no question and outputs the result as 1 for Yes and 0 for No. |
||||||
|
# Takes two arguments: |
||||||
|
# $1: The question to be asked. |
||||||
|
# $2: The default answer, either "y" or "n". |
||||||
|
|
||||||
|
ask_yn() { |
||||||
|
question=$1 |
||||||
|
default_answer=$2 |
||||||
|
|
||||||
|
# Capitalize the default option correctly |
||||||
|
if [ "$default_answer" = "n" ] || [ "$default_answer" = "N" ]; then |
||||||
|
prompt="${question} (y/N): " |
||||||
|
else |
||||||
|
prompt="${question} (Y/n): " |
||||||
|
fi |
||||||
|
|
||||||
|
while true; do |
||||||
|
printf "%s" "$prompt" |
||||||
|
STTY_CONFIG=$(stty -g) # Save current stty config |
||||||
|
stty raw -echo # Disable echo |
||||||
|
ANSWER=$(head -c 1) # Scrape terminal input |
||||||
|
stty $STTY_CONFIG # Restore stty config |
||||||
|
|
||||||
|
case $ANSWER in |
||||||
|
[Yy] ) echo "Y"; exit 1;; # Yes: exit with 1 |
||||||
|
[Nn] ) echo "N"; exit 0;; # No: exit with 0 |
||||||
|
"" ) if [ "$default_answer" = "n" ] || [ "$default_answer" = "N" ]; then echo "N"; exit 0; else echo "Y"; exit 1; fi;; # Default: exit with the default value |
||||||
|
* ) printf "\nPlease answer Yes or No.\n";; |
||||||
|
esac |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
ask_yn "$@" |
Loading…
Reference in new issue