blob: f798fa0dbfcff20ca60a64b08a48376377d1d79c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
#!/usr/bin/env bash
#****F* lib/project.sh
# NAME
#
# project.sh - bash-скрипт для создания проекта в taskwarrior-tui.
#******
#****f* global.sh/getProjName
# NAME
#
# getProjName - возвращает название проекта.
#
# USES BY
#
# - taskProj
#
# NOTES
#
# Cамое первое описание (description) является названием задачи.
#
# RETURN VALUE
#
# return {string} - название задачи.
#******
function getProjName() {
task _get "$1".description
}
#****f* global.sh/getExitCriteria
# NAME
#
# getExitCriteria - возвращает критерий завершения.
#
# USES BY
#
# - taskProj
#
# NOTES
#
# Следующее после самого первого описания (description) идёт - критерий завершения.
#
# RETURN VALUE
#
# return {string} - критерий завершения задачи.
#******
function getExitCriteria() {
task _get "$1".annotations.1.description
}
#****f* global.sh/taskCheck
# NAME
#
# taskCheck - проверка обрабатываемой задачи.
#
# DESCRIPTION
#
# Проверка задачи на наличие: критерия завершения, названия проекта, первого шага и существующего проекта.
#
# USES BY
#
# - taskProj
#
# RETURN VALUE
#
# return {number} - статус завершения.
#******
function taskCheck() {
local task
task="$1"
annotationCount=$(getAnnotationCount "$task")
case "$annotationCount" in
0)
notify "msg-error" "Нет критерия завершения, выход..."
return 1
;;
1)
notify "msg-error" "Нет первого шага у проекта, выход..."
return 1
;;
*)
checkExistingProject "$task"
hasProject "$task"
return 0
;;
esac
}
#****f* global.sh/taskProj
# NAME
#
# taskProj - создание проекта.
#
# NOTES
#
# Проект создается на основе:
#
# - названия проекта;
# - критерия завершения;
# - первого шага.
#
# USES BY
#
# - tskw.sh
#******
function taskProj() {
local task
local projName
local exitCriteria
local idTask
local tags
task="$1"
tags=$(getTags "$1")
projName=$(getProjName "$1")
exitCriteria=$(getExitCriteria "$1")
readarray -t annotations < <(task "$1" export | jq -r '.[] | .annotations[1:] | .[].description')
if [[ "$tags" =~ "someday" ]]; then
task "$task" modify priority: -someday
fi
task "$task" modify project:"$projName" description:"$exitCriteria"
denotateAllAnnotations "$task"
for taskIndex in "${!annotations[@]}"; do
if [[ "$taskIndex" -eq 0 ]]; then
task add "${annotations[$taskIndex]}" project:"$projName" order:"$((taskIndex + 2))"
idTask=$(getLatestTaskId)
continue
fi
task add "${annotations[$taskIndex]}" project:"$projName" order:"$((taskIndex + 2))" depends:"$idTask"
idTask=$(getLatestTaskId)
done
}
|