This repository was archived by the owner on Jul 2, 2024. It is now read-only.
File tree 1 file changed +78
-10
lines changed
1 file changed +78
-10
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,19 @@ function __get_reaper_timeout ()
49
49
printf -- ' %s' " ${value} "
50
50
}
51
51
52
+ function __is_valid_get ()
53
+ {
54
+ local -r get_options=' ^(end|start|ttl)$'
55
+ local -r value=" ${1} "
56
+
57
+ if [[ ${value} =~ ${get_options} ]]
58
+ then
59
+ return 0
60
+ fi
61
+
62
+ return 1
63
+ }
64
+
52
65
function __is_valid_positive_integer ()
53
66
{
54
67
local -r positive_integer=' ^[0-9]+$'
@@ -84,45 +97,100 @@ function main ()
84
97
__get_reaper_timeout
85
98
) "
86
99
100
+ local current_time
101
+ local get
87
102
local pid=" 1"
88
103
local signal=" TERM"
89
104
local session_start
90
105
local session_end
106
+ local state_value
91
107
local verbose=" false"
92
108
local warning_timeout=" 30"
93
109
94
110
while [[ " ${# } " -gt 0 ]]
95
111
do
96
112
case " ${1} " in
97
- -p)
98
- pid=" ${2} "
113
+ --get=* )
114
+ get=" ${1#* =} "
115
+ shift 1
116
+ ;;
117
+ -g|--get)
118
+ get=" ${2} "
99
119
shift 2 || break
100
120
;;
101
- --pid)
121
+ --pid= * )
102
122
pid=" ${1#* =} "
103
123
shift 1
104
124
;;
105
- -s )
106
- signal =" ${2} "
125
+ -p|--pid )
126
+ pid =" ${2} "
107
127
shift 2 || break
108
128
;;
109
- --signal)
129
+ --signal= * )
110
130
signal=" ${1#* =} "
111
131
shift 1
112
132
;;
133
+ -s|--signal)
134
+ signal=" ${2} "
135
+ shift 2 || break
136
+ ;;
113
137
-v|--verbose)
114
138
verbose=" true"
115
139
shift 1
116
140
;;
141
+ * )
142
+ >&2 printf -- \
143
+ ' ERROR: Unknown option %s\n' \
144
+ " ${1} "
145
+ exit 1
146
+ ;;
117
147
esac
118
148
done
119
149
120
150
if [[ -e ${lock_file} ]]
121
151
then
122
- >&2 printf -- \
123
- ' ERROR: %s lock detected - aborting\n' \
124
- " ${0##*/ } "
125
- exit 1
152
+ if [[ -n ${get} ]]
153
+ then
154
+ state_value=" $( < " ${state_file} " ) "
155
+
156
+ session_end=" ${state_value##* } "
157
+ session_start=" ${state_value%% * } "
158
+
159
+ case " ${get} " in
160
+ end)
161
+ printf -- \
162
+ ' %s\n' \
163
+ " ${session_end} "
164
+ ;;
165
+ start)
166
+ printf -- \
167
+ ' %s\n' \
168
+ " ${session_start} "
169
+ ;;
170
+ ttl)
171
+ current_time=" $(
172
+ date -u +%s
173
+ ) "
174
+
175
+ printf -- \
176
+ ' %s\n' \
177
+ " $(( ${session_end} - ${current_time} )) "
178
+ ;;
179
+ * )
180
+ >&2 printf -- \
181
+ ' ERROR: Unknown get value %s\n' \
182
+ " ${get} "
183
+ exit 1
184
+ ;;
185
+ esac
186
+
187
+ exit 0
188
+ else
189
+ >&2 printf -- \
190
+ ' ERROR: %s lock detected - aborting\n' \
191
+ " ${0##*/ } "
192
+ exit 1
193
+ fi
126
194
fi
127
195
128
196
trap __cleanup \
You can’t perform that action at this time.
0 commit comments