aboutsummaryrefslogtreecommitdiff
path: root/lib/global.sh
diff options
context:
space:
mode:
authorLibravatar Stepanov Aleksey <blueingreen@bluig.xyz>2025-05-11 14:12:21 +0500
committerLibravatar Stepanov Aleksey <blueingreen@bluig.xyz>2025-05-11 14:12:21 +0500
commitb26818dad13db472b20e299d96d0fb124417a5e6 (patch)
treecaf27ea27c321cbe4a8ce0be25c4cc37d3933dfd /lib/global.sh
add taskwarrior-tui-scripts project
Diffstat (limited to 'lib/global.sh')
-rwxr-xr-xlib/global.sh265
1 files changed, 265 insertions, 0 deletions
diff --git a/lib/global.sh b/lib/global.sh
new file mode 100755
index 0000000..58f8721
--- /dev/null
+++ b/lib/global.sh
@@ -0,0 +1,265 @@
+#!/usr/bin/env bash
+
+#****F* lib/global.sh
+# NAME
+#
+# global.sh - общие функции для всех скриптов.
+#
+# USES
+#
+# - environment.sh
+#******
+
+#****f* global.sh/notify
+# NAME
+#
+# notify - вывод сообщения через notify-send.
+#
+# ARGUMENTS
+#
+# category - категория уведомления.
+# message - строка сообщения.
+#
+# USAGE
+#
+# notify <category> <message>
+#
+# EXAMPLE
+#
+# notify "msg-error" "Ошибка!"
+#
+# NOTES
+#
+# Категории уведомлений находятся в $HOME/.config/mako/category
+#
+# USES
+#
+# - global.sh
+# - project.sh
+# - edit.sh
+# - someday.sh
+# - start_stop.sh
+# - edit_project.sh
+#******
+function notify() {
+ notify-send -t 3000 -a "taskwarrior" -c "$1" "$2"
+}
+
+#****f* global.sh/getLatestTaskId
+# NAME
+#
+# getLatestTaskId - возвращает id задачи.
+#
+# DESCRIPTION
+#
+# Возвращает id задачи с тегом +LATEST, которая является самой последней из добавленных.
+#
+# USES
+#
+# - project.sh
+#
+# NOTES
+#
+# https://taskwarrior.org/docs/tags/
+#
+# RETURN VALUE
+#
+# return {string} - Id задачи
+#******
+function getLatestTaskId() {
+ task +LATEST _id
+}
+
+#****f* global.sh/getLatestTaskUuid
+# NAME
+#
+# getLatestTaskUuid - возвращает id задачи.
+#
+# DESCRIPTION
+#
+# Возвращает uuid задачи с тегом +LATEST, которая является самой последней из добавленных.
+#
+# USES
+#
+# - project.sh
+#
+# NOTES
+#
+# https://taskwarrior.org/docs/tags/
+#
+# RETURN VALUE
+#
+# return {string} - Uuid задачи
+#******
+function getLatestTaskUuid() {
+ task +LATEST _uuid
+}
+
+#****f* global.sh/getTags
+# NAME
+#
+# getTags - возвращает массив тегов задачи.
+#
+# ARGUMENTS
+#
+# id | uuid - id или uuid задачи.
+#
+# USAGE
+#
+# getTags <id | uuid>
+#
+# USES
+#
+# - project.sh
+# - someday.sh
+# - edit_project.sh
+#
+# RETURN VALUE
+#
+# return {Array} - Массив тегов
+#******
+function getTags() {
+ task "$1" export | jq -r '.[].tags? | .[]?'
+}
+
+#****f* global.sh/getNameProject
+# NAME
+#
+# getNameProject - возвращает название проекта задачи.
+#
+# ARGUMENTS
+#
+# id | uuid - id или uuid задачи.
+#
+# USAGE
+#
+# getNameProject <id | uuid>
+#
+# USES
+#
+# - edit.sh
+#
+# RETURN VALUE
+#
+# return {String} - Uuid задачи
+#******
+function getNameProject() {
+ task "$1" _project
+}
+
+#****f* global.sh/getAnnotationCount
+# NAME
+#
+# getAnnotationCount - возвращает длину массива аннотаций задачи.
+#
+# ARGUMENTS
+#
+# id | uuid - id или uuid задачи.
+#
+# USAGE
+#
+# getAnnotationCount <id | uuid>
+#
+# USES
+#
+# - project.sh
+#
+# RETURN VALUE
+#
+# return {String} - Количество аннотаций
+#******
+function getAnnotationCount() {
+ task "$1" export | jq -r '.[] | .annotations | length'
+}
+
+#****f* global.sh/checkExistingProject
+# NAME
+#
+# checkExistingProject - проверка на наличие существующего проекта.
+#
+# ARGUMENTS
+#
+# id | uuid - id или uuid задачи.
+#
+# USAGE
+#
+# checkExistingProject <id | uuid>
+#
+# USES
+#
+# - project.sh
+#******
+function checkExistingProject() {
+ local task
+ local nameNewProject
+
+ task="$1"
+ nameNewProject=$(task _get "$task".description)
+ readarray -t listExistingProjects < <(task _project | grep "$nameNewProject")
+
+ if [[ "${#listExistingProjects[@]}" -ge 1 ]]; then
+ notify "msg-error" "Проект с таким названием уже существует. Выход..."
+ exit 1
+ fi
+}
+
+#****f* global.sh/hasProject
+# NAME
+#
+# hasProject - проверка на наличие проекта у задачи.
+#
+# ARGUMENTS
+#
+# id | uuid - id или uuid задачи.
+#
+# USAGE
+#
+# hasProject <id | uuid>
+#
+# USES
+#
+# - project.sh
+#******
+function hasProject() {
+ local task
+ local hasProject
+
+ task="$1"
+
+ hasProject=$(task "$task" export | jq -r '.[] | .project')
+
+ if [[ ! "$hasProject" == "null" ]]; then
+ clear
+ notify "msg-error" "Одна из выбранных задач имеет проект, выход..."
+ exit 1
+ fi
+}
+
+#****f* global.sh/denotateAllAnnotations
+# NAME
+#
+# denotateAllAnnotations - удаление всех аннотаций у задачи.
+#
+# ARGUMENTS
+#
+# id | uuid - id или uuid задачи.
+#
+# USAGE
+#
+# denotateAllAnnotations <id | uuid>
+#
+# USES
+#
+# - project.sh
+#******
+function denotateAllAnnotations() {
+ local task
+ local countAnnotations
+
+ task="$1"
+ countAnnotations=$(getAnnotationCount "$task")
+
+ for ((i = 0; i < countAnnotations; i++)); do
+ task "$task" denotate
+ done
+}