1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use std::path::Path;
use storage::CachedBackend;
use super::{CliError, LalResult, Manifest, Lockfile};
pub fn stash<T: CachedBackend + ?Sized>(backend: &T, mf: &Manifest, name: &str) -> LalResult<()> {
info!("Stashing OUTPUT into cache under {}/{}", mf.name, name);
if let Ok(n) = name.parse::<u32>() {
return Err(CliError::InvalidStashName(n));
}
let outputdir = Path::new("./OUTPUT");
if !outputdir.is_dir() {
return Err(CliError::MissingBuild);
}
let lf_path = Path::new("OUTPUT").join("lockfile.json");
let mut lf = Lockfile::from_path(&lf_path, &mf.name)?;
lf.version = name.to_string();
lf.write(&lf_path)?;
backend.stash_output(&mf.name, name)?;
Ok(())
}