tori-rs/ocaml/lib/schema/schema.ml
2025-04-19 19:09:16 -03:00

42 lines
1.1 KiB
OCaml

open Utilities.Aliases
type version = { major : int; minor : int; patch : int }
type help = { short : string; long : string }
type meta = { version : version; help : help; status : int }
type output = { main : string; log : string }
type os = Unknown | FreeBSD | Void | Alpine
type host = { os : os; name : string }
type schema = { meta : meta; output : output; host : host }
let seed : schema = {
meta = {
version = {
major = 0;
minor = 8;
patch = 0;
};
help = {
short = "<short help>";
long = "<long help>";
};
status = 0;
};
output = {
(* could be lists of strings or lists of a dedicated type with message,
log level, time and origin in code (e.g. module and function) *)
main = "";
log = "";
};
host = {
os = Unknown;
name = "Unknown Host";
};
}
let format_version (version : version) : string =
"v" ^ str_int version.major ^
"." ^ str_int version.minor ^
"." ^ str_int version.patch