withTempFile<R> function

R withTempFile<R>(
  1. R action(
    1. String tempFile
    ), {
  2. String? suffix,
  3. String? pathToTempDir,
  4. bool create = true,
  5. bool keep = false,
})

Creates a temp file and then calls action.

NOTE: DO NOT use this with an async action. Instead use dcli_core.withTempFileAsync.

Once action completes the temporary file will be deleted.

The actions return value R is returned from the withTempFile function.

If create is true (default true) then the temp file will be created. If create is false then just the name will be generated.

if pathToTempDir is passed then the file will be created in that directory otherwise the file will be created in the system temp directory.

The temp file name will be uuid.tmp unless you provide a suffix in which case the file name will be uuid.suffix

NOTE: action must NOT be async. @ see core.withTempFile if you meed to use an async action.

Implementation

R withTempFile<R>(
  R Function(String tempFile) action, {
  String? suffix,
  String? pathToTempDir,
  bool create = true,
  bool keep = false,
}) {
  final tmp = createTempFilename(suffix: suffix, pathToTempDir: pathToTempDir);
  if (create) {
    touch(tmp, create: true);
  }

  R result;
  try {
    result = action(tmp);
  } finally {
    if (exists(tmp) && !keep) {
      delete(tmp);
    }
  }
  return result;
}