Rough structure of the program

ca-store is planned to work as follows:
1) A monad (currently IO) will generate the configuration, read the command
   line, parse the config files, and create the environment the program
   should run in.
2) This environment will be passed to the main monad (currently Program)
   to do the work.

Currently everything will be directly coded with little to no abstraction.
Once ca-store is up and running, we will begin regaining purity by pulling
major features into small testable units.
This commit is contained in:
hylodon 2025-09-12 16:16:51 +01:00
parent 7f2d095d2c
commit c504f85a2d
13 changed files with 434 additions and 0 deletions

67
package.yaml Normal file
View file

@ -0,0 +1,67 @@
name: ca-store
version: 0.0.0
license: GPL-3.0-or-later
category: Text
language: GHC2021
default-extensions:
- LambdaCase
- DeriveAnyClass
- DeriveGeneric
- DerivingStrategies
- DerivingVia
- ScopedTypeVariables
- TypeApplications
ghc-options:
- -Wall
- -Wcompat
- -Werror
- -fshow-warning-groups
- -Wincomplete-record-updates
- -Wincomplete-uni-patterns
- -Wredundant-constraints
- -O2
- -optc-O3
- -optc-ffast-math
- -fexcess-precision
- -j
- -fPIC
library:
when:
- condition: false
other-modules: Paths_ca_store
source-dirs: "src"
dependencies:
- barbies
- base
- bytestring
- cryptohash
- directory
- filepath
- mtl
- optparse-applicative
- recursion-schemes
- sqlite-simple
exposed-modules:
- CAStore.Command
- CAStore.Config
- CAStore.Config.CLI
- CAStore.Config.Type
- CAStore.Program
- CAStore.Program.Storage
- CAStore.Type
- Data.List.Extra
executables:
ca-store:
main: "Main.hs"
source-dirs: "app"
dependencies:
- base
- ca-store
ghc-options:
- -threaded
- -rtsopts=ignoreAll