- download repository by providing URL
- download metadata only
- download metadata + packages
- sync optimization, repomd revision
- allowlist/blocklist packages
- downloading many repos, packing into ISO
- create a repository from a directory of packages
- configure metadata types, checksum types, signing, tags
- sign repository in-place
- verify checksums / signature for repository in-place
- add / remove packages for repository in-place
- configurable retain old packages
- move old packages to /old_packages/?
- error handling
- parse customization callbacks?
- location_base
- serialize + basic tests
- deserialize + basic tests
- download needs to download to tempdir and then move, for purpose of errors
- error reporting back through the CLI
- fancy allocation strategies
- compression types
- none
- gz
- bzip2
- xz
- zchunk
- zstd
- metadata features
- repomd.xml - metadata types
- filelists.xml - ghost files
- primary.xml - all fields
- updateinfo.xml - all fields, SUSE fields, differences in required fields
- weird data
- empty files
- containing non-ascii
- containing non-utf8?
- invalid dates