From d25064e58f0b320810d6a4671f5ebd92b2d895aa Mon Sep 17 00:00:00 2001 From: NRK Date: Fri, 23 Apr 2021 22:19:27 +0600 Subject: [PATCH 01/10] initial open implementaion --- sxbm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sxbm b/sxbm index 6de095e..2b4398a 100755 --- a/sxbm +++ b/sxbm @@ -133,6 +133,20 @@ bm_list(){ "$DATA_FILE" | eval "$QUERY_TITLE" } +bm_open(){ + [ -z "$1" ] && die "No arguments given" + + if [ $( bm_list "$@" | wc -l ) -eq 1 ]; then + local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) + else + [ $( bm_list "$@" | wc -l ) -gt 1 ] && + die "Too many links" || + die "No links" + fi + + $BROWSER $LINK +} + ############ ### main ### ############ @@ -153,6 +167,8 @@ case "$1" in bm_list "$@" ;; "open") + shift + bm_open "$@" ;; "rm"|"remove") ;; From a9ea53f1fba0a9ee362cc5d4c9724ec06bc12c07 Mon Sep 17 00:00:00 2001 From: NRK Date: Thu, 29 Apr 2021 04:27:07 +0600 Subject: [PATCH 02/10] reimplement parsing in a case statement --- sxbm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/sxbm b/sxbm index 2b4398a..7ef2968 100755 --- a/sxbm +++ b/sxbm @@ -135,13 +135,25 @@ bm_list(){ bm_open(){ [ -z "$1" ] && die "No arguments given" + while [ -n "$1" ]; do + case "$1" in + "-f"|"--force") + local FORCE="1" + shift + ;; + *) + local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) + shift "$#" + ;; + esac + done - if [ $( bm_list "$@" | wc -l ) -eq 1 ]; then - local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) - else - [ $( bm_list "$@" | wc -l ) -gt 1 ] && - die "Too many links" || - die "No links" + [ -z "$LINK" ] && die "No links found" + + local LINK_NUM=$( printf "$LINK" | wc -l ) + + if [ "$LINK_NUM" -gt 0 ]; then + die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$(bm_list "-c" "$@")" fi $BROWSER $LINK From 21062ccec8f7cd004edbff7876ae605ade2930fc Mon Sep 17 00:00:00 2001 From: NRK Date: Thu, 29 Apr 2021 04:30:06 +0600 Subject: [PATCH 03/10] implement opening by line number --- sxbm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sxbm b/sxbm index 7ef2968..43542a9 100755 --- a/sxbm +++ b/sxbm @@ -141,6 +141,10 @@ bm_open(){ local FORCE="1" shift ;; + [0-9]) + local LINK=$( awk "NR == $1 {print \$1}" $DATA_FILE ) + shift + ;; *) local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) shift "$#" From 4007e22c288a6868af1cb2767ce8eb0251feb223 Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 02:56:50 +0600 Subject: [PATCH 04/10] refactor $LINK checking --- sxbm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sxbm b/sxbm index 43542a9..c6206c5 100755 --- a/sxbm +++ b/sxbm @@ -152,9 +152,10 @@ bm_open(){ esac done - [ -z "$LINK" ] && die "No links found" - local LINK_NUM=$( printf "$LINK" | wc -l ) + [ -n "$LINK" ] && + local LINK_NUM=$( printf "$LINK" | wc -l ) || + die "No links found" if [ "$LINK_NUM" -gt 0 ]; then die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$(bm_list "-c" "$@")" From a82ca0dc4f6e695c607ffaedde23171431dc3285 Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 05:09:08 +0600 Subject: [PATCH 05/10] reimplement argument parsing --- sxbm | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/sxbm b/sxbm index c6206c5..a76fd98 100755 --- a/sxbm +++ b/sxbm @@ -134,24 +134,17 @@ bm_list(){ } bm_open(){ + if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then + local FORCE=1 + shift + fi [ -z "$1" ] && die "No arguments given" - while [ -n "$1" ]; do - case "$1" in - "-f"|"--force") - local FORCE="1" - shift - ;; - [0-9]) - local LINK=$( awk "NR == $1 {print \$1}" $DATA_FILE ) - shift - ;; - *) - local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) - shift "$#" - ;; - esac - done + if [ -z "$2" ] && [ "$1" -eq "$1" 2>/dev/null ]; then + local LINK=$( awk "NR == $1 {print \$1}" $DATA_FILE ) + else + local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) + fi [ -n "$LINK" ] && local LINK_NUM=$( printf "$LINK" | wc -l ) || From bf3dbb5f30384b4ab716bccfe9a0618a437d2abb Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 07:48:19 +0600 Subject: [PATCH 06/10] refactor $LINK and $LINK_NUM parsing --- sxbm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sxbm b/sxbm index a76fd98..a04d13e 100755 --- a/sxbm +++ b/sxbm @@ -143,18 +143,18 @@ bm_open(){ if [ -z "$2" ] && [ "$1" -eq "$1" 2>/dev/null ]; then local LINK=$( awk "NR == $1 {print \$1}" $DATA_FILE ) else - local LINK=$( bm_list "-c" "$@" | awk '{print $2}' ) + local LINK=$( bm_list "-c" "$@" ) fi [ -n "$LINK" ] && - local LINK_NUM=$( printf "$LINK" | wc -l ) || + local LINK_NUM=$( echo "$LINK" | wc -l ) || die "No links found" - if [ "$LINK_NUM" -gt 0 ]; then - die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$(bm_list "-c" "$@")" + if [ "$LINK_NUM" -gt 1 ]; then + die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$( echo "$LINK" )" fi - $BROWSER $LINK + $BROWSER $( echo "$LINK" | awk "{print \$2}" ) } ############ From da2342b738fc07b36a5fda8a588927e99db64dec Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 07:51:08 +0600 Subject: [PATCH 07/10] implement --force --- sxbm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sxbm b/sxbm index a04d13e..ec4658d 100755 --- a/sxbm +++ b/sxbm @@ -150,11 +150,14 @@ bm_open(){ local LINK_NUM=$( echo "$LINK" | wc -l ) || die "No links found" - if [ "$LINK_NUM" -gt 1 ]; then + if [ "$LINK_NUM" -gt 1 ] && [ -z "$FORCE" ]; then die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$( echo "$LINK" )" fi - $BROWSER $( echo "$LINK" | awk "{print \$2}" ) + while [ "$LINK_NUM" -gt 0 ]; do + $BROWSER $( echo "$LINK" | awk "NR == $LINK_NUM {print \$2}" ) + LINK_NUM=$(($LINK_NUM - 1)) + done } ############ From bae6ddabc8fa92e3a9ea707fb6f6f45923d4dc1a Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 08:04:09 +0600 Subject: [PATCH 08/10] fix: $LINK parsing for line number --- sxbm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sxbm b/sxbm index ec4658d..c290307 100755 --- a/sxbm +++ b/sxbm @@ -141,7 +141,7 @@ bm_open(){ [ -z "$1" ] && die "No arguments given" if [ -z "$2" ] && [ "$1" -eq "$1" 2>/dev/null ]; then - local LINK=$( awk "NR == $1 {print \$1}" $DATA_FILE ) + local LINK=$( awk -v F="$1" 'NR == F {print NR" "$1}' $DATA_FILE ) else local LINK=$( bm_list "-c" "$@" ) fi From d477b86c4c6ab577873a2a1104dae21de36b8d9a Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 08:13:50 +0600 Subject: [PATCH 09/10] remove while loop for opening links looks like you can feed the browser multiple links and it works. --- sxbm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sxbm b/sxbm index c290307..32f5dd3 100755 --- a/sxbm +++ b/sxbm @@ -154,10 +154,7 @@ bm_open(){ die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$( echo "$LINK" )" fi - while [ "$LINK_NUM" -gt 0 ]; do - $BROWSER $( echo "$LINK" | awk "NR == $LINK_NUM {print \$2}" ) - LINK_NUM=$(($LINK_NUM - 1)) - done + $BROWSER $( echo "$LINK" | awk '{print $2;gsub(/\n/," ")}' ) } ############ From 69d2c760a9f3910925f1d057c18800d239498ca4 Mon Sep 17 00:00:00 2001 From: NRK Date: Sat, 1 May 2021 08:18:26 +0600 Subject: [PATCH 10/10] send output to null and dont freeze the terminal --- sxbm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sxbm b/sxbm index 32f5dd3..eff9824 100755 --- a/sxbm +++ b/sxbm @@ -154,7 +154,7 @@ bm_open(){ die "Too many links\nUse 'sxbm open -f' to force open them all\n\n$( echo "$LINK" )" fi - $BROWSER $( echo "$LINK" | awk '{print $2;gsub(/\n/," ")}' ) + $BROWSER $( echo "$LINK" | awk '{print $2;gsub(/\n/," ")}' ) 1>/dev/null 2>&1 & } ############