# Nom

## Usage

Separate by things that act on `feed` and things that act on `entry`.

   Ex: `nom feed show` vs `nom entry show`

1. Add feed (with name, url, category) to feed list.
2. Remove feed from feed list.
3. List (unread) entries from feed list. 

## Feed Actions

### Show

`nom feed show [filters]`

### Add 

`nom feed add [--category <category>[, --category <category>]]  <feed-url>`

### Remove

`nom feed remove <url>`

### Fetch

`nom feed update [url|filters]`

## Entry Actions

### Show

`nom entry show [filters]`

aliased as `nom show [filters]`

### Mark Viewed 

`nom entry mark viewed`

### Add (really cool future idea)

`nom entry add [--category <category>[...]] <url>`

You could easily turn this into a read-later app by adding a URL 
and inferring metadata from the HTML \<meta\> tags.

Since each feed goes in its own file, all these could go into a 
`read-later.xml` or similar. You probably want it to go in `.local/share` 
rather than `.cache`.

### Fetch / Read (cool future idea)

Needs to pull CSS as well as HTML. Or, define your own styling...

## Filters

**Remember** Feed filters are not necessarily the same as entry filters.

**Remember**, you can always `grep` as a way of filtering rows. 
You can always `cut` as a way of filtering columns.

Hmm... It would be cool to batch update using filters. For example,

``` bash
nom entry show [filters] | xargs nom entry mark viewed
```

### Viewed / Not Viewed / Both

Could do the following:

* `--viewed=exclude` default, hides entries that have already been read.
* `--viewed=include` shows entries that have already been read.
* `--viewed=only`    shows only entries that have been read,           
                   excluding unread entries.

### Entry Metadata

* Title
* Category
* Feed
* Summary
* Date (Published | Updated)

### Feed metadata

* Name
* URL
* Category

## File locations

Aim to use freedesktop.org data dir specs. I could envision having different 
"profiles" that each use a different feed list.

### Feed Definitions

Data: Name, URL, Category (Optional)
Location: `~/.config/nom/profiles/default`

### Entry Status (Viewed | Not Viewed)

Data: Key for each feed entry, Read/unread boolean.
Location: `~/.local/share/nom/view-status`

### Cache of each Feed

Data: The Atom | RSS feed itself.
Location: `~/.cache/nom/feeds/*.xml`

The name of `*.xml` should probably relate to the canonical name of the feed.