open Forester_core open Forester_frontend open Forester_compiler module M = URI.Map module T = Types module EP = Eio.Path let () = Logs.set_level (Some App) let () = Logs.set_reporter (Log.reporter ()); let@ env = Eio_main.run in Eio.Switch.run @@ fun sw -> let config = Config.make ~url:Config.docs_url ~trees:["trees"] ~assets:["assets"] () in let forest, _ = Forester.build_forest ~sw ~env ~mode:Publish ~config ~dev:false () in let syndication = let blob_uri = URI.append_path_component Config.docs_url "index" in let host = Option.get @@ URI.host Config.docs_url in let query = Datalog_expr. { var = "X"; positives = [ { rel = Builtin_relation.in_host; args = [Var "X"; Const (T.Content_vertex (T.Content [T.Text host]))]; }; ]; negatives = []; } in Types.{blob_uri; query} in let _, json_content = List.hd @@ Forester.outputs_for_json_blob_syndication ~forest syndication in let json_path = EP.(Eio.Stdenv.cwd env / "output" / "docs.json") in Eio_util.ensure_context_of_path ~perm:0o755 json_path; EP.save ~create:(`Or_truncate 0o644) json_path json_content