packages feed

suckless-conf-0.1.2.9: suckless-conf.cabal

cabal-version:      3.0
name:               suckless-conf
version:            0.1.2.9
synopsis:           S-expression configuration language and the bf6 script runtime
description:
    @suckless-conf@ is a small Lisp-like, s-expression configuration
    language with an embedded scripting layer. It parses configuration
    files into a simple @Syntax@ tree, offers a key-value access layer
    and bridges to Aeson, TOML, YAML and INI, and ships a tiny
    interpreter (@Data.Config.Suckless.Script@) that evaluates the same
    syntax as a script. The package also installs @bf6@, the standalone
    script runtime that the <https://github.com/NCrashed/hbs2 hbs2>
    project uses via a shebang for its tooling.

    Originally written by Dmitry Zuykov (voidlizard) for the @hbs2@
    project, this Hackage release is published from
    <https://github.com/NCrashed/suckless-conf> so downstream projects
    can depend on it without vendoring.

    The s-expression tokenizer and reader (@Data.Text.Fuzzy.Tokenize@
    and @Data.Text.Fuzzy.SExp@) are bundled as internal modules,
    derived from the MIT-licensed @fuzzy-parse@ package.
license:            BSD-3-Clause AND MIT
license-files:      LICENSE
                    LICENSE.fuzzy-parse
author:             Dmitry Zuykov
maintainer:         Anton Gushcha <ncrashed@gmail.com>
copyright:          (c) Dmitry Zuykov 2023, (c) Anton Gushcha 2026
category:           Text
build-type:         Simple
tested-with:        GHC == 9.6.6
extra-doc-files:    CHANGELOG.md
                    README.md
extra-source-files: t/key-value-test-config
homepage:           https://github.com/NCrashed/suckless-conf
bug-reports:        https://github.com/NCrashed/suckless-conf/issues

source-repository head
  type:     git
  location: https://github.com/NCrashed/suckless-conf.git

common shared-properties
  ghc-options:
        -Wall

  default-language:    Haskell2010

  default-extensions:
                       ApplicativeDo
                     , BangPatterns
                     , BlockArguments
                     , ConstraintKinds
                     , DataKinds
                     , DeriveDataTypeable
                     , DeriveGeneric
                     , DerivingStrategies
                     , DerivingVia
                     , ExtendedDefaultRules
                     , FlexibleContexts
                     , FlexibleInstances
                     , GADTs
                     , GeneralizedNewtypeDeriving
                     , ImportQualifiedPost
                     , LambdaCase
                     , MultiParamTypeClasses
                     , OverloadedStrings
                     , QuasiQuotes
                     , ScopedTypeVariables
                     , StandaloneDeriving
                     , TupleSections
                     , TypeApplications
                     , TypeFamilies


library
    import:          shared-properties

    exposed-modules:
        Data.Config.Suckless
      , Data.Config.Suckless.Syntax
      , Data.Config.Suckless.Parse
      , Data.Config.Suckless.Parse.Fuzzy
      , Data.Config.Suckless.KeyValue
      , Data.Config.Suckless.System
      , Data.Config.Suckless.Script
      , Data.Config.Suckless.Script.File
      , Data.Config.Suckless.Script.Internal
      , Data.Config.Suckless.Almost.RPC

    other-modules:
        Data.Config.Suckless.Types
      , Data.Text.Fuzzy.Tokenize
      , Data.Text.Fuzzy.SExp

    build-depends:    base                        >= 4.17     && < 5
                    , aeson                       >= 2.1      && < 2.3
                    , bytestring                  >= 0.11     && < 0.13
                    , containers                  >= 0.6      && < 0.8
                    , directory                   >= 1.3      && < 1.4
                    , filepath                    >= 1.4      && < 1.6
                    , filepattern                 >= 0.1      && < 0.2
                    , hashable                    >= 1.4      && < 1.6
                    , html-entities               >= 1.1      && < 1.2
                    , ini                         >= 0.4      && < 0.5
                    , interpolatedstring-perl6    >= 1.0      && < 1.1
                    , microlens-platform          >= 0.4      && < 0.5
                    , mtl                         >= 2.3      && < 2.4
                    , prettyprinter               >= 1.7      && < 1.8
                    , prettyprinter-ansi-terminal >= 1.1      && < 1.2
                    , random                      >= 1.2      && < 1.3
                    , random-shuffle              >= 0.0.4    && < 0.1
                    , safe                        >= 0.3      && < 0.4
                    , scientific                  >= 0.3      && < 0.4
                    , streaming                   >= 0.2      && < 0.3
                    , split                       >= 0.2      && < 0.3
                    , stm                         >= 2.5      && < 2.6
                    , text                        >= 2.0      && < 2.2
                    , time                        >= 1.12     && < 1.13
                    , transformers                >= 0.6      && < 0.7
                    , toml-parser                 >= 1.3      && < 1.4
                    , typed-process               >= 0.2      && < 0.3
                    , temporary                   >= 1.3      && < 1.4
                    , uniplate                    >= 1.6      && < 1.7
                    , unliftio                    >= 0.2      && < 0.3
                    , unordered-containers        >= 0.2      && < 0.3
                    , uuid                        >= 1.3      && < 1.4
                    , vector                      >= 0.13     && < 0.14
                    , yaml                        >= 0.11     && < 0.12

    hs-source-dirs:   lib


executable bf6
    import:           shared-properties
    main-is:          Main.hs
    ghc-options:
        -threaded
        -rtsopts
        "-with-rtsopts=-N4 -A64m -AL256m -I0"
    build-depends:
          base, unliftio, suckless-conf, safe

    hs-source-dirs:   bf6
    default-language: GHC2021


test-suite spec
  import:          shared-properties
  type: exitcode-stdio-1.0
  main-is: Spec.hs
  other-modules:
      Data.Config.Suckless.KeyValueSpec
      Data.Config.Suckless.AesonSpec

  hs-source-dirs:
      test
  ghc-options:
      -Wall
      -threaded
      -rtsopts
      -with-rtsopts=-N
  build-tool-depends:
      hspec-discover:hspec-discover
  build-depends:      base
                    , hspec
                    , aeson
                    , scientific
                    , suckless-conf
                    , containers
                    , mtl
                    , text
                    , prettyprinter
                    , interpolatedstring-perl6
                    , tasty-hunit

  default-language: Haskell2010
  default-extensions:
                      DerivingStrategies
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , OverloadedStrings
                    , ScopedTypeVariables
                    , TypeApplications