Files
bux-lang/apps/nexus/src/Main.bux
T
dimgigov eb81856565 feat: HTTP registry, app/bench harnesses, and DWARF #line maps
Ship QUALITY_PLAN sessions 31–33: fetchable package index URLs, showcase
app and micro/nexus benchmarks, and debugger-friendly C codegen.

- Registry: BUX_REGISTRY accepts http(s) URLs (curl/wget → ~/.bux/cache)
- E.2: make test-apps smoke for nexus/boko/simpledb/jwt-pitbul
- E.5: benches/micro + C/Nim/Zig twins; make bench-nexus (wrk)
- E.4: HIR locs → #line .bux; default -O0 -g; --release -O2; make test-dwarf
2026-07-19 22:46:45 +03:00

80 lines
2.4 KiB
Plaintext

module Main {
import Config::{ServerConfig, DefaultConfig};
import Http::{HttpMethod};
import Router::{Handler, Route, Router};
import Server::{RunServer};
import Std::Array::{Array, Array_New, Array_Push};
import Std::Os::{Os_GetEnv};
import Std::String::{String_Len, String_ToInt};
func BuildRouter() -> Router {
var routes: Array<Route> = Array_New<Route>(8);
Array_Push<Route>(&routes, Route {
method: HttpMethod { tag: HttpMethod_GET },
path: "/api/health",
handler: Handler { tag: Handler_ApiHealth },
});
Array_Push<Route>(&routes, Route {
method: HttpMethod { tag: HttpMethod_GET },
path: "/api/info",
handler: Handler { tag: Handler_ApiInfo },
});
Array_Push<Route>(&routes, Route {
method: HttpMethod { tag: HttpMethod_GET },
path: "/ws",
handler: Handler { tag: Handler_WsUpgrade },
});
Array_Push<Route>(&routes, Route {
method: HttpMethod { tag: HttpMethod_GET },
path: "/",
handler: Handler { tag: Handler_StaticFile },
});
return Router {
routes: routes,
notFound: Handler { tag: Handler_NotFound },
};
}
/// Apply optional env overrides for benches / ops:
/// NEXUS_PORT, NEXUS_WORKERS, NEXUS_BIND, NEXUS_PUBLIC
func ApplyEnvConfig(config: *ServerConfig) {
let portEnv: String = Os_GetEnv("NEXUS_PORT");
if String_Len(portEnv) > 0 {
let p: int64 = String_ToInt(portEnv);
if p > 0 && p < 65536 {
config.port = p as int;
}
}
let workersEnv: String = Os_GetEnv("NEXUS_WORKERS");
if String_Len(workersEnv) > 0 {
let w: int64 = String_ToInt(workersEnv);
if w > 0 && w <= 256 {
config.workerCount = w as int;
}
}
let bindEnv: String = Os_GetEnv("NEXUS_BIND");
if String_Len(bindEnv) > 0 {
config.bindAddr = bindEnv;
}
let pubEnv: String = Os_GetEnv("NEXUS_PUBLIC");
if String_Len(pubEnv) > 0 {
config.publicDir = pubEnv;
}
}
func Main() -> int {
var config: ServerConfig = DefaultConfig();
ApplyEnvConfig(&config);
let router: Router = BuildRouter();
return RunServer(config, router);
}
}