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::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 result = validate::execute(&args, config)?;
52 let valid = result.data.valid;
53 let error_count = result.data.errors.len();
54 render_result(&result);
55 if !valid {
56 return Err(anyhow::anyhow!(
57 "web configuration is invalid: {error_count} error(s) — see report above",
58 ));
59 }
60 Ok(())
61 },
62 }
63}