diff options
Diffstat (limited to 'base/src/temp.rs')
-rw-r--r-- | base/src/temp.rs | 30 |
1 files changed, 0 insertions, 30 deletions
diff --git a/base/src/temp.rs b/base/src/temp.rs deleted file mode 100644 index ee44004..0000000 --- a/base/src/temp.rs +++ /dev/null @@ -1,30 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2023 metamuffin <metamuffin.org> -*/ -use crate::AssetLocationExt; -use anyhow::Context; -use jellycommon::AssetLocation; -use std::{fs::File, sync::atomic::AtomicUsize}; - -static TEMP_COUNTER: AtomicUsize = AtomicUsize::new(0); - -pub struct TempFile(pub AssetLocation); - -impl TempFile { - pub fn new(generate: impl FnOnce(File) -> anyhow::Result<()>) -> anyhow::Result<Self> { - let i = TEMP_COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed); - let loc = AssetLocation::Temp(format!("jellything-temp-{i}").into()); - - let file = File::create(loc.path()).context("creating temp file")?; - generate(file).context("tempfile generation")?; - - Ok(Self(loc)) - } -} -impl Drop for TempFile { - fn drop(&mut self) { - std::fs::remove_file(self.0.path()).expect("cant unlink tempfile") - } -} |