lib.ExecContext._put(): Clean up temporary file
_put() can leave temporary files behind if one of its shell commands fails, fix that.
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
4a6c8ab1d1
commit
cd1716ff6f
1 changed files with 8 additions and 4 deletions
|
|
@ -516,13 +516,14 @@ class ExecContext(Base):
|
|||
cmd: list[str]
|
||||
cmd_input: Input = InputMode.NonInteractive
|
||||
|
||||
tmp_file: str | None = None
|
||||
if wd is not None:
|
||||
path = wd + '/' + path
|
||||
cmds: list[RemoteCmd] = []
|
||||
stdout = (await __run(['mktemp', path + '.XXXXXX'])).stdout_str
|
||||
if stdout is None:
|
||||
raise Exception(f'Failed to create tmp-directory on {self.root}')
|
||||
out = stdout.strip() if atomic else path
|
||||
out = path
|
||||
if atomic:
|
||||
out = (await __run(['mktemp', path + '.XXXXXX'])).stdout_str.strip()
|
||||
tmp_file = out
|
||||
cmds.append(RemoteCmd(
|
||||
cmd = ['tee', out],
|
||||
cmd_input = content,
|
||||
|
|
@ -552,8 +553,11 @@ class ExecContext(Base):
|
|||
for cmd in cmds:
|
||||
log(DEBUG, f'{self.log_name}: Running {pretty_cmd(cmd.cmd, wd)}')
|
||||
ret = await __run(cmd.cmd)
|
||||
tmp_file = None # Has been successfully moved at this point
|
||||
return ret
|
||||
finally:
|
||||
if tmp_file is not None:
|
||||
await self.erase(tmp_file)
|
||||
await self.close()
|
||||
except Exception as e:
|
||||
msg = f'Failed to get {path} from {self.root} ({str(e)})'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue