Skip to main content

eska_presentation/arguments/project/
init.rs

1//! Shared project command options and help; metadata and transactions stay with their owner.
2
3use super::artifact::{self, PlatformArgs};
4use crate::localization::Localizer;
5use clap::{ArgAction, Args};
6use std::path::PathBuf;
7
8#[derive(Debug, Args)]
9pub struct InitArgs {
10    #[arg(default_value = ".")]
11    pub path: PathBuf,
12    #[arg(long)]
13    pub application: Option<String>,
14    #[arg(long)]
15    pub source: Option<PathBuf>,
16    #[arg(long)]
17    pub name: Option<String>,
18    #[arg(long)]
19    pub workflow: Option<String>,
20    #[arg(long)]
21    pub no_vcs: bool,
22    #[command(flatten)]
23    pub platform: PlatformArgs,
24    #[arg(short, long, action = ArgAction::Help)]
25    pub help: Option<bool>,
26}
27
28/// Localize project options without loading a project session.
29pub fn localize(command: clap::Command, localizer: &Localizer) -> clap::Command {
30    artifact::localize(command, localizer)
31        .mut_arg("application", |arg| {
32            arg.help(localizer.text("workspace-onboarding-application-help"))
33        })
34        .mut_arg("platform_version", |arg| {
35            arg.help(localizer.text("init-platform-version-help"))
36        })
37        .about(localizer.text("init-about"))
38        .override_usage(localizer.text("init-usage"))
39        .help_template(format!(
40            "{{about-with-newline}}\n{}: {{usage}}\n\n{}:\n{{positionals}}\n\n{}:\n{{options}}",
41            localizer.text("cli-usage"),
42            localizer.text("cli-arguments"),
43            localizer.text("cli-options")
44        ))
45        .mut_arg("path", |arg| {
46            arg.help(localizer.text("init-path-help"))
47                .value_name(localizer.text("cli-project-dir-value"))
48                .hide_default_value(true)
49        })
50        .mut_arg("source", |arg| {
51            arg.help(localizer.text("init-source-help"))
52                .value_name(localizer.text("cli-project-dir-value"))
53        })
54        .mut_arg("name", |arg| {
55            arg.help(localizer.text("init-name-help"))
56                .value_name(localizer.text("init-name-value"))
57        })
58        .mut_arg("workflow", |arg| {
59            arg.help(localizer.text("new-workflow-help"))
60                .value_name(localizer.text("new-workflow-value"))
61        })
62        .mut_arg("no_vcs", |arg| arg.help(localizer.text("new-no-vcs-help")))
63        .mut_arg("help", |arg| arg.help(localizer.text("cli-help")))
64}