use crate::cli::AddArgs; use crate::commands::edits_from_mapping; use crate::error::{PortholeError, Result}; use crate::profile::{self, Profile}; use crate::ui; pub fn run(args: AddArgs) -> Result<()> { profile::require_valid_name(&args.name)?; let name = profile::normalize(&args.name); if profile::exists(&name) { return Err(PortholeError::AlreadyExists(name)); } let edits = edits_from_mapping(&args.mapping); let new_profile = Profile::new(name.clone(), &edits)?; profile::save(&new_profile)?; ui::ok(&format!("Saved profile '{name}' ({} {}).", new_profile.kind.label(), new_profile.mapping)); println!(" Run 'porthole open {name}' to start it."); Ok(()) }