use clap::{Parser, ValueEnum};
use dotenvy::dotenv;
pub mod auth;
pub mod gql;
pub mod login;
pub mod publish;
pub fn get_env_var(key: &str) -> String {
dotenv().ok();
std::env::var(key).unwrap_or_else(|_| panic!("{} not found", key))
}
#[derive(Parser, PartialEq, Clone, Debug)]
pub struct LoginCommand {
#[arg(long = "email", short = 'e', requires = "password", conflicts_with = "pat")]
pub email: Option<String>,
#[arg(long = "password", short = 'p', requires = "email", conflicts_with = "pat")]
pub password: Option<String>,
#[arg(long = "pat", conflicts_with_all = &["email", "password"])]
pub pat: Option<String>,
}
#[derive(Parser, PartialEq, Clone, Debug)]
pub struct PublishRunbook {
#[arg(long = "manifest-file-path", short = 'm', default_value = "./txtx.yml")]
pub manifest_path: String,
pub runbook: String,
#[arg(long = "env")]
pub environment: Option<String>,
#[arg(long = "input")]
pub inputs: Vec<String>,
#[arg(long = "destination", short = 'd')]
pub destination: Option<String>,
#[arg(long = "read-permissions", default_value = "private")]
pub read_permissions: Option<PublishRunbookReadPermissions>,
#[arg(long = "update-permissions", default_value = "private")]
pub update_permissions: Option<PublishRunbookWritePermissions>,
#[arg(long = "delete-permissions", default_value = "private")]
pub delete_permissions: Option<PublishRunbookWritePermissions>,
}
#[derive(ValueEnum, PartialEq, Clone, Debug)]
#[clap(rename_all = "snake-case")]
pub enum PublishRunbookReadPermissions {
Public,
Private,
Org,
}
#[derive(ValueEnum, PartialEq, Clone, Debug)]
#[clap(rename_all = "snake-case")]
pub enum PublishRunbookWritePermissions {
Private,
Org,
}