create-lamdera-app-rs 0.1.8

A CLI tool to scaffold Lamdera applications with Tailwind CSS, authentication, i18n, and testing
Documentation
use crate::error::Result;
use colored::*;
use std::process::Command;

pub fn create_repository(project_name: &str, is_public: bool) -> Result<String> {
    let visibility = if is_public { "public" } else { "private" };

    println!(
        "{}",
        format!("Creating {} GitHub repository...", visibility).yellow()
    );

    let output = Command::new("gh")
        .args([
            "repo",
            "create",
            project_name,
            &format!("--{}", visibility),
            "--source=.",
            "--remote=origin",
        ])
        .output()?;

    if !output.status.success() {
        let error = String::from_utf8_lossy(&output.stderr);
        return Err(anyhow::anyhow!("Failed to create GitHub repository: {}", error));
    }

    println!("{}", "✓ Created GitHub repository".green());

    // Get the repository URL
    let url = String::from_utf8_lossy(&output.stdout);
    Ok(url.trim().to_string())
}

pub fn is_gh_cli_installed() -> bool {
    Command::new("gh")
        .arg("--version")
        .output()
        .map(|output| output.status.success())
        .unwrap_or(false)
}

pub fn is_gh_cli_authenticated() -> bool {
    Command::new("gh")
        .args(["auth", "status"])
        .output()
        .map(|output| output.status.success())
        .unwrap_or(false)
}