Files
logos-delivery/tools/confutils/envvar_serialization.nim
T

50 lines
1.3 KiB
Nim
Raw Normal View History

{.push raises: [].}
2024-03-16 00:08:47 +01:00
import stew/shims/macros, serialization
import ./envvar_serialization/reader, ./envvar_serialization/writer
2024-03-16 00:08:47 +01:00
export serialization, reader, writer
serializationFormat Envvar
Envvar.setReader EnvvarReader
Envvar.setWriter EnvvarWriter, PreferredOutput = void
template supports*(_: type Envvar, T: type): bool =
# The Envvar format should support every type
true
2024-03-16 00:08:47 +01:00
template decode*(
_: type Envvar, prefix: string, RecordType: distinct type, params: varargs[untyped]
): auto =
mixin init, ReaderType
{.noSideEffect.}:
var reader = unpackArgs(init, [EnvvarReader, prefix, params])
reader.readValue(RecordType)
2024-03-16 00:08:47 +01:00
template encode*(
_: type Envvar, prefix: string, value: auto, params: varargs[untyped]
) =
mixin init, WriterType, writeValue
{.noSideEffect.}:
var writer = unpackArgs(init, [EnvvarWriter, prefix, params])
writeValue writer, value
2024-03-16 00:08:47 +01:00
template loadFile*(
_: type Envvar, prefix: string, RecordType: distinct type, params: varargs[untyped]
): auto =
mixin init, ReaderType, readValue
var reader = unpackArgs(init, [EnvvarReader, prefix, params])
reader.readValue(RecordType)
2024-03-16 00:08:47 +01:00
template saveFile*(
_: type Envvar, prefix: string, value: auto, params: varargs[untyped]
) =
mixin init, WriterType, writeValue
var writer = unpackArgs(init, [EnvvarWriter, prefix, params])
writer.writeValue(value)