~cassaundra/nonbin

ci: add .build.yml
database: apply migrations on connect
purge-expired: warn if expiration limit is unset in the config
man: linkify html
add more metadata to html renderer

add title, description, etc. so that it looks okay
normalize paths correctly now ✨

patch the tower-http dep with a version that has my path normalization fix
clean up imports
cargo upgrade
Render index as markdown to HTML or ANSI escaped text

Implements: https://todo.sr.ht/~cassaundra/nonbin/2
Improve error responses

Provide less specific error causes to the user, and log each error encountered.
Stream uploads and downloads

Rewrite routes and storage backends to support streamed download and multipart
upload. Streamed upload does not currently work with the S3 storage backend, but
I will fix that eventually.
Decouple to be more MVC-like, among other things

Too many small changes that are not worth iterating here, but a large refactor
to make it easier to share code between the backend, other subcommands, and
tests.
Add purge-expired command
db: add get_all_pastes
Put commands into a module
Support alternate config.toml locations

Look for config.toml first in the working directory, then in the
system-appropriate config directory (e.g. ~/.config/nonbin/config.toml). Add
--config so that the config file can be chosen manually instead.

Rename config.toml to config.toml.example so that users don't get confused when
their ~/.config/nonbin/config.toml isn't read.
Introduce arguments, making serve a subcommand
Move server implementation into modules
Revert "Normalize paths"

This reverts commit 626ded57a5164e102bea1e9daea61c63fd3131ce.

It turns out that the normalize path middleware incorrectly (?) normalizes "/"
to "", breaking the index page routing. Anyway, the normalization wasn't being
applied correctly here anyway so it doesn't much matter for now.
cargo update
Next