summaryrefslogtreecommitdiff
path: root/cli/fs.rs
diff options
context:
space:
mode:
authorKevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com>2020-02-18 11:45:59 -0800
committerGitHub <noreply@github.com>2020-02-18 14:45:59 -0500
commit08dcf6bff73bbe579769ccd0f135ed4af919ea48 (patch)
tree50edb7b33b9063b4e79c73ed62da68dfaabf9356 /cli/fs.rs
parentf0f807c524f76bbf91c31f13f79d60a272e1fe3f (diff)
feat: Deno.makeTempFile (#4024)
Diffstat (limited to 'cli/fs.rs')
-rw-r--r--cli/fs.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/cli/fs.rs b/cli/fs.rs
index 521b996ac..9104d1e7a 100644
--- a/cli/fs.rs
+++ b/cli/fs.rs
@@ -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),