Changelog generation requires annotating commits with a commit type,
otherwise the tests will fail. This is annoying for contributors, since
it's unusual, and I often myself forget to do it, causing a round-trip
with tests.
So, skip generating the changelog during the tests. Also, change the
`--no-git` option for `gen book` and `gen all` to `--no-changelog`, so
it's clearer what it does.
I think I'll wind up just making a YAML file that contains commit types,
for changelog generation, so it doesn't have to be done in the commit
message.
type: testing
Instead of checking if `options.quiet` is set whenever printing, disable
all printing to stderr if the `--quiet` flag is passed.
Although it isn't strictly necessary, I still don't construct a progress
bar if `options.quiet` is true, since progress bars might be a little
more expensive than just printing error messages.
A future diff might add checking to the `errln` and `outln` macros, so
that they don't print at all if the respective output stream is
inactive.
type: reform
If both author name and email are present for a commit, format as a
link. If one is absent, format as the other. If both are absent, format
as "Anonymous".
type: documentation
`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
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
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
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
Shell completion scripts can be generated for `bash`, `elvish`, `fish`,
`powershell`, and `zsh` with the `completions` subcommand:
$ imdl completions --shell zsh > imdl.zsh
The same scripts are available in the `completions` directory. Please
refer to your shell's documentation for more information on how to
install and use completion scripts.
type: added
- Trigger GitHub Actions workflow on release tags
- Make build script tolerate not being called in git directory
- Omit git hash in created by message if not built in git directory
- Test created by message format
type: distribution
- Format with nightly rustfmt
- Enable unstable options in rustfmt.toml
- Turn off git text file detection, so newlines are always unix newlines
type: reform
Colored output can be controlled on the command line with
`--use-color auto|always|never`. The default is `auto`, which enables
color if `imdl` detects that it is printing to a terminal.
Color can be disabled entirely by setting the `NO_COLOR` environment
variable.
type: added