Manipulate and validate BagIt formatted resources from the commandline
- Haskell 100%
| app | linting and tidying | |
| doc | add brief description to README.md and copy of the RFC | |
| src | [WIP] implement oxum check | |
| test | [WIP] implement oxum check | |
| .gitignore | initial commit | |
| .hlint.yaml | tidy up | |
| CHANGELOG.md | initial commit | |
| frodo.cabal | refactor test fixtures to generate files on the fly | |
| LICENSE | initial commit | |
| package.yaml | skeleton bag validation | |
| README.md | brainstorm roadmap/todo list in README.md | |
| Setup.hs | add withFiles helper, format consistently with fourmolu | |
| stack.yaml | initial commit | |
| stack.yaml.lock | initial commit | |
frodo
Yet another tool to validate BagIt formatted digital content according to RFC8493: The BagIt File Packaging Format (V1.0).
Written in Haskell, because I canTM.
Roadmap
Validate packages
- Validate BagIt packages with SHA1, MD5, SHA256, SHA512
- Ensure
bagit.txt,data/and at least onemanifest-<algorithm>.txtare present - Ensure
bagit.txtconforms with the spec - Ensure tagmanifest checksums match if present
- Ensure all files listed in manifests are present
- Ensure payload checksums match
- Ensure
- Ensure all payload files are listed in all manifests if
Bagit-Versionis 1.0 - Quick validate based on
Payload-Oxumif present - Attempt to validate incomplete packages (by ignoring missing files)
- Complete packages using
fetch.txt - Normalize filenames before validating
- Permit other encodings than UTF-8 if specified in
bagit.txt
Create/update packages
- Create new BagIt package
- Set metadata tags in
bag-info.txt - Update package
- Warn about problems with filename normalization
Misc
- Skip files matching a pattern when validating
- Parse and display tag file entries
- Update tag file entries