origen/commands/
plugin.rs

1use super::_prelude::*;
2use crate::framework::plugins::{add_pl_ns_helps, add_pl_ns_subcmds};
3
4pub const BASE_CMD: &'static str = "plugin";
5
6pub(crate) fn add_helps(helps: &mut CmdHelps, plugins: Option<&Plugins>) {
7    helps
8        .add_core_cmd(BASE_CMD)
9        .set_help_msg("Access added commands from individual plugins")
10        .set_as_not_extendable();
11    add_pl_ns_helps(helps, plugins);
12}
13
14pub(crate) fn add_commands<'a>(
15    app: App,
16    helps: &'a CmdHelps,
17    plugins: Option<&'a Plugins>,
18    exts: &'a Extensions,
19) -> Result<App> {
20    let mut pl_sub = Command::new(BASE_CMD)
21        .visible_alias("pl")
22        .arg_required_else_help(true);
23    pl_sub = helps.apply_core_cmd_helps(BASE_CMD, pl_sub);
24    if let Some(pls) = plugins {
25        pl_sub = add_pl_ns_subcmds(pl_sub, helps, pls, exts)?;
26    }
27    Ok(app.subcommand(pl_sub))
28}
29
30pub fn run(
31    cmd: RunInput,
32    app: &clap::Command,
33    exts: &crate::Extensions,
34    plugins: Option<&Plugins>,
35) -> Result<()> {
36    if let Some(subcmd) = cmd.subcommand() {
37        let sub = subcmd.1;
38        plugins
39            .unwrap()
40            .plugins
41            .get(subcmd.0)
42            .unwrap()
43            .dispatch(sub, app, exts, plugins)
44    } else {
45        Ok(())
46    }
47}