1use std::path::PathBuf;
2
3use clap::{Parser, Subcommand, ValueEnum};
4
5#[derive(Parser, Debug)]
7#[command(name = "serverust", version, about = "serverust framework CLI")]
8pub struct Cli {
9 #[command(subcommand)]
10 pub command: Command,
11}
12
13#[derive(Subcommand, Debug)]
14pub enum Command {
15 New {
17 name: String,
19 },
20 Generate {
22 kind: GenerateKind,
24 name: String,
26 },
27 Dev,
29 Build {
31 #[arg(long)]
33 release: bool,
34 },
35 Deploy {
37 #[command(subcommand)]
38 target: DeployTarget,
39 },
40 Info,
42 Openapi {
44 #[arg(long)]
46 out: PathBuf,
47 },
48}
49
50#[derive(Subcommand, Debug)]
51pub enum DeployTarget {
52 Lambda {
54 #[arg(long, value_enum, default_value_t = Arch::Arm64)]
56 arch: Arch,
57 },
58}
59
60#[derive(Copy, Clone, Debug, PartialEq, Eq, ValueEnum)]
61pub enum Arch {
62 #[value(name = "arm64")]
63 Arm64,
64 #[value(name = "x86_64", alias = "x86-64")]
65 X86_64,
66}
67
68#[derive(Copy, Clone, Debug, PartialEq, Eq, ValueEnum)]
69pub enum GenerateKind {
70 Resource,
71 Module,
72 Controller,
73 Service,
74 Pipe,
75 Guard,
76 Interceptor,
77 Filter,
78}