systemprompt_cli/commands/web/
mod.rs1pub mod assets;
7pub mod content_types;
8pub mod paths;
9pub mod sitemap;
10pub mod templates;
11pub mod types;
12mod validate;
13
14use anyhow::Result;
15use clap::Subcommand;
16
17use crate::CliConfig;
18use crate::cli_settings::get_global_config;
19use crate::shared::{CommandOutput, render_result};
20
21#[derive(Debug, Subcommand)]
22pub enum WebCommands {
23 #[command(subcommand, about = "Manage content types")]
24 ContentTypes(content_types::ContentTypesCommands),
25
26 #[command(subcommand, about = "Manage templates")]
27 Templates(templates::TemplatesCommands),
28
29 #[command(subcommand, about = "List and inspect assets")]
30 Assets(assets::AssetsCommands),
31
32 #[command(subcommand, about = "Sitemap operations")]
33 Sitemap(sitemap::SitemapCommands),
34
35 #[command(about = "Validate web configuration")]
36 Validate(validate::ValidateArgs),
37}
38
39pub fn execute(command: WebCommands) -> Result<()> {
40 let config = get_global_config();
41 execute_with_config(command, &config)
42}
43
44pub fn execute_with_config(command: WebCommands, config: &CliConfig) -> Result<()> {
45 match command {
46 WebCommands::ContentTypes(cmd) => content_types::execute(cmd, config),
47 WebCommands::Templates(cmd) => templates::execute(cmd, config),
48 WebCommands::Assets(cmd) => assets::execute(cmd, config),
49 WebCommands::Sitemap(cmd) => sitemap::execute(cmd, config),
50 WebCommands::Validate(args) => {
51 let output = validate::execute(&args, config)?;
52 let valid = output.valid;
53 let error_count = output.errors.len();
54 render_result(&CommandOutput::card_value(
55 "Web Configuration Validation",
56 &output,
57 ));
58 if !valid {
59 return Err(anyhow::anyhow!(
60 "web configuration is invalid: {error_count} error(s), see report above",
61 ));
62 }
63 Ok(())
64 },
65 }
66}