Tree


.builds/
.gitignorecommits | blame
Cargo.lockcommits | blame
Cargo.tomlcommits | blame
LICENSEcommits | blame
Makefilecommits | blame
README.mdcommits | blame
cog.tomlcommits | blame
config.example.tomlcommits | blame
contrib/
docs/
migrations/
sqlx-data.jsoncommits | blame
src/

README.md

# rss-email

Fetch new RSS (and Atom) feed items and send them via E-Mail.

## Installation

### Alpine Linux

A package for Alpine Linux exists in the `testing` repository:
[rss-email](https://pkgs.alpinelinux.org/package/edge/testing/x86_64/rss-email)

### Arch Linux

There are 2 packages available in the AUR:

- [rss-email](https://aur.archlinux.org/packages/rss-email)
- [rss-email-git](https://aur.archlinux.org/packages/rss-email-git)

## Compiling

Install the dependencies:

- Rust
- sqlite
- [sqlx-cli](https://github.com/launchbadge/sqlx/tree/main/sqlx-cli#install)
  (optional, only for development)
- scdoc

First specify the `DATABASE_URL` environment variable and set up the database
with `cargo-sqlx`:

```
export DATABASE_URL='sqlite://./dev.db'
cargo sqlx database setup
```

Then compile `rss-email`:

```
cargo build
```

To build the man pages, use `scdoc`:

```
scdoc < docs/rss-email.1.scd > docs/rss-email.1
scdoc < docs/rss-email.5.scd > docs/rss-email.5
```

## Usage

- Copy the `config.example.toml` to `~/.config/rss-email/config.toml` and adjust
  the values
- Create a `urls` file at `~/.config/rss-email/urls` with one RSS url per line

The database used with `rss-email` is generated automatically if it doesn't exist
yet

See the man page or `-h` for more info. You can view the man page after
generating it with `scdoc` with `man -l docs/rss-email.1`.  
A man page for the configuration exists, too, which you can view after building
with `scdoc`: `man -l doc/rss-email.5`.

## Resources

Send patches and questions to
[~witcher/rss-email-devel@lists.sr.ht](https://lists.sr.ht/~witcher/rss-email-devel).

Instructions for preparing a patch are available at
[git-send-email.io](https://git-send-email.io/).

Bugs and todo can be found at
[~witcher/rss-email](https://todo.sr.ht/~witcher/rss-email).

# Contributing

## git hooks

A `pre-commit` hook is available in `contrib/githooks/pre-commit` that catches
most errors that the CI fail on. I recommend installing it in
`.git/hooks/pre-commit` to catch errors before the CI can since building Rust in
the CI is quite expensive.

## Making changes on the database

When making changes on the database, make sure that:

- a migration is created in the `migrations` folder with `cargo sqlx migrate add
  -r $MIGRATION_DESCRIPTION`
- `sqlx-data.json` is up to date by issuing `cargo sqlx prepare`