From a142a39ef0d0f1ea2a5b07dd5313266232eed265 Mon Sep 17 00:00:00 2001 From: clemtre Date: Sat, 13 Jan 2024 22:32:53 +0100 Subject: [PATCH] edit.sh rewrite with here-doc declarations thanks to victor --- edit_bookmarks_dmenu.sh | 61 ++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/edit_bookmarks_dmenu.sh b/edit_bookmarks_dmenu.sh index 6e9d23c..2e2328b 100755 --- a/edit_bookmarks_dmenu.sh +++ b/edit_bookmarks_dmenu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh dmenu_style() { local font='junicode-18' @@ -6,46 +6,43 @@ dmenu_style() { local normal_fg='#FFFFFF' local selected_bg='#AAAAAA' local selected_fg='#000000' - echo "-fn $font -nb $normal_bg -nf $normal_fg -sb $selected_bg -sf $selected_fg" } -# Make it POSIX friendlier and run with #!/bin/sh - BOOKMARKS="BOOKMARKS" -url=$(xclip -o -selection clipboard) +URL=$(xclip -o -selection clipboard) + +# The curl for Name: is a blocking process and will pause the programm +# in case internet shuts :^) -url_regex="^(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]" +# TODO : +# add description, tags and color in one field with symbols such as : +# § this is a description. § comma, separated, tags § color # If the given string ressembles to a url, continue. -if [[ $url =~ $url_regex ]]; then - echo "The string is a URL: $url" - url=$(xclip -o -selection clipboard | dmenu -p "Enter the URL:" $(dmenu_style)) - - # what we used to need htmlq for : - #name=$(curl $url | ~/.cargo/bin/htmlq title --text | sed -r '/^\s*$/d' | sed 's/^ *//g') - - # This is a blocking process and will pause the programm in case - # internet shuts :^) - name=$(curl $url awk -v RS='' ' - // {gsub(/.*<title>/, ""); print} - ' $url | tr -d '\n') - - description=$(echo "" | dmenu -p "Enter a description:" $(dmenu_style)) - tags=$(echo "" | dmenu -p "Enter comma-separated tags:" $(dmenu_style)) - - bookmark_file="$BOOKMARKS" - - # Save the data to the file. - echo "URL: $url" >> "$BOOKMARKS" - echo "Name: $name" >> "$BOOKMARKS" - echo "Description: $description" >> "$BOOKMARKS" - echo "Tags: $tags" >> "$BOOKMARKS" - echo "Date: $(date +%s)" >> "$BOOKMARKS" - echo >> "$BOOKMARKS" +# https://stackoverflow.com/questions/21115121/how-to-test-if-string-matches-a-regex-in-posix-shell-not-bash +# URL_REGEX="^(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]" +if printf "$URL" | grep -q http; then +# incrementing id soon to be implemented replacing <ol> counter +#PREV_URL_COUNT=$(grep "URL: " $BOOKMARKS | wc -l) +#ID: $((PREV_URL_COUNT + 1)) +cat <<- EOF >> $BOOKMARKS + +URL: $(printf $URL) +Name: $(curl $URL | awk -v RS='' '\ +// {gsub(/.*<title>/, ""); print}\ +' | tr -d '\n') +Description: $(printf "" | dmenu -p "Enter a description: " $(dmenu_style)) +Tags: $(printf "" | dmenu -p "Enter comma separated tags: " $(dmenu_style)) +Date: $(date +%s) + +EOF else - xclip -o -selection clipboard | dmenu -p "≉" $(dmenu_style) + printf "Text in clipboard is not a url" + exit fi +# what we used to need htmlq for : +# name=$(curl $url | ~/.cargo/bin/htmlq title --text | sed -r '/^\s*$/d' | sed 's/^ *//g')