-
Notifications
You must be signed in to change notification settings - Fork 2
/
temp.sh
63 lines (55 loc) · 1.81 KB
/
temp.sh
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
bashfoo_require text
bashfoo.mktemp.prepare()
{
if [ -z "$bashfoo_mktemp_template_base" ] ; then
if [ -n "$SCRIPT_NAME" ] ; then
bashfoo_mktemp_template_base="$SCRIPT_NAME"
else
local idx="${#BASH_SOURCE[*]}"
bashfoo_mktemp_template_base="$(basename ${BASH_SOURCE[$idx-1]})"
fi
if [ -n "$USER" ] ; then
bashfoo_mktemp_template_base="$USER-$bashfoo_mktemp_template_base"
fi
local bashfoo_mktemp_temp="${TMP-/tmp}"
bashfoo_mktemp_template_base="${bashfoo_mktemp_temp}/${bashfoo_mktemp_template_base}"
fi
# also first time, generate a name
# for temp-file list
if [ -z "$bashfoo_mktemp_file_list" ] ; then
bashfoo_mktemp_file_list="$(mktemp "${bashfoo_mktemp_template_base}-filelist-$$-XXXXXXX")"
fi
}
bashfoo.mktemp.prepare
bashfoo.mktemp.register()
{
echo "$1" >> "$bashfoo_mktemp_file_list"
}
bashfoo.mktemp() {
# first time, prepare templace variables
local localname="${1-file}"
local result="$(mktemp "${bashfoo_mktemp_template_base}-${localname}-$$-XXXXXXX")"
echo "$result" >> "$bashfoo_mktemp_file_list"
echo "$result"
}
bashfoo.mktemp.cleanup()
{
if [ -z "${bashfoo_mktemp_file_list}" ] ; then
return
fi
if [ ! -f "${bashfoo_mktemp_file_list}" ] ; then
return
fi
[ -n "${BASHFOO_DUMP_TEMPFILES-}" ] && echo "CLEANUP of ${bashfoo_mktemp_file_list}"
(
#IFS="\n"
for file in $(bashfoo.tac "${bashfoo_mktemp_file_list}") ; do
[ -n "${BASHFOO_DUMP_TEMPFILES-}" ] && { echo "START $file" ; cat $file ; echo "END $file" ; }
rm -rf "$file"
done
)
rm "${bashfoo_mktemp_file_list}"
[ -n "${BASHFOO_DUMP_TEMPFILES-}" ] && echo "CLEANUP END"
true
}
trap bashfoo.mktemp.cleanup EXIT