use authzd::{generate_entities_from_api, write_entities_file}; use clap::{Parser, Subcommand}; #[derive(Parser, Debug)] #[command( author, version, about = "Authorization CLI for managing Cedar entities and policies" )] struct Args { #[command(subcommand)] command: Commands, } #[derive(Subcommand, Debug)] enum Commands { /// Generate entities from GitLab API Generate { /// Project ID or path (e.g., gitlab-org/gitlab) #[arg(short, long)] project: String, /// Output file path #[arg(short, long, default_value = "entities.json")] output: String, /// GitLab API token #[arg(short, long, env = "GITLAB_TOKEN")] token: String, /// GitLab instance URL #[arg( short = 'H', long, env = "GITLAB_HOST", default_value = "https://gitlab.com" )] host: String, }, } #[tokio::main] async fn main() -> Result<(), Box> { let args = Args::parse(); match args.command { Commands::Generate { project, output, token, host, } => { let entities = generate_entities_from_api(token, host, project).await?; write_entities_file(&entities, &output)?; } } Ok(()) }