Add the `Invariant` trait, which provides `Invariant::invariant` and
`Invariant::invariant_unwrap` methods, and use them instead of unwrap
and expect.
I think these methods are a bit clearer than `unwrap` and `expect`,
since they more clearly document intent, i.e. that the thing passed to
`invariant` should be a description of an invariant that should always
be true, and should provide better error messages.
Replace uses of `unwrap` and `expect` with `invariant`.
type: reform
fixes:
- https://github.com/casey/intermodal/issues/167
Since getting the system time is fallible, do it early when creating a
torrent, so as to avoid potentially wasting time searching and hashing.
type: reform
fixes:
- https://github.com/casey/intermodal/issues/207
- Mention various chat channels
- Add `intermodal-bin` package to package table
- Document `bin/gen`
- Add contributing section
- Link to book
type: documentation
This enables `--select-only 1,2,3` which gets appended to the magnet
link as `&so=1,2,3`.
It's a partial implementation because we're missing support for file
ranges ie `--select-only 4-6`
type: added
fixes:
- https://github.com/casey/intermodal/issues/245
The current publish recipe has a race condition, where pushing a release
tag will trigger a new GitHub Actions, build, causing the push to master
to fail, because the status checks are still in progress.
Finish with `just merge` instead of `just done`, which will wait on the
status checks to finish again.
type: development
pr: https://github.com/casey/intermodal/pull/368
The clap-generated zsh completion scripts use unescaped double-quoted
strings for the subocommand description text, which causes backtick
characters to be evaluated.
Remove backticks from the subcommand descriptions, to un-break the zsh
completion scripts.
type: fixed
pr: https://github.com/casey/intermodal/pull/365
The command `--help` text output in the book was very wide, which caused
it to be clipped and require scrolling horizontally to see it all.
This diff renders the text at 80 columns, which makes it visible without
scrolling at reasonable screen sizes.
To do this, `env::run` now checks for the presence of the environment
variable `IMDL_TERM_WIDTH`, which, if set to a positive integer, will be
passed to `Clap::set_term_width`.
`bin/man` now uses this to render the help text at 80 characters.
type: documentation
pr: https://github.com/casey/intermodal/pull/364
Use the `wide_bar` indicatif format specifier to truncate the progress
bar when the terminal is narrow. This prevents the progress bar from
printing mulitple times when the terminal is narrow
type: fixed
pr: https://github.com/casey/intermodal/pull/353
- Don't fail now that archive contains directory
- Change default install location to `~/bin`
- Suggestion installing in ~/bin
- Add instructions to create `~/bin`, install there, and add `~/bin` to
the PATH variable.
type: distribution
pr: https://github.com/casey/intermodal/pull/352
Generates man pages and book entries for all subcommands, and keeps the
commands index in the book up to date.
There is much cursed roff munging in this diff.
type: documentation
This change Makes the changelog generator ignore fixup commits.
`git commit --fixup` can be used to mark that a commit should be
squashed before merging, which can be done automatically with
`git rebase --autosquash`. Fixup commits have a summary that starts with
`fixup!`
type: development
If a user passes `--input foo`, print "Searching `foo` for files…",
instead of the resolved, absolute path to `foo`, since the former is
what the user typed in.
This was way harder, and had way more edge cases, than I thought it would
be!
One takaway, lexical path cleaning is excellent.
type: changed
fixes:
- https://github.com/casey/intermodal/issues/252
- https://github.com/casey/intermodal/issues/332
When an empty path is passed to `Env::resolve`, the result is the
current working directory. This is bad, so forbid the user to pass in
empty paths.
type: fixed
Torrents may now be created from standard input by passing `--input -`.
Since `--name` and `--output` cannot be deduced, they are required when
`--input -`.
type: added
Document signature policy in readme. This will require changing the
workflow for merging commits, to avoid polluting the commit history with
signatures by a GitHub-controlled key.
type: documentation
Uses a crate in `bin/demo` to output a demo script of commands, with a
per-character and per-line delay, and a dummy prompt. Capture output
and render to a gif.
type: documentation