#!/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 # # 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 # # 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 # # 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 # # 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 # # 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 # # 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 # # 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 }