pace_core/commands/
docs.rs1#[cfg(feature = "clap")]
2use clap::Parser;
3
4use crate::{
5 constants::PACE_DOCS_URL,
6 constants::{PACE_CONFIG_DOCS_URL, PACE_DEV_DOCS_URL},
7 error::{PaceResult, UserMessage},
8};
9
10#[derive(Debug, Clone)]
12#[cfg_attr(feature = "clap", derive(Parser))]
13#[cfg_attr(
14 feature = "clap", clap(group = clap::ArgGroup::new("documentation").multiple(false)))]
15pub struct DocsCommandOptions {
16 #[cfg_attr(feature = "clap", clap(short, long, group = "documentation"))]
18 dev: bool,
19
20 #[cfg_attr(feature = "clap", clap(short, long, group = "documentation"))]
22 config: bool,
23}
24
25impl DocsCommandOptions {
26 #[tracing::instrument(skip(self))]
37 pub fn handle_docs(&self) -> PaceResult<UserMessage> {
38 let user_string = if !self.dev && !self.config {
40 open::that(PACE_DOCS_URL)?;
41
42 format!("Opening the user documentation at {PACE_DOCS_URL}")
43 } else if self.config {
44 open::that(PACE_CONFIG_DOCS_URL)?;
46
47 format!("Opening the configuration documentation at {PACE_CONFIG_DOCS_URL}")
48 } else if self.dev {
49 open::that(PACE_DEV_DOCS_URL)?;
51
52 format!("Opening the development documentation at {PACE_DEV_DOCS_URL}")
53 } else {
54 "No documentation to open".to_string()
55 };
56
57 Ok(UserMessage::new(user_string))
58 }
59}