cufflink-cli 0.10.3

CLI for the Cufflink CRUD microservice platform — deploy, init, and manage services
use std::path::Path;

pub fn init(provider: &str) -> eyre::Result<()> {
    match provider {
        "github" => generate_github_actions()?,
        other => eyre::bail!("Unknown CI provider: {}. Supported: github", other),
    }
    Ok(())
}

fn generate_github_actions() -> eyre::Result<()> {
    let dir = Path::new(".github/workflows");
    std::fs::create_dir_all(dir)?;

    let workflow = include_str!("../../templates/ci/github-actions.yml");
    std::fs::write(dir.join("cufflink.yml"), workflow)?;

    println!("Generated .github/workflows/cufflink.yml");
    println!();
    println!("Required GitHub secrets:");
    println!("  CUFFLINK_STAGING_API_KEY  — API key for staging environment");
    println!("  CUFFLINK_PROD_API_KEY     — API key for production environment");
    println!();
    println!("Pipeline: test -> deploy staging -> integration test -> deploy production");
    println!();
    println!("Ensure your Cufflink.toml has staging and production environments configured.");

    Ok(())
}