use super::*;
impl<N: Network> Package<N> {
pub fn clean(directory: &Path) -> Result<()> {
ensure!(directory.exists(), "The program directory does not exist: {}", directory.display());
ensure!(
Manifest::<N>::exists_at(directory),
"Missing '{}' at '{}'",
Manifest::<N>::file_name(),
directory.display()
);
ensure!(
AleoFile::<N>::main_exists_at(directory),
"Missing '{}' at '{}'",
AleoFile::<N>::main_file_name(),
directory.display()
);
let build_directory = directory.join("build");
if build_directory.exists() {
std::fs::remove_dir_all(&build_directory)?;
}
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
type CurrentNetwork = snarkvm_console::network::MainnetV0;
type CurrentAleo = snarkvm_circuit::network::AleoV0;
#[test]
fn test_clean() {
let (directory, package) = crate::package::test_helpers::sample_token_package();
assert!(!package.build_directory().exists());
Package::<CurrentNetwork>::clean(&directory).unwrap();
assert!(!package.build_directory().exists());
package.build::<CurrentAleo>().unwrap();
assert!(package.build_directory().exists());
Package::<CurrentNetwork>::clean(&directory).unwrap();
assert!(!package.build_directory().exists());
std::fs::remove_dir_all(directory).unwrap();
}
#[test]
fn test_clean_with_import() {
let (directory, package) = crate::package::test_helpers::sample_wallet_package();
assert!(!package.build_directory().exists());
Package::<CurrentNetwork>::clean(&directory).unwrap();
assert!(!package.build_directory().exists());
package.build::<CurrentAleo>().unwrap();
assert!(package.build_directory().exists());
Package::<CurrentNetwork>::clean(&directory).unwrap();
assert!(!package.build_directory().exists());
std::fs::remove_dir_all(directory).unwrap();
}
}