`Info::infohash` will discard fields not present in the `Info` struct,
and can thus produce an erronous infohash.
To try to prevent this function from being called in those
circumstances, rename it to `Info::infohash_lossy`, and add a comment
explaining why it is dangerous.
Embarassingly, `Info::infohash` was called in
`TorrentSummary::from_input`, and thus transitively by the torrent show
subcommand, where it is definitely not safe, since torrent show is
intended to be used with arbitrary torrents. This is now fixed.
There was also a build failure caused by a cache issue, so change the
cache keys to invalidate the caches.
type: fixed
Keybase and IRC chat never got any users, and since I never check them
and they get no traffic, it's probably best to remove them from the
readme.
type: documentation
- Add a `bench` feature that exposes a hasher benchmark.
- Make the hasher read up to the next piece end and hash everything it
reads, instead of hashing one byte at a time. This was a 4x
improvement on the benchmark. (Terrible code == easy wins!)
type: performance
Split imdl into a binary, `src/main.rs`, and a library, `src/lib.rs`.
This will enable benchmarking, fuzz testing, and anything that requires
making `imdl` functions accessible another crate.
type: reform
The `data` crate is intended to be used as the manifest serialization
and deserialization format.
This blog post describes the motivation and goals for this crate:
https://rodarmor.com/blog/data
type: added
- Combine test Metainfo values into a small number of globally available
values.
- Serialize update URLs as `URL` insted of `String`.
- Add additional `show` tests
type: reform
To make it clearer what is and isn't generated content, make gen place
all generated output in `target/gen`.
Also, try to make the readme clearer about the location of build
artifacts.
type: development
- Document the various ways files can be included and excluded from
torrents in the book.
- Make links to the book more prominent in the readme, by including them
in sections with obvious names.
type: documentation
- Rebase master branch without checking it out
- Don't check for no changes, since we're using `-d`, which will fail on
an unmerge branch.
- Make merge take an argument, so it can be used with something other
than the current branch.
type: development
I copied the gihub actions caching configuration from examples, and I'm
not sure it's optimal. In particular, it causes a cache miss whenever
any `Cargo.lock` changes. I suspect that it would be better to always
hit the cache, and let cargo figure out what it needs to rebuild.
type: development
Input can now be passed to `imdl torrent show` without a flag:
imdl torrent show foo.torrent
Passing input by flag continues to work.
type: changed
fixes:
- https://github.com/casey/intermodal/issues/375
The shell can now be passed to `imdl completions` without a flag:
imdl completions bash
Passing the shell by flag continues to work.
type: changed
fixes:
- https://github.com/casey/intermodal/issues/375
Input can now be passed to `imdl torrent verify` without a flag:
imdl torrent verify foo.torrent
Passing input by flag continues to work.
type: changed
fixes:
- https://github.com/casey/intermodal/issues/375
Allow taking the `--input` argument to `imdl torrent create` as a
positional argument, so the following now works:
imdl torrent create foo
Taking input by flag `--input` still works.
type: changed
fixes:
- https://github.com/casey/intermodal/issues/375
Don't commit man pages, since that bloats commits.
Attempt to build them in `bin/package`. This is fraught, since we need
`help2man`. Hopefully this works!
type: development
Committing the completion scripts bloats diffs, so stop committing them.
Before copying release files, generate the scripts in `bin/package`.
type: development
Add a global flag `--quiet`, which allows supressing output from
`imdl torrent create` and `imdl torrent verify`.
Since it's a global option, it should be given before the subcommand,
e.g.:
imdl --quiet torrent create --input .
type: added
fixes:
- https://github.com/casey/intermodal/issues/174
Add a '--ignore' flag that, when passed, causes `imdl torretn create` to
skip files listed in `.gitignore`, `.ignore`, `.git/info/exclude`, and
`git config --get core.excludesFile`.
Also switches from the `walkdir` crate to the `ignore` crate, which uses
`walkdir` internally, and which handles `.gitignore` and `.ignore`
files.
This changes the behavior of `-include-hidden` on MacOS to no longer
skip entries with the hidden attribute set, due to `ignore` not exposing
`walkdir`'s filter functionality.
A PR[0] is pending to add filtering to `ignore`, so hopefully this
functionality can be re-implemented soon.
[0] https://github.com/BurntSushi/ripgrep/pull/1557
type: added
fixes:
- https://github.com/casey/intermodal/issues/378
The `--terminal` flag can be used to override terminal autodetection and
force `imdl` to behave as if standard error and standard output are
connected to a terminal.
type: added
fixes:
- https://github.com/casey/intermodal/issues/398