diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2020-02-18 11:45:59 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-18 14:45:59 -0500 |
commit | 08dcf6bff73bbe579769ccd0f135ed4af919ea48 (patch) | |
tree | 50edb7b33b9063b4e79c73ed62da68dfaabf9356 /cli/fs.rs | |
parent | f0f807c524f76bbf91c31f13f79d60a272e1fe3f (diff) |
feat: Deno.makeTempFile (#4024)
Diffstat (limited to 'cli/fs.rs')
-rw-r--r-- | cli/fs.rs | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -60,10 +60,11 @@ fn set_permissions(_file: &mut File, _perm: u32) -> std::io::Result<()> { Ok(()) } -pub fn make_temp_dir( +pub fn make_temp( dir: Option<&Path>, prefix: Option<&str>, suffix: Option<&str>, + is_dir: bool, ) -> std::io::Result<PathBuf> { let prefix_ = prefix.unwrap_or(""); let suffix_ = suffix.unwrap_or(""); @@ -77,7 +78,15 @@ pub fn make_temp_dir( let unique = rng.gen::<u32>(); buf.set_file_name(format!("{}{:08x}{}", prefix_, unique, suffix_)); // TODO: on posix, set mode flags to 0o700. - let r = create_dir(buf.as_path()); + let r = if is_dir { + create_dir(buf.as_path()) + } else { + OpenOptions::new() + .write(true) + .create_new(true) + .open(buf.as_path()) + .map(|_| ()) + }; match r { Err(ref e) if e.kind() == ErrorKind::AlreadyExists => continue, Ok(_) => return Ok(buf), |