znap-cli 0.1.37

Manage your znap workspaces
Documentation
use heck::ToSnekCase;

use crate::utils::Collection;

pub fn template(collection: &Collection) -> String {
    format!(
        r#"
use tokio::net::TcpListener;
use colored::Colorize;
use console::Emoji;
use std::env;
use {}::{{collection_router, display_collection_routes}};

#[tokio::main]
async fn main() -> Result<(), axum::Error> {{
    let address = env::var("COLLECTION_ADDRESS").unwrap_or("{}".to_string());
    let port = env::var("COLLECTION_PORT").unwrap_or("{}".to_string());
    let protocol = env::var("COLLECTION_PROTOCOL").unwrap_or("{}".to_string());

    println!("");
    println!(
        "{{}} Znap Server {{}} \n\n Service is running at {{}}",
        Emoji("✨", ""),
        Emoji("✨", ""),
        format!("{{protocol}}://{{address}}:{{port}}").cyan()
    );

    display_collection_routes();

    println!(
        "\n{{}} {{}}\n",
        Emoji("💡", ""),
        "Press Ctrl+C to stop the server".bright_red().italic(), 
    );
    
    let listener = TcpListener::bind(format!("{{address}}:{{port}}")).await.unwrap();
    axum::serve(listener, collection_router().into_make_service())
        .await
        .unwrap();

    Ok(())
}}
"#,
        &collection.name.to_snek_case(),
        &collection.address,
        &collection.port,
        &collection.protocol,
    )
}