chiark / gitweb /
bundles: Prepare for process_bundle, skeleton
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 10 May 2021 00:20:56 +0000 (01:20 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 10 May 2021 00:20:56 +0000 (01:20 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bundles.rs

index 596550cb80f0152c41ae9c57b333cf2245b0d29f..fab48e7a0162c5a42899dba9802009fe75b6d040 100644 (file)
@@ -168,6 +168,10 @@ impl Id {
     b_file(instance, self.index, self.kind)
   }
 
+  fn path_dir(&self, instance: &InstanceName) -> String {
+    b_file(instance, self.index, "d")
+  }
+
   pub fn path(&self, instance: &Unauthorised<InstanceGuard<'_>, InstanceName>,
           auth: Authorisation<Id>) -> String {
     self.path_(&instance.by_ref(auth.therefore_ok()).name)
@@ -388,6 +392,13 @@ where EH: BundleParseError,
   Parsed { meta }
 }
 
+#[throws(LE)]
+fn process_bundle(id: Id, instance: &InstanceName) {
+  let dir = id.path_dir(instance);
+  fs::create_dir(&dir)
+    .with_context(|| dir.clone()).context("mkdir").map_err(IE::from)?;
+}
+
 //---------- scanning/incorporating/uploading ----------
 
 #[throws(InternalError)]
@@ -550,6 +561,8 @@ impl Uploading {
 
     let parsed = parse_bundle::<LoadError,_>(id, &mut file, &tmp)?;
 
+    process_bundle(id, &*instance)?;
+
     Uploaded { id, parsed }
   }
 }