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.
70 lines
2.3 KiB
70 lines
2.3 KiB
#!/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
|
|
|