MyNixOS website logo
Description

Very simple config file reading.

This package contains modules for runtime reading of very simple config files of the `key=value` style or as a Haskell data structure to be deserialized with Read. The modules support files with blank lines and simple single-line comments, but nothing else.

tce-conf

Synopsis

Very simple config file reading (Haskell)

Description

This package contains modules for runtime reading of very simple config files of the key=value style or as a Haskell data structure to be deserialized with Read. The modules support files with blank lines and simple single-line comments, but nothing else.

KVConf

Pros

  • Well-known key=value config file syntax
  • Adding new entries doesn't necessarily mean code changes as they are stored in a Map

Cons

  • All values are String and so may as well be untyped. Conversion to other types will be required by users of the library.
  • Simulating hierarchies requires hacky key syntax with dots or what-have-you
  • Only single-line comments supported at this time, with #
  • No support for INI sections or variable substitution

ReadConf

Pros

  • Config files are strongly typed Haskell source code. Read instancing takes care of everything!
  • Can easily support hierarchical data because Haskell data types do so

Cons

  • Config files must adhere to Haskell source syntax (may not be a con for some)
  • Changing the config file at all requires code changes to keep the types synced with each other.
  • Only single-line comments supported at this time, with --
  • No support for variable substitution

Getting source

  • Get the source with darcs: $ darcs get http://hub.darcs.net/dino/tce-conf
  • If you're just looking, browse the source

And once you have it, building the usual way:

$ stack build
$ stack test

Contact

Dino Morelli )

Metadata

Version

1.3

Executables (2)

  • bin/ReadConf-example
  • bin/KVConf-example

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows