Respect standard TMPDIR/TEMP/TMP environment variables

If any standard temp directory environment variables are set, then don't
use the output directory as the temp directory.

Issue: #22

Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com>
This commit is contained in:
Andrew Gunnerson
2023-01-28 16:20:01 -05:00
parent 2afdc2953c
commit d67cc7fe11
2 changed files with 15 additions and 2 deletions
+2 -2
View File
@@ -211,7 +211,7 @@ def patch_subcommand(args):
# Set default temp directory to the output directory because this is the
# only way to control where external libraries put their temp files
tempfile.tempdir = os.path.dirname(os.path.abspath(output))
util.set_default_temp_dir(os.path.dirname(os.path.abspath(output)))
# Decrypt keys to temp directory
with tempfile.TemporaryDirectory(dir=util.tmpfs_path()) as key_dir:
@@ -257,7 +257,7 @@ def patch_subcommand(args):
def extract_subcommand(args):
# Set default temp directory to the output directory because this is the
# only way to control where external libraries put their temp files
tempfile.tempdir = os.path.abspath(args.directory)
util.set_default_temp_dir(os.path.abspath(args.directory))
with zipfile.ZipFile(args.input, 'r') as z:
info = z.getinfo(PATH_PAYLOAD)
+13
View File
@@ -57,6 +57,19 @@ def tmpfs_path():
return None
def set_default_temp_dir(path):
'''
Set the default temporary directory for use if the user hasn't overridden
it with standard environment variables.
'''
if any(os.getenv(k) for k in ('TMPDIR', 'TEMP', 'TMP')):
# Rely on tempfile's default handling
return
tempfile.tempdir = path
@contextlib.contextmanager
def open_output_file(path):
'''