fix: resolve CI workflow path and add lint job
Some checks failed
CI / test (push) Has been cancelled
CI / lint (push) Has been cancelled

This commit is contained in:
2026-01-31 23:08:34 +00:00
parent c59dd97f19
commit c3240c43d5

134
src/cli.rs Normal file
View File

@@ -0,0 +1,134 @@
use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(name = "api-token-vault")]
#[command(author = "API Token Vault")]
#[command(version = "0.1.0")]
#[command(about = "Secure API token management with encrypted vault storage", long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
#[command(name = "init")]
#[command(about = "Initialize a new vault for a project")]
Init {
#[arg(short, long)]
master_password: Option<String>,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
},
#[command(name = "generate")]
#[command(about = "Generate a new secure API token")]
Generate {
#[arg(short, long, value_name = "NAME")]
name: String,
#[arg(short, long, value_name = "LENGTH")]
length: Option<usize>,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
},
#[command(name = "list")]
#[command(about = "List all tokens in the vault")]
List {
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
},
#[command(name = "get")]
#[command(about = "Get a specific token value")]
Get {
#[arg(short, long, value_name = "NAME")]
name: String,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
#[arg(short, long)]
raw: bool,
},
#[command(name = "delete")]
#[command(about = "Delete a token from the vault")]
Delete {
#[arg(short, long, value_name = "NAME")]
name: String,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
},
#[command(name = "rotate")]
#[command(about = "Rotate (regenerate) a specific token")]
Rotate {
#[arg(short, long, value_name = "NAME")]
name: String,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
#[arg(long)]
force: bool,
},
#[command(name = "set-rotation")]
#[command(about = "Set auto-rotation schedule for a token")]
SetRotation {
#[arg(short, long, value_name = "NAME")]
name: String,
#[arg(short, long, value_name = "DAYS")]
days: u32,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
},
#[command(name = "inject")]
#[command(about = "Inject tokens into a .env file")]
Inject {
#[arg(short, long, value_name = "FILE")]
env_file: Option<String>,
#[arg(short, long, value_name = "PREFIX")]
token_prefix: Option<String>,
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
#[arg(long)]
dry_run: bool,
},
#[command(name = "check-expired")]
#[command(about = "Check for expired tokens")]
CheckExpired {
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
},
#[command(name = "rotate-expired")]
#[command(about = "Rotate all expired tokens")]
RotateExpired {
#[arg(short, long, value_name = "PROJECT")]
project: Option<String>,
#[arg(short, long)]
master_password: Option<String>,
},
}
impl Cli {
pub fn parse() -> Self {
Parser::parse()
}
}