///|
fn content_manifest_json() -> String {
  let manifest =
    #|{
    #|  "name": "content-pipeline-kit",
    #|  "partials": {
    #|    "feature_cards": "{{#features}}- {{title}}: {{summary}}\n{{/features}}",
    #|    "footer": "Generated by Moon Mustache content pipeline.\n"
    #|  },
    #|  "profiles": {
    #|    "community": {
    #|      "context": {
    #|        "audience_label": "Community"
    #|      }
    #|    },
    #|    "partners": {
    #|      "context": {
    #|        "audience_label": "Partner"
    #|      },
    #|      "partials": {
    #|        "footer": "Generated for partner-facing content workflows.\n"
    #|      }
    #|    }
    #|  },
    #|  "files": [
    #|    {
    #|      "path": "content/{{release.slug}}/overview.md",
    #|      "template": "# {{release.name}}\n\nAudience: {{audience_label}}\n\n## Features\n{{> feature_cards}}{{> footer}}"
    #|    },
    #|    {
    #|      "path": "content/{{release.slug}}/announcement.txt",
    #|      "template": "Subject: {{release.name}} is live\n\nHello {{audience_label}} readers,\n\n{{> feature_cards}}{{> footer}}"
    #|    },
    #|    {
    #|      "path": "content/{{release.slug}}/card.html",
    #|      "template": "

{{release.name}}

    {{#features}}
  • {{title}}: {{summary}}
  • {{/features}}
" #| } #| ] #|} manifest } ///| fn content_context() -> @src.Value { @src.Value::object({ "release": @src.Value::object({ "name": @src.Value::string("Moon Mustache 0.1.0"), "slug": @src.Value::string("moon-mustache-0-1-0"), }), "features": @src.Value::array([ @src.Value::object({ "title": @src.Value::string("Spec parity"), "summary": @src.Value::string("136 official fixture cases passing"), }), @src.Value::object({ "title": @src.Value::string("Bundle planning"), "summary": @src.Value::string( "multi-file validation and plan reporting", ), }), @src.Value::object({ "title": @src.Value::string("Playground"), "summary": @src.Value::string("browser-facing MoonBit-powered demo"), }), ]), }) } ///| fn print_file(path : String, output : String) -> Unit { println("== " + path + " ==") println(output) println("") } ///| fn main { let manifest = @src.parse_bundle_manifest_json(content_manifest_json()).unwrap() let validation = @src.validate_bundle_manifest(manifest) let prepared = @src.prepare_bundle_manifest_profile( manifest, content_context(), profile_name="partners", ).unwrap() let result = @src.render_prepared_bundle_manifest_checked( prepared, @src.RenderOptions::strict(), ) let plan = @src.build_bundle_plan("content-pipeline-kit", result, validation) println( @src.format_validation_report_markdown("content-pipeline-kit", validation), ) println("") println(@src.format_bundle_plan_markdown(plan)) println("") for file in result.files { print_file(file.path, file.output) } }