44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
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)
|
|
}
|