use clap::Parser; mod cmd; mod auth; mod error; use std::{process::{Command, Stdio}, os::unix::process::CommandExt}; #[derive(Debug, Parser)] #[clap(name = "ci-buildkit")] #[clap(about = "Buildkit for Drone/Woodpecker", long_about = None)] pub struct Cli { #[clap(short = 'R', long = "registry", env = "PLUGIN_REGISTRY", default_value = "docker.io")] registry: String, #[clap(short = 'r', long = "repo", env = "PLUGIN_REPO")] repo: String, #[clap(short = 'u', long = "username", env = "PLUGIN_USERNAME")] username: String, #[clap(short = 'p', long = "password", hide_env = true, env = "PLUGIN_PASSWORD")] password: String, #[clap(short = 'd', long = "dockerfile", env = "PLUGIN_DOCKERFILE", default_value = ".")] dockerfile: String, #[clap(short = 'c', long = "context", env = "PLUGIN_CONTEXT", default_value = ".")] context: String, #[clap(short = 't', long = "tag", env = "PLUGIN_TAG", default_value = "latest")] tag: String, #[clap(short = 'i', long = "pull", env = "PLUGIN_PULL_IMAGE")] pull_image: bool, } fn main() -> Result<(), error::Redacted> { let args = Cli::parse(); auth::login(&args.registry, &args.username, &args.password)?; error::redact(Err(Command::new("/usr/bin/env") .args(cmd::gen_args(&args)) .stdin(Stdio::null()) .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .exec()), &args.password) }