code-style: use tabs for indent
This commit is contained in:
253
sxbm
253
sxbm
@ -33,12 +33,12 @@ col_line_num="\033[1;34m" # Blue
|
|||||||
#
|
#
|
||||||
|
|
||||||
die() {
|
die() {
|
||||||
[ -n "$1" ] && printf "$*\n" >&2
|
[ -n "$1" ] && printf "$*\n" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: $appname <command> [<args>]
|
Usage: $appname <command> [<args>]
|
||||||
|
|
||||||
COMMANDS:
|
COMMANDS:
|
||||||
@ -54,7 +54,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
version() {
|
version() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
$appname $version
|
$appname $version
|
||||||
GPLv3 license
|
GPLv3 license
|
||||||
https://codeberg.org/NRK/sxbm
|
https://codeberg.org/NRK/sxbm
|
||||||
@ -62,122 +62,125 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
bm_add() {
|
bm_add() {
|
||||||
[ -z "$1" ] && die "No arguments provided. Use '$appname -h' for help"
|
[ -z "$1" ] && die "No arguments provided. Use '$appname -h' for help"
|
||||||
|
|
||||||
while [ -n "$1" ]; do
|
while [ -n "$1" ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
*.*) [ -z "$LINK" ] &&
|
*.*)
|
||||||
LINK="$1" ||
|
[ -n "$LINK" ] && die "too many links\n$LINK\n$1"
|
||||||
die "too many links\n$LINK\n$1" ;;
|
LINK="$1"
|
||||||
+*) TAGS="${TAGS}$1 " ;;
|
;;
|
||||||
*) TITLE="${TITLE}$1 " ;;
|
+*) TAGS="${TAGS}$1 "
|
||||||
esac
|
;;
|
||||||
shift
|
*) TITLE="${TITLE}$1 "
|
||||||
done
|
;;
|
||||||
[ -z "$LINK" ] && die "No links found"
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
[ -z "$LINK" ] && die "No links found"
|
||||||
|
|
||||||
echo "$LINK $TITLE $TAGS" >> "$data_file" &&
|
echo "$LINK $TITLE $TAGS" >> "$data_file" &&
|
||||||
echo "Link $(wc -l < "$data_file") added successfully!" ||
|
echo "Link $(wc -l < "$data_file") added successfully!" ||
|
||||||
die "Couldn't add link"
|
die "Couldn't add link"
|
||||||
}
|
}
|
||||||
|
|
||||||
__awk_search() {
|
__awk_search() {
|
||||||
awk -v CLINE="$col_line_num" -v CLINK="$col_link" -v CTITLE="$col_title" \
|
awk -v CLINE="$col_line_num" -v CLINK="$col_link" -v CTITLE="$col_title" \
|
||||||
"$*"' {
|
"$*"' {
|
||||||
LINK=$1; $1="";
|
LINK=$1; $1="";
|
||||||
gsub(/[[:blank:]]\+.*($| )/,"");
|
gsub(/[[:blank:]]\+.*($| )/,"");
|
||||||
print CLINE NR ") " CLINK LINK " " CTITLE $0
|
print CLINE NR ") " CLINK LINK " " CTITLE $0
|
||||||
}' "$data_file"
|
}' "$data_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
bm_list() {
|
bm_list() {
|
||||||
tag_strict="||"
|
tag_strict="||"
|
||||||
title_strict="&&"
|
title_strict="&&"
|
||||||
|
|
||||||
while [ -n "$1" ]; do
|
while [ -n "$1" ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"-c"|"--disable-colors")
|
"-c"|"--disable-colors")
|
||||||
unset col_link col_title col_line_num
|
unset col_link col_title col_line_num
|
||||||
;;
|
;;
|
||||||
"-s"|"--strict")
|
"-s"|"--strict")
|
||||||
tag_strict="&&"
|
tag_strict="&&"
|
||||||
;;
|
;;
|
||||||
"-S")
|
"-S")
|
||||||
title_strict="||"
|
title_strict="||"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
while [ -n "$1" ]; do
|
while [ -n "$1" ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
+*)
|
+*)
|
||||||
query_tag="/[[:blank:]]\\$1($| )/ $tag_strict $query_tag"
|
query_tag="/[[:blank:]]\\$1($| )/ $tag_strict $query_tag"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
tmp_title="$(echo "$1" | tr '[:lower:]' '[:upper:]')"
|
tmp_title="$(echo "$1" | tr '[:lower:]' '[:upper:]')"
|
||||||
query_title="toupper(\$0)~\"[^+]$tmp_title\" $title_strict $query_title"
|
query_title="toupper(\$0)~\"[^+]$tmp_title\" $title_strict $query_title"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
query_tag="${query_tag%$tag_strict }"
|
query_tag="${query_tag%$tag_strict }"
|
||||||
query_title="${query_title%$title_strict }"
|
query_title="${query_title%$title_strict }"
|
||||||
|
|
||||||
if [ -n "$query_tag" ] && [ -n "$query_title" ]; then
|
if [ -n "$query_tag" ] && [ -n "$query_title" ]; then
|
||||||
{ __awk_search "$query_tag" & __awk_search "$query_title"; } |
|
{ __awk_search "$query_tag" & __awk_search "$query_title"; } |
|
||||||
sort | uniq -d
|
sort | uniq -d
|
||||||
elif [ -n "$query_title" ] && [ -z "$query_tag" ]; then
|
elif [ -n "$query_title" ] && [ -z "$query_tag" ]; then
|
||||||
__awk_search "$query_title"
|
__awk_search "$query_title"
|
||||||
else
|
else
|
||||||
__awk_search "$query_tag"
|
__awk_search "$query_tag"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
bm_open() {
|
bm_open() {
|
||||||
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
|
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
|
||||||
force=1
|
force=1
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
[ -z "$1" ] && die "No arguments given"
|
[ -z "$1" ] && die "No arguments given"
|
||||||
|
|
||||||
if [ -z "$2" ] && [ "$1" -eq "$1" 2>/dev/null ]; then
|
if [ -z "$2" ] && [ "$1" -eq "$1" 2>/dev/null ]; then
|
||||||
LINK=$(sed -n "s| .*||;${1}p;" "$data_file")
|
LINK=$(sed -n "s| .*||;${1}p;" "$data_file")
|
||||||
else
|
else
|
||||||
LINK=$(bm_list "-c" "$@" | cut -d " " -f 2)
|
LINK=$(bm_list "-c" "$@" | cut -d " " -f 2)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$LINK" ] &&
|
[ -n "$LINK" ] &&
|
||||||
link_num=$(echo "$LINK" | wc -l) ||
|
link_num=$(echo "$LINK" | wc -l) ||
|
||||||
die "No links found"
|
die "No links found"
|
||||||
|
|
||||||
[ "$link_num" -gt 1 ] && [ -z "$force" ] &&
|
[ "$link_num" -gt 1 ] && [ -z "$force" ] &&
|
||||||
die "Too many links\nUse '$appname open -f' to force open them all\n\n$LINK"
|
die "Too many links\nUse '$appname open -f' to force open them all\n\n$LINK"
|
||||||
|
|
||||||
exec $BROWSER $LINK
|
exec $BROWSER $LINK
|
||||||
}
|
}
|
||||||
|
|
||||||
bm_edit() {
|
bm_edit() {
|
||||||
$EDITOR "$data_file"
|
$EDITOR "$data_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
bm_remove() {
|
bm_remove() {
|
||||||
[ -z "$1" ] && die "No arguments given"
|
[ -z "$1" ] && die "No arguments given"
|
||||||
|
|
||||||
[ "$1" -eq "$1" 2>/dev/null ] &&
|
[ "$1" -eq "$1" 2>/dev/null ] &&
|
||||||
LINK=$(sed "${1}q;d" "$data_file") ||
|
LINK=$(sed "${1}q;d" "$data_file") ||
|
||||||
die "Link not found"
|
die "Link not found"
|
||||||
|
|
||||||
printf "Delete this link? (y/n)\n$LINK\n"
|
printf "Delete this link? (y/n)\n$LINK\n"
|
||||||
read answer
|
read answer
|
||||||
if [ "$answer" = "y" ] || [ "$answer" = "yes" ]; then
|
if [ "$answer" = "y" ] || [ "$answer" = "yes" ]; then
|
||||||
sed -i --follow-symlinks "${1}d" "$data_file" &&
|
sed -i --follow-symlinks "${1}d" "$data_file" &&
|
||||||
echo "Deleted successfully" ||
|
echo "Deleted successfully" ||
|
||||||
die "Couldn't delete link"
|
die "Couldn't delete link"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -187,37 +190,37 @@ bm_remove() {
|
|||||||
[ -z "$1" ] && { usage; die "No command given"; }
|
[ -z "$1" ] && { usage; die "No command given"; }
|
||||||
|
|
||||||
[ -d "$data_dir" ] ||
|
[ -d "$data_dir" ] ||
|
||||||
mkdir -p "$data_dir" ||
|
mkdir -p "$data_dir" ||
|
||||||
die "Unable to create $data_dir"
|
die "Unable to create $data_dir"
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"add")
|
"add")
|
||||||
shift
|
shift
|
||||||
bm_add "$@"
|
bm_add "$@"
|
||||||
;;
|
;;
|
||||||
"ls"|"list")
|
"ls"|"list")
|
||||||
shift
|
shift
|
||||||
bm_list "$@"
|
bm_list "$@"
|
||||||
;;
|
;;
|
||||||
"open")
|
"open")
|
||||||
shift
|
shift
|
||||||
bm_open "$@"
|
bm_open "$@"
|
||||||
;;
|
;;
|
||||||
"rm"|"remove")
|
"rm"|"remove")
|
||||||
shift
|
shift
|
||||||
bm_remove "$@"
|
bm_remove "$@"
|
||||||
;;
|
;;
|
||||||
"edit")
|
"edit")
|
||||||
shift
|
shift
|
||||||
bm_edit "$@"
|
bm_edit "$@"
|
||||||
;;
|
;;
|
||||||
"-h"|"--help")
|
"-h"|"--help")
|
||||||
usage; exit 0
|
usage; exit 0
|
||||||
;;
|
;;
|
||||||
"-v"|"--version")
|
"-v"|"--version")
|
||||||
version; exit 0
|
version; exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
die "Invalid command. Use '$appname -h' for help!"
|
die "Invalid command. Use '$appname -h' for help!"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user