[feature] add listing command

This commit is contained in:
Klesh Wong 2020-12-21 11:03:15 +08:00
parent 1a621c2877
commit 6f14fe2bec

32
bin/bm
View File

@ -10,12 +10,16 @@ function _help
echo ' open [-c <category>]' echo ' open [-c <category>]'
end end
function _open function list
argparse -n open c/category= -- $argv
_filter_category $_flag_category < $BOOKMARK_PATH | _filter_name $argv
end
function open
if test 0 -eq (count $argv) if test 0 -eq (count $argv)
echo search mode echo search mode
else else
argparse -n open c/category= -- $argv list $argv | _open_urls
_filter_category $_flag_category < $BOOKMARK_PATH | _open_urls $argv
end end
end end
@ -46,22 +50,34 @@ function _filter_category -a category
end end
end end
function _open_urls function _filter_name
set -q BROWSER; or set BROWSER xdg-open if not count $argv >/dev/null
cat -
return
end
while read LINE while read LINE
if set link (string match -r '\[(.*?)\]\((.*?)\)' $LINE) if set link (string match -r '\[(.*?)\]\((.*?)\)' $LINE)
if count $argv >/dev/null && not contains $link[2] $argv if count $argv >/dev/null && not contains $link[2] $argv
continue continue
end end
$BROWSER $link[3] echo $LINE
end end
end end
end end
function _open_urls
set -q BROWSER; or set BROWSER xdg-open
while read LINE
if set link (string match -r '\[(.*?)\]\((.*?)\)' $LINE)
$BROWSER $link[3] &
disown
end
end
end
switch $argv[1] switch $argv[1]
case open case open list
_open $argv[2..-1] $argv[1..-1]
case '*' case '*'
_help _help
end end