firecloud-cli 0.2.0

Command-line interface for FireCloud P2P messaging and file sharing
//! Init command - Initialize identity and configuration

use anyhow::Result;
use firecloud_crypto::KeyPair;
use std::path::PathBuf;
use tracing::info;

pub async fn run(data_dir: PathBuf) -> Result<()> {
    info!("Initializing FireCloud...");

    // Create data directory
    std::fs::create_dir_all(&data_dir)?;

    // Generate new identity
    let keypair = KeyPair::generate();
    let public_key = keypair.public_key_bytes();

    // Save identity
    let identity_path = data_dir.join("identity.key");
    if identity_path.exists() {
        info!("⚠️  Identity already exists at {}", identity_path.display());
        info!("   Delete the file to generate a new identity.");
    } else {
        std::fs::write(&identity_path, keypair.to_bytes())?;
        info!("✅ Identity created: {}", identity_path.display());
    }

    info!("Public key: {}", hex::encode(public_key));
    info!("Data directory: {}", data_dir.display());

    // Create subdirectories
    std::fs::create_dir_all(data_dir.join("chunks"))?;
    std::fs::create_dir_all(data_dir.join("manifests"))?;

    info!("✅ Initialization complete!");

    Ok(())
}