структура и нужно выдавать различный дескрипшн для разных случаев, это возможно в derive Api?
pub struct Args {
#[arg(short('k'), long)]
/// SSH key location path (default is: $HOME/.ssh/id_rsa) <-- можно ли сюда как-то динамически задать строку из переменной?
pub ssh_key_path: Option<std::path::PathBuf>,
}
Док коменты это компайл тайм инфа, т.е. тебе нужно будет как минимум для каждого дескрипшина отдельный тип завести. Типа можно завернуть в какой-то макрос и погенерить для разных кейсов разные типы добавляя #[doc] аттрибут. Второй вариант. это не через дерайв апи, а через https://docs.rs/clap/latest/clap/trait.CommandFactory.html и рефлексию в клепе. Поидее для дерайв структур этот трейт реализуется. а дальше https://docs.rs/clap/latest/clap/struct.Command.html#method.mut_arg и менять дескрипшин у аргумента нужного.
даже если юзать CommandFactory, строки для клэпа генерируются один раз при запуске. Если нужно менять строку во время работы - клэп не зайдет
Нужно условно компилить для разных ос, для винды один дескрипшн, для юникс другой. Так что команд фактори подойдет
может у него от переменных окружений зависит - или от файла\нейма программы - такое можно чекнуть до генерации матчера клепа. Теоретически можно даже какую-то субкоманду чекнуть, но это сложнее.
ну если условно компилить, то тебе вообще просто атрибут можно с cfg_if задать
#[cfg_attr(windows, doc = "windows.rs")] ну или у клепа там отдельный атрибут для хелпа можно заюзать
нихуя ти жостко виступаешь. учишь юних нациков расту
Обсуждают сегодня