Finalize minor bug fixes and format for deployment
This commit is contained in:
144
bin/fedit
144
bin/fedit
@@ -13,7 +13,7 @@ fd_opts=(--hidden --type file --type symlink --threads "$(nproc)")
|
||||
|
||||
# Helper functions
|
||||
function help() {
|
||||
cat <<HELPMESSAGE
|
||||
cat << HELPMESSAGE
|
||||
$(basename "$0") $VERSION
|
||||
|
||||
Usage: $(basename "$0") [-h|--help] [options] [patterns]
|
||||
@@ -31,88 +31,88 @@ HELPMESSAGE
|
||||
}
|
||||
|
||||
while true; do
|
||||
case "${1}" in
|
||||
'-b' | '--boot')
|
||||
EDIT_BOOT=1
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-d' | '--dir')
|
||||
DIR="${2}"
|
||||
case "${DIR}" in
|
||||
"")
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
--dir=*)
|
||||
DIR="${1#*=}"
|
||||
case "${DIR}" in
|
||||
"")
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-E' | '--etc')
|
||||
EDIT_ETC=1
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-i' | '--no-ignore-vcs')
|
||||
fd_opts+=(--no-ignore-vcs)
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-I' | '--no-ignore')
|
||||
fd_opts+=(--no-ignore)
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-h' | '--help')
|
||||
help
|
||||
exit
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
printf '%s\n' "Unknown option: ${1}" >&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
case "${1}" in
|
||||
'-b' | '--boot')
|
||||
EDIT_BOOT=1
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-d' | '--dir')
|
||||
DIR="${2}"
|
||||
case "${DIR}" in
|
||||
"")
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
--dir=*)
|
||||
DIR="${1#*=}"
|
||||
case "${DIR}" in
|
||||
"")
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-E' | '--etc')
|
||||
EDIT_ETC=1
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-i' | '--no-ignore-vcs')
|
||||
fd_opts+=(--no-ignore-vcs)
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-I' | '--no-ignore')
|
||||
fd_opts+=(--no-ignore)
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
'-h' | '--help')
|
||||
help
|
||||
exit
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
printf '%s\n' "Unknown option: ${1}" >&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Handle -b and -E, they are mutually exclusive
|
||||
if [[ -n $EDIT_BOOT && -z $EDIT_ETC ]]; then
|
||||
DIR="$BOOT_DIR"
|
||||
DIR="$BOOT_DIR"
|
||||
elif [[ -z $EDIT_BOOT && -n $EDIT_ETC ]]; then
|
||||
DIR="$ETC_DIR"
|
||||
DIR="$ETC_DIR"
|
||||
elif [[ -n $EDIT_BOOT && -n $EDIT_ETC ]]; then
|
||||
printf '%s\n' 'Select either --boot or --etc, not both'
|
||||
exit 1
|
||||
printf '%s\n' 'Select either --boot or --etc, not both'
|
||||
exit 1
|
||||
elif [[ -z $DIR ]]; then
|
||||
DIR='.'
|
||||
DIR='.'
|
||||
fi
|
||||
|
||||
files="$(find_files $DIR "${fd_opts[@]}")"
|
||||
files="$(fd "${fd_opts[@]}" -- . $DIR)"
|
||||
selected_file="$(fzf --select-1 --exit-0 <<< "$files")"
|
||||
|
||||
if [[ -w "${selected_file}" ]]; then
|
||||
"$EDITOR" "$selected_file"
|
||||
"$EDITOR" "$selected_file"
|
||||
else
|
||||
sudo --edit "$selected_file"
|
||||
sudo --edit "$selected_file"
|
||||
fi
|
||||
|
Reference in New Issue
Block a user