use poem::Error;
use quilt_rs::browse_remote_package;
use quilt_rs::LocalDomain;
use quilt_rs::Manifest;
use quilt_rs::S3PackageURI;
pub fn package_uri(package_name: String) -> String {
let url = format!("quilt+s3://quilt-example#package={}", package_name);
url
}
pub async fn manifest_from_uri(uri_string: String) -> Result<Manifest, Error> {
let path_buf = std::env::current_dir().unwrap();
let local_domain = LocalDomain::new(path_buf);
let uri = S3PackageURI::try_from(uri_string.as_str()).expect("Failed to parse URI");
let manifest: Manifest = browse_remote_package(local_domain.into(), uri)
.await
.expect("Failed to browse remote package");
println!("manifest: {:#?}", manifest);
assert!(manifest.rows.len() > 0);
manifest.rows.len();
Ok(manifest)
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_manifest_from_uri() {
let uri = package_uri("akarve/test_dest".to_string());
let manifest = manifest_from_uri(uri).await;
assert!(manifest.is_ok());
}
}