summaryrefslogtreecommitdiffstats
path: root/with-tmpdir
blob: ebf712e1b39f78a09369bafe0ea85fdbef9e1dca (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
#! /bin/sh
# usage: with-tmpdir [-t TEMPLATE] COMMAND [ARGS...]
# see mktemp(1) for TEMPLATE
set -efu

template=with-tmpdir.XXXXXXXX

case $1 in
  -t) template=$2; shift 2;;
esac

TMPDIR=$(mktemp -dt "$template")

# make sure $TMPDIR exists and is a directory
(cd "$TMPDIR")

cleanup() {
  # ensure $PWD != $TMPDIR
  cd /
  rm -fR "$TMPDIR"
}

trap 'cleanup; trap - EXIT INT QUIT' \
                      EXIT INT QUIT

export TMPDIR
"$@"