use std::path::PathBuf;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceManifest {
pub name: String,
pub description: String,
pub plugins: Vec<PluginManifest>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct PluginManifest {
pub id: String,
pub name: String,
pub version: String,
pub description: String,
pub entrypoint: PathBuf,
pub capabilities: Vec<String>,
pub source: String,
pub trust_level: Option<crate::config::PluginTrustLevel>,
#[serde(default)]
pub dependencies: Vec<String>,
#[serde(default)]
pub author: String,
#[serde(default)]
pub license: String,
#[serde(default)]
pub homepage: String,
#[serde(default)]
pub repository: String,
}
impl PluginManifest {
pub fn new(id: String, name: String, version: String) -> Self {
Self {
id,
name,
version,
description: String::new(),
entrypoint: PathBuf::new(),
capabilities: Vec::new(),
source: String::new(),
trust_level: None,
dependencies: Vec::new(),
author: String::new(),
license: String::new(),
homepage: String::new(),
repository: String::new(),
}
}
}