use crate::config::WasmerEnv;
use anyhow::Result;
use clap::Parser;
use std::{fs, path::Path};
#[derive(Debug, Parser)]
pub struct Cache {
#[clap(flatten)]
env: WasmerEnv,
#[clap(subcommand)]
cmd: Cmd,
}
impl Cache {
pub fn execute(&self) -> Result<()> {
let cache_dir = self.env.cache_dir();
match self.cmd {
Cmd::Clean => {
clean(cache_dir)?;
}
Cmd::Dir => {
println!("{}", self.env.cache_dir().display());
}
}
Ok(())
}
}
#[derive(Debug, Copy, Clone, Parser)]
enum Cmd {
Clean,
Dir,
}
fn clean(cache_dir: &Path) -> Result<()> {
if cache_dir.exists() {
fs::remove_dir_all(cache_dir)?;
}
fs::create_dir_all(cache_dir)?;
eprintln!("Wasmer cache cleaned successfully.");
Ok(())
}