use crate::error::Result;
use crate::manifest::common::{AssetKind, list_manifests, verify_manifest};
use crate::manifest::config::ManifestCreationConfig;
use crate::storage::traits::StorageBackend;
pub fn create_manifest(
mut config: ManifestCreationConfig,
software_type: String,
version: Option<String>,
) -> Result<()> {
config.software_type = Some(software_type.clone());
config.version = version.clone();
let enhanced_description = match (&config.description, &version) {
(Some(desc), Some(ver)) => Some(format!("{desc} (Type: {software_type}, Version: {ver})")),
(Some(desc), None) => Some(format!("{desc} (Type: {software_type})")),
(None, Some(ver)) => Some(format!("Type: {software_type}, Version: {ver}")),
(None, None) => Some(format!("Type: {software_type}")),
};
config.description = enhanced_description;
crate::manifest::common::create_manifest(config, AssetKind::Software)
}
pub fn list_software_manifests(storage: &dyn StorageBackend) -> Result<()> {
list_manifests(storage, Some(AssetKind::Software))
}
pub fn verify_software_manifest(id: &str, storage: &dyn StorageBackend) -> Result<()> {
verify_manifest(id, storage)
}