todo: add action for opening urls in todos

This commit is contained in:
Oleksandr Smirnov 2025-06-22 18:48:00 +03:00
parent e5f2273627
commit 4fe83e65e0
No known key found for this signature in database
2 changed files with 39 additions and 0 deletions

View file

@ -1,7 +1,17 @@
#!/usr/bin/env bash #!/usr/bin/env bash
export TODOTXT_VERBOSE=0
action=$1 action=$1
shift 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' ) CONTEXTS=$(grep -o '[^ ]*@[^ ]\+' "$TODO_FILE" | grep '^@' | sort -u | sed 's/^@//g' )
for context in $CONTEXTS ; do for context in $CONTEXTS ; do
if [[ $context == "someday" ]]; then if [[ $context == "someday" ]]; then

29
config/todo/actions/url Executable file
View file

@ -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