///|
fn main {
  let published = @feed_gen.FeedDate::utc(2026, 6, 27, hour=12)
  let item = @feed_gen.FeedItem::new(
      "Hello from feed_gen",
      description="A small sample item generated by the command package.",
    )
    .set_url(Some("https://example.com/posts/hello-feed-gen"))
    .set_guid(Some("https://example.com/posts/hello-feed-gen"))
    .set_pub_date(Some(published))
  let config = @feed_gen.FeedConfig::new(
      "feed_gen sample",
      "A sample RSS and Atom feed generated with MoonBit.",
      "https://example.com",
      items=[item],
    )
    .set_feed_url(Some("https://example.com/feed.xml"))
    .set_author(Some(@feed_gen.Author::new("MoonBit Example")))
    .set_last_build_date(Some(published))
    .set_language(Some("en"))
  println("RSS")
  println("---")
  print_rendered(config.to_xml(indent=true))
  println("")
  println("Atom")
  println("----")
  print_rendered(config.to_atom(indent=true))
}

///|
fn print_rendered(result : Result[String, Array[@feed_gen.FeedError]]) -> Unit {
  match result {
    Ok(xml) => println(xml)
    Err(errors) => {
      println("failed to render feed:")
      for error in errors {
        println("- \{Repr(error)}")
      }
    }
  }
}