Commit graph

11 commits

Author SHA1 Message Date
dd7a1b8970 Purify file operations
Factor out storeFile, unstoreFile, and verifyFile into a MTL
style class. This class can provide its own Id type, and never
returns FilePaths directly, which should allow a memory-only
variant for testing purposes later.

Control of storage ids now belongs to MonadFileStore. It was not
really the place of the data layer (which is currently a set of
SQL queries) to suddenly do one arbitrary file IO operation.
2025-10-11 15:30:04 +01:00
d2016d1863 Add user documentation
Add a manpage for ca-store. Additionally, modify the 'file verify'
command to behave exactly as the manpage mentions. This commit
required me to break a cycle caused by having CAStore.Type.Text
imported by CAStore.Type.
2025-09-22 15:18:36 +01:00
1849baa588 Add basic autocomplete support
ca-store now takes a --completion argument to output completions
to standard output. These are to be used for completion scripts,
in future commits.

Before the 1.0.0 release we need to either:
1) Work out how to get bash et al to accept these completions
   without mangling them
2) Get optparse-applicative to handle the command parsing entirely
   and forgo the Moore machine approach
2025-09-22 13:43:57 +01:00
6d4bc78475 Add the DAG tagging operations to ca-store 2025-09-19 01:15:47 +01:00
d3822ad7a6 Add basic tagging operations to ca-store 2025-09-18 22:24:08 +01:00
68bba7c653 Move all output to a sum type
All errors, warnings, and messages are now listed in a sum type
in 'CAStore.Type.Text'. The added structure should help with
writing better error messages. Also, if and when we get to
localising ca-store, implementation will be trivial.
2025-09-18 16:12:46 +01:00
1971897eb8 Add the file operations to ca-store 2025-09-18 14:38:18 +01:00
9d2d5b5522 Put program into a runnable state, and break the cycle that was discovered 2025-09-18 12:11:39 +01:00
c504f85a2d 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.
2025-09-12 16:16:51 +01:00
7f2d095d2c Fix README 2025-09-09 12:23:41 +01:00
4353076605 Initial commit 2025-09-08 17:45:59 +01:00