import 'package:halkyon_base_server/base.dart'; import 'package:halkyon_train_server/src/generated/serverpod.dart'; import 'package:halkyon_train_server/src/map/instance_map.dart'; import 'package:halkyon_train_server/src/pruning.dart'; import 'package:halkyon_train_server/src/train_base.dart'; import 'package:serverpod_auth_idp_server/core.dart'; /// The starting point of Halkyon Train's server. Future run(List args) async { // The generated Serverpod is already connected with the generated code. final pod = Serverpod(args); // What every Halkyon server has (ADR 0014): sign-in, the account and its // deletion, the pruning, the instance's basics, set up for Train; a member // of the instance's register where the operator names one (ADR 0016). HalkyonBase.configure( pod, trainBase(accounts: AccountsMode.fromEnvironment()), ); // Token managers validate and issue authentication keys; identity // providers are the ways people can sign in (halkyon_base's // auth_config.dart). pod.initializeAuthServices( tokenManagerBuilders: tokenManagerBuilders, identityProviderBuilders: identityProviderBuilders(pod), ); // The calls between the instance's services, on the web server // (ADR 0016); Caddy never forwards them. addInstanceRoutes(pod); // The instance's own tiles' style and their check (ADR 0030, D50), which // Caddy asks before each tile; no start where they couldn't be had. checkMapKeySecret(pod); addMapRoutes(pod); await pod.start(); await schedulePruning(pod); }