2 files changed,
39 insertions(+),
0 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2025-06-22 18:48:00 +0300
Parent:
e5f2273
jump to
| M | config/todo/actions/@ |
| A | config/todo/actions/url |
M
config/todo/actions/@
@@ -1,6 +1,16 @@
#!/usr/bin/env bash +export TODOTXT_VERBOSE=0 + action=$1 shift + +if [[ $action == "usage" ]]; then + echo "@ [context]" + echo " Lists all tasks with the given context." + echo " If no context is given, lists all tasks categorized by their context." + echo " If task has @someday, it won't be listed." + exit 0 +fi CONTEXTS=$(grep -o '[^ ]*@[^ ]\+' "$TODO_FILE" | grep '^@' | sort -u | sed 's/^@//g' ) for context in $CONTEXTS ; do
A
config/todo/actions/url
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash +action=$1 +shift + +if [[ $action == "usage" ]]; then + echo "url [task_number] - opens link in the task" + exit 0 +fi + +item=$1 +if [[ ! "$item" =~ ^[0-9]+$ ]]; then + echo "$item: invalid item number" + exit 1 +fi + +URL_REGEX="\b(?:https?:\/\/)?(?:[\w-]+\.)+[a-z]{2,}(?:\/[\w\-./?%&=:#@+]*)?" +URL=$(sed "$item!d" "$TODO_FILE" | grep -Po "$URL_REGEX") + +if [[ -z "$URL" ]]; then + echo "No URL found in task $item" + exit 1 +fi + +if [[ ! "#URL" =~ ^(?!https?:\/\/) ]]; then + URL="https://$URL" +fi + +echo "$URL" +xdg-open "$URL" &>/dev/null