You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.3 KiB
71 lines
2.3 KiB
2 years ago
|
#!/usr/bin/env sh
|
||
|
|
||
|
# This spell reveals the width and height of the terminal window.
|
||
|
|
||
|
# Define the function to calculate the size of the terminal window
|
||
|
fathom_terminal() {
|
||
|
width=false
|
||
|
height=false
|
||
|
verbose=false
|
||
|
while getopts "vwht" flag; do
|
||
|
case "${flag}" in
|
||
|
--verbose|v) verbose=true;;
|
||
|
--width|w) width=true;;
|
||
|
--height|h) height=true;;
|
||
|
--test|t) test_fathom_terminal; exit 0;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Get the size of the terminal window
|
||
|
window_width=$(tput cols)
|
||
|
window_height=$(tput lines)
|
||
|
size="${window_width};${window_height}"
|
||
|
if [ $width = true ] && [ $height = true ]; then
|
||
|
if [ $verbose = true ]; then
|
||
|
printf "Width: %s\n" "${window_width}"
|
||
|
printf "Height: %s\n" "${window_height}"
|
||
|
else
|
||
|
printf "%s\n" "${window_width}"
|
||
|
printf "%s\n" "${window_height}"
|
||
|
fi
|
||
|
else
|
||
|
if [ $width = true ]; then
|
||
|
if [ $verbose = true ]; then
|
||
|
printf "Width: "
|
||
|
fi
|
||
|
printf "%s\n" "${window_width}"
|
||
|
elif [ $height = true ]; then
|
||
|
if [ $verbose = true ]; then
|
||
|
printf "Height: "
|
||
|
fi
|
||
|
printf "%s\n" "${window_height}"
|
||
|
else
|
||
|
if [ $verbose = true ]; then
|
||
|
printf "Size: "
|
||
|
fi
|
||
|
printf "%s\n" "$size"
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Unit test
|
||
|
test_fathom_terminal() {
|
||
|
. "./assertions"
|
||
|
assert_output "fathom_terminal -w" "$(tput cols)"
|
||
|
assert_output "fathom_terminal --width" "$(tput cols)"
|
||
|
assert_output "fathom_terminal -h" "$(tput lines)"
|
||
|
assert_output "fathom_terminal --height" "$(tput lines)"
|
||
|
assert_output "fathom_terminal -w -v" "Width: $(tput cols)"
|
||
|
assert_output "fathom_terminal --width --verbose" "Width: $(tput cols)"
|
||
|
assert_output "fathom_terminal -h -v" "Height: $(tput lines)"
|
||
|
assert_output "fathom_terminal --height --verbose" "Height: $(tput lines)"
|
||
|
assert_output "fathom_terminal -h -v -w" "Height: $(tput lines)\nWidth: $(tput cols)"
|
||
|
assert_output "fathom_terminal --height --verbose --width" "Height: $(tput lines)\nWidth: $(tput cols)"
|
||
|
}
|
||
|
|
||
|
# Check if the script is being called from another script
|
||
|
if [ "${BASH_SOURCE[0]}" = "$0" ]; then
|
||
|
# If not, call the function
|
||
|
fathom_terminal "$@"
|
||
|
fi
|