origen/commands/
plugin.rs1use 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}