uuidtools/
args.rs

1use clap::Parser;
2use uuid::Uuid;
3
4#[derive(Debug, Parser, PartialEq, Eq)]
5#[command(arg_required_else_help = true, about, version)]
6pub struct Args {
7    #[clap(subcommand)]
8    pub subcommand: Option<Subcommand>,
9}
10
11#[derive(Debug, Parser, PartialEq, Eq)]
12pub enum Subcommand {
13    #[clap(subcommand)]
14    Generate(GenerateSubcommand),
15
16    Validate {
17        #[clap(long)]
18        uuid: String,
19    },
20}
21
22#[derive(Debug, Parser, PartialEq, Eq)]
23pub enum GenerateSubcommand {
24    Version {
25        #[clap(subcommand)]
26        version: GenerateSubcommandVersion,
27    },
28}
29
30#[derive(Debug, Parser, PartialEq, Eq)]
31pub enum GenerateSubcommandVersion {
32    #[clap(about = "Generate a UUID using a timestamp and monotonic counter")]
33    V1 {
34        #[clap(long)]
35        seconds: u64,
36        #[clap(long)]
37        nanos: u32,
38        #[clap(long, help = "Use provided seed, if not present use random one")]
39        seed: Option<u16>,
40    },
41    V2,
42    #[clap(about = "Generate a UUID using a md5 hash")]
43    V3 {
44        #[clap(long)]
45        namespace: Uuid,
46        #[clap(long)]
47        name: String,
48    },
49    #[clap(about = "Generate random UUID")]
50    V4,
51    #[clap(about = "Generate a UUID using a sha1 hash")]
52    V5 {
53        #[clap(long)]
54        namespace: Uuid,
55        #[clap(long)]
56        name: String,
57    },
58    #[clap(about = "Generate a UUID using provided data")]
59    V8 {
60        #[clap(long)]
61        data: String,
62    },
63}