///|
/// CLI demo for mbt-email: parse and display email messages.
fn main {
  // Use a simple demo email when no arguments are provided
  let input = "From: alice@example.com\r\nTo: bob@example.com\r\nSubject: Hello\r\n\r\nHello, world!\r\n"

  // Parse the email
  let msg = @lib.parse(input)

  // Display headers
  println("=== Headers ===")
  for h in msg.headers {
    println(h.name + ": " + h.value)
  }

  // Display parsed addresses
  let from_val = @lib.get_header(msg, "From")
  match from_val {
    Some(v) => {
      let addrs = @lib.parse_address_list(v)
      if addrs.length() > 0 {
        println("")
        println("=== Parsed From Addresses ===")
        for a in addrs {
          println(
            @lib.address_to_string(a) +
            " (local=" +
            a.local_part +
            ", domain=" +
            a.domain +
            ")",
          )
        }
      }
    }
    None => ()
  }

  let to_val = @lib.get_header(msg, "To")
  match to_val {
    Some(v) => {
      let addrs = @lib.parse_address_list(v)
      if addrs.length() > 0 {
        println("")
        println("=== Parsed To Addresses ===")
        for a in addrs {
          println(@lib.address_to_string(a))
        }
      }
    }
    None => ()
  }

  // Display body
  match msg.body {
    Some(b) => {
      println("")
      println("=== Body ===")
      println(b)
    }
    None => ()
  }

  // Display MIME info if present
  match msg.mime_part {
    Some(_) => {
      println("")
      println("=== MIME Structure Detected ===")
    }
    None => ()
  }

  // Round-trip test
  println("")
  println("=== Round-trip Output ===")
  let output = @lib.to_string(msg)
  println(output)
}