#[cfg(feature = "clap")]
use clap::Parser;
use crate::{
constants::PACE_DOCS_URL,
constants::{PACE_CONFIG_DOCS_URL, PACE_DEV_DOCS_URL},
error::{PaceResult, UserMessage},
};
#[derive(Debug, Clone)]
#[cfg_attr(feature = "clap", derive(Parser))]
#[cfg_attr(
feature = "clap", clap(group = clap::ArgGroup::new("documentation").multiple(false)))]
pub struct DocsCommandOptions {
#[cfg_attr(feature = "clap", clap(short, long, group = "documentation"))]
dev: bool,
#[cfg_attr(feature = "clap", clap(short, long, group = "documentation"))]
config: bool,
}
impl DocsCommandOptions {
#[tracing::instrument(skip(self))]
pub fn handle_docs(&self) -> PaceResult<UserMessage> {
let user_string = if !self.dev && !self.config {
open::that(PACE_DOCS_URL)?;
format!("Opening the user documentation at {PACE_DOCS_URL}")
} else if self.config {
open::that(PACE_CONFIG_DOCS_URL)?;
format!("Opening the configuration documentation at {PACE_CONFIG_DOCS_URL}")
} else if self.dev {
open::that(PACE_DEV_DOCS_URL)?;
format!("Opening the development documentation at {PACE_DEV_DOCS_URL}")
} else {
"No documentation to open".to_string()
};
Ok(UserMessage::new(user_string))
}
}