use best practices for variables and formatting

This commit is contained in:
Emre AKYÜZ 2024-01-05 13:26:36 +03:00 committed by GitHub
parent 56304e551d
commit 5fb8b6ca90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,117 +1,120 @@
#!/bin/dash #!/bin/dash
URLQUERY_FILE="$HOME/.local/share/urlquery" URLQUERY_FILE="${HOME}/.local/share/urlquery"
CLIPBOARD="xclip -o" ACTION_MENU="@@"
ACTION_MENU='@@'
# For additional search function, see information on open_bookmark function below # For additional search function, see information on open_bookmark function below
CLIPBOARD() {
xclip -o
}
DMENU() { DMENU() {
dmenu -i -l $1 -p "$2" dmenu -i -l "${1}" -p "${2}"
} }
error_notify() { error_notify() {
notify-send "$1" notify-send "${1}"
exit 1 exit "1"
} }
ensure_file_exists() { ensure_file_exists() {
[ -f "$URLQUERY_FILE" ] || { [ -f "${URLQUERY_FILE}" ] || {
notify-send "$URLQUERY_FILE does not exist. Creating it now." notify-send "${URLQUERY_FILE} does not exist. Creating it now."
echo "SearXNG=https://searx.tiekoetter.com/search?q=" > "$URLQUERY_FILE" echo "SearXNG=https://searx.tiekoetter.com/search?q=" > "${URLQUERY_FILE}"
} }
} }
get_selection() { get_selection() {
cut -d= -f1 "$URLQUERY_FILE" | DMENU $LINE_COUNT "Bookmarks" cut -d= -f1 "${URLQUERY_FILE}" | DMENU "${LINE_COUNT}" "Bookmarks"
} }
update_file() { update_file() {
pattern="$1" pattern="${1}"
replacement="$2" replacement="${2}"
sed "/$pattern/c\\ sed "/${pattern}/c\\
$replacement" "$URLQUERY_FILE" > "$URLQUERY_FILE.tmp" && mv "$URLQUERY_FILE.tmp" "$URLQUERY_FILE" || ${replacement}" "${URLQUERY_FILE}" > "${URLQUERY_FILE}.tmp" && mv "${URLQUERY_FILE}.tmp" "${URLQUERY_FILE}" ||
error_notify "Failed to update the file." error_notify "Failed to update the file."
} }
is_valid_url() { is_valid_url() {
echo "$1" | grep -qE "^https?://[^[:space:]/?#][^[:space:]]+$" echo "${1}" | grep -qE "^https?://[^[:space:]/?#][^[:space:]]+$"
} }
add_bookmark() { add_bookmark() {
URL=$($CLIPBOARD) URL="$(CLIPBOARD)"
is_valid_url "$URL" || error_notify "The clipboard content is not a valid URL." is_valid_url "${URL}" || error_notify "The clipboard content is not a valid URL."
grep -q "=$URL$" "$URLQUERY_FILE" && notify-send "The URL is already in the list." && return grep -q "=${URL}$" "${URLQUERY_FILE}" && notify-send "The URL is already in the list." && return
NAME=$(echo "" | DMENU 0 "Name") NAME="$(echo "" | DMENU "0" "Name")"
[ -n "$NAME" ] && echo "${NAME}=${URL}" >> "$URLQUERY_FILE" && notify-send "'$NAME' is bookmarked." [ -n "${NAME}" ] && echo "${NAME}=${URL}" >> "${URLQUERY_FILE}" && notify-send "'${NAME}' is bookmarked."
} }
delete_bookmark() { delete_bookmark() {
NAME=$(get_selection) NAME="$(get_selection)"
[ -z "$NAME" ] && error_notify "Failed to delete the bookmark." && return [ -z "${NAME}" ] && error_notify "Failed to delete the bookmark." && return
sed "/^$NAME=/d" "$URLQUERY_FILE" > "$URLQUERY_FILE.tmp" sed "/^${NAME}=/d" "${URLQUERY_FILE}" > "${URLQUERY_FILE}.tmp"
mv "$URLQUERY_FILE.tmp" "$URLQUERY_FILE" mv "${URLQUERY_FILE}.tmp" "${URLQUERY_FILE}"
[ ! -s "$URLQUERY_FILE" ] || ! grep -qE "\S" "$URLQUERY_FILE" && rm "$URLQUERY_FILE" [ ! -s "${URLQUERY_FILE}" ] || ! grep -qE "\S" "${URLQUERY_FILE}" && rm "${URLQUERY_FILE}"
notify-send "'$NAME' is deleted." notify-send "'${NAME}' is deleted."
} }
edit_name() { edit_name() {
OLD_NAME="$1" OLD_NAME="${1}"
NEW_NAME=$(echo "" | DMENU 0 "New Name") NEW_NAME="$(echo "" | DMENU "0" "New Name")"
[ -z "$NEW_NAME" ] && return [ -z "${NEW_NAME}" ] && return
URL=$(grep "^$OLD_NAME=" "$URLQUERY_FILE" | cut -d= -f2) URL="$(grep "^${OLD_NAME}=" "${URLQUERY_FILE}" | cut -d= -f2)"
update_file "^$OLD_NAME=" "$NEW_NAME=$URL" update_file "^${OLD_NAME}=" "${NEW_NAME}=${URL}"
} }
edit_url() { edit_url() {
NAME="$1" NAME="${1}"
NEW_URL=$(echo "" | DMENU 0 "New URL") NEW_URL="$(echo "" | DMENU "0" "New URL")"
[ -z "$NEW_URL" ] && return [ -z "${NEW_URL}" ] && return
update_file "^$NAME=.*" "$NAME=$NEW_URL" update_file "^${NAME}=.*" "${NAME}=${NEW_URL}"
} }
edit_bookmark() { edit_bookmark() {
NAME=$(get_selection) NAME="$(get_selection)"
[ -z "$NAME" ] && error_notify "Failed to edit the bookmark." && return [ -z "${NAME}" ] && error_notify "Failed to edit the bookmark." && return
FIELD=$(echo "Name\nURL" | DMENU 2 "Edit") FIELD="$(echo "Name\nURL" | DMENU "2" "Edit")"
case "$FIELD" in case "${FIELD}" in
"Name") edit_name "$NAME" ;; "Name") edit_name "${NAME}" ;;
"URL") edit_url "$NAME" ;; "URL") edit_url "${NAME}" ;;
esac esac
notify-send "'$NAME' is updated." notify-send "'${NAME}' is updated."
} }
open_bookmark() { open_bookmark() {
URL=$(grep "^$SELECTION=" "$URLQUERY_FILE" | cut -d= -f2-) URL="$(grep "^${SELECTION}=" "${URLQUERY_FILE}" | cut -d= -f2-)"
[ -z "$URL" ] && notify-send "Bookmark not found." && exit 1 [ -z "${URL}" ] && notify-send "Bookmark not found." && exit "1"
case "$URL" in case "${URL}" in
*"search"*|*"wiki"*|*"packages"*) # Add your additional search keywords here similarly. *"search"* | *"wiki"* | *"packages"*) # Add your additional search keywords here similarly.
QUERY=$(echo "" | DMENU 0 "Search") QUERY="$(echo "" | DMENU "0" "Search")"
URL="${URL}${QUERY}" URL="${URL}${QUERY}"
;; ;;
esac esac
$BROWSER "$URL" || notify-send "Failed to open the URL." "${BROWSER}" "${URL}" || notify-send "Failed to open the URL."
} }
ensure_file_exists ensure_file_exists
LINE_COUNT=$(wc -l < "$URLQUERY_FILE") LINE_COUNT="$(wc -l < "${URLQUERY_FILE}")"
[ "$LINE_COUNT" -ge "15" ] && LINE_COUNT="15" [ "${LINE_COUNT}" -ge "15" ] && LINE_COUNT="15"
SELECTION=$(get_selection) SELECTION="$(get_selection)"
[ -z "$SELECTION" ] && exit [ -z "${SELECTION}" ] && exit
case "$SELECTION" in case "${SELECTION}" in
"$ACTION_MENU") "${ACTION_MENU}")
ACTION=$(echo "Add\nDelete\nEdit" | DMENU 3 "Action") ACTION="$(echo "Add\nDelete\nEdit" | DMENU "3" "Action")"
case "$ACTION" in case "${ACTION}" in
"Add") add_bookmark ;; "Add") add_bookmark ;;
"Delete") delete_bookmark ;; "Delete") delete_bookmark ;;
"Edit") edit_bookmark ;; "Edit") edit_bookmark ;;
esac esac
;; ;;
*) *)
open_bookmark open_bookmark
;; ;;
esac esac