use std::path::PathBuf; use serde::{Deserialize, Serialize}; pub struct UpdateOptions { next_version: String, global_changelog: String, } pub type Projects = Vec; #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Project { path: Option, r#type: ProjectType, } #[derive(Clone, Debug, Deserialize, Serialize)] #[serde(tag = "type")] pub enum ProjectType { #[cfg(feature = "rust-workspace")] #[serde(alias = "rust_workspace")] RustWorkspace, #[cfg(feature = "rust-crate")] #[serde(alias = "json_edit")] RustCrate, #[cfg(feature = "toml-edit")] #[serde(alias = "toml_edit")] TomlEdit, #[cfg(feature = "yaml-edit")] #[serde(alias = "yaml_edit")] YamlEdit, #[cfg(feature = "json-edit")] #[serde(alias = "json_edit")] JsonEdit, } impl Project { pub fn new(path: Option, r#type: ProjectType) -> Self { Self { path, r#type } } pub fn execute(&self, options: &UpdateOptions) -> anyhow::Result<()> { match self.r#type { #[cfg(feature = "rust-workspace")] ProjectType::RustWorkspace => todo!(), #[cfg(feature = "rust-crate")] ProjectType::RustCrate => todo!(), #[cfg(feature = "toml-edit")] ProjectType::TomlEdit => todo!(), #[cfg(feature = "yaml-edit")] ProjectType::YamlEdit => todo!(), #[cfg(feature = "json-edit")] ProjectType::JsonEdit => todo!(), } Ok(()) } }