|
4 | 4 | #include <sourcemeta/core/options.h> |
5 | 5 | #include <sourcemeta/core/parallel.h> |
6 | 6 | #include <sourcemeta/core/uri.h> |
| 7 | +#include <sourcemeta/core/uritemplate.h> |
7 | 8 |
|
8 | 9 | #include <sourcemeta/one/configuration.h> |
9 | 10 | #include <sourcemeta/one/resolver.h> |
@@ -470,6 +471,48 @@ static auto index_main(const std::string_view &program, |
470 | 471 | concurrency); |
471 | 472 | } |
472 | 473 |
|
| 474 | + ///////////////////////////////////////////////////////////////////////////// |
| 475 | + // (12) Generate the pre computed routes |
| 476 | + ///////////////////////////////////////////////////////////////////////////// |
| 477 | + |
| 478 | + sourcemeta::core::URITemplateRouter router; |
| 479 | + router.add("/self/v1/api/list", sourcemeta::one::HANDLER_SELF_V1_API_LIST); |
| 480 | + router.add("/self/v1/api/list/{+path}", |
| 481 | + sourcemeta::one::HANDLER_SELF_V1_API_LIST_PATH); |
| 482 | + router.add("/self/v1/api/schemas/dependencies/{+schema}", |
| 483 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_DEPENDENCIES); |
| 484 | + router.add("/self/v1/api/schemas/health/{+schema}", |
| 485 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_HEALTH); |
| 486 | + router.add("/self/v1/api/schemas/locations/{+schema}", |
| 487 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_LOCATIONS); |
| 488 | + router.add("/self/v1/api/schemas/positions/{+schema}", |
| 489 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_POSITIONS); |
| 490 | + router.add("/self/v1/api/schemas/stats/{+schema}", |
| 491 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_STATS); |
| 492 | + router.add("/self/v1/api/schemas/metadata/{+schema}", |
| 493 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_METADATA); |
| 494 | + router.add("/self/v1/api/schemas/evaluate/{+schema}", |
| 495 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_EVALUATE); |
| 496 | + router.add("/self/v1/api/schemas/trace/{+schema}", |
| 497 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_TRACE); |
| 498 | + router.add("/self/v1/api/schemas/search", |
| 499 | + sourcemeta::one::HANDLER_SELF_V1_API_SCHEMAS_SEARCH); |
| 500 | + router.add("/self/v1/api/{+any}", |
| 501 | + sourcemeta::one::HANDLER_SELF_V1_API_DEFAULT); |
| 502 | + |
| 503 | + if (configuration.html.has_value()) { |
| 504 | + router.add("/self/static/{+path}", sourcemeta::one::HANDLER_SELF_STATIC); |
| 505 | + } |
| 506 | + |
| 507 | + const auto routes_path{output.path() / "routes.bin"}; |
| 508 | + DISPATCH<sourcemeta::one::GENERATE_URITEMPLATE_ROUTES>( |
| 509 | + routes_path, {mark_configuration_path, mark_version_path}, router, mutex, |
| 510 | + "Producing", routes_path.string(), "routes", adapter, output); |
| 511 | + |
| 512 | + ///////////////////////////////////////////////////////////////////////////// |
| 513 | + // Finish generation |
| 514 | + ///////////////////////////////////////////////////////////////////////////// |
| 515 | + |
473 | 516 | // TODO: Print the size of the output directory here |
474 | 517 |
|
475 | 518 | output.remove_unknown_files(); |
|
0 commit comments