Dotfiles for my tiling window manager + terminal workflow.
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.
 
 
 

63 lines
1.2 KiB

#!/bin/bash
# vars {{{ #
shuffle_cache="shuffle.txt"
regen_flag=0
dir=""
# }}} vars #
# usage_msg {{{ #
function usage_msg() {
# echo "usage: shuffler [-r] [dir_name]"
cat <<-EOF
Usage: shuffler [-r] [dir_name]
-r: regenerate the shuffle cache
EOF
}
# }}} usage_msg #
# parse for regen_flag{{{
while getopts ":r" opt; do
case $opt in
r)
echo "-r was triggered!" >&2
regen_flag=1
;;
\?)
echo "Invalid flag: -$OPTARG" >&2
usage_msg
exit 1
;;
esac
done
#}}}
# set dir {{{ #
shift $((OPTIND-1))
# if no dir, use pwd
if [[ "$#" -eq 0 ]]; then
dir=$(pwd)
elif [[ "$#" -gt 1 ]] || [[ ! -d "$1" ]]; then
usage_msg
exit 1
else
dir="$1"
fi
# }}} set dir #
# rebuild shuffle cache if regen_flag, doesn't exist or file empty
if [[ "$regen_flag" -eq 1 ]] || [[ ! -f "$dir"/"$shuffle_cache" ]] || \
[[ $(wc -l "$dir"/"$shuffle_cache" | awk '{print $1}') -eq 0 ]]; then
# if [[ "$regen_flag" -eq 1 ]]; then
find "$dir"/* ! -name "$shuffle_cache" -type f | shuf > "$dir"/"$shuffle_cache"
fi
head -n 1 "$dir"/"$shuffle_cache"
printf '%s\n\n' "$(sed '1d' "$dir"/"$shuffle_cache")" > "$dir"/"$shuffle_cache"
# vim: set tabstop=2 shiftwidth=2 expandtab: