Modifying the clap's parsing of the struct name

Hi,

I am trying to create a small command line interface for an API our lab works with a lot. I am using clap for parsing my command line arguments and its really helpful. However, I am noticing a behavior that I'd like to modify.

I have two arguments that are enums as they should only take certain specified inputs. When clap outputs the options it separates successive capital letters by a hyphen. I'd like to turn this off for certain ones.

Here's an example:

With the enum

#[allow(clippy::upper_case_acronyms)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
pub enum ItemType {
    All,
    UniProtID,
    ProteinGeneName,
    PMID,
}

I get the following output:

error: "ALL" isn't a valid value for '--item-type <ITEM_TYPE>'
	[possible values: all, uni-prot-id, protein-gene-name, pmid]

I'd like that split to not happen for UniProtId (i.e get uniprot-id rather than uni-prot-id). I could change capitalization in my enum but I would prefer to keep the source code directly mappable to the real world entities.

Which trait needs to be implemented to modify this behavior?

Would #[clap(name = "uniprot-id")] on the UniProtID variant work? (Documented here.)

2 Likes

Thank you. That worked.

To people looking at it later (including myself), the attributes can be set at any time.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.