Skip to main content

eska_presentation/arguments/project/
add.rs

1//! Shared add intent; the project component owns dependency installation and binding.
2
3pub use super::version::OutputFormat;
4use crate::localization::Localizer;
5use clap::Args;
6
7#[derive(Debug, Args)]
8pub struct AddArgs {
9    pub library: String,
10    #[arg(short = 'p', long)]
11    pub project: Vec<String>,
12    #[arg(long, value_enum, default_value_t = OutputFormat::Human)]
13    pub format: OutputFormat,
14    #[arg(short, long, action = clap::ArgAction::Help)]
15    pub help: Option<bool>,
16}
17
18#[must_use]
19pub fn localize(command: clap::Command, localizer: &Localizer) -> clap::Command {
20    command
21        .about(localizer.text("library-add-about"))
22        .help_template(format!(
23            "{{about-with-newline}}\n{}: {{usage}}\n\n{}:\n{{positionals}}\n{}:\n{{options}}",
24            localizer.text("cli-usage"),
25            localizer.text("cli-arguments"),
26            localizer.text("cli-options")
27        ))
28        .override_usage(localizer.text("library-add-usage"))
29        .mut_arg("library", |argument| {
30            argument
31                .help(localizer.text("library-add-name-help"))
32                .value_name(localizer.text("library-add-name-value"))
33        })
34        .mut_arg("project", |argument| {
35            argument
36                .help(localizer.text("version-project-help"))
37                .value_name(localizer.text("version-project-value"))
38        })
39        .mut_arg("format", |argument| {
40            argument
41                .help(localizer.text("version-format-help"))
42                .value_name(localizer.text("version-format-value"))
43        })
44        .mut_arg("help", |argument| argument.help(localizer.text("cli-help")))
45}