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
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
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
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
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
Sort specs are of the form `KEY:ORDER`, and allow sorting files in a
torrent by multiple criteria. Multiple sort specs can be passed with
`--sort-by` upon torrent creation.
type: added
The order in which files appear in torrents can now be controlled
with the `--order` flag:
imdl torrent create --input foo --order alphabetical-asc
See `--help` documentation for possible values.
type: added
- Switch to my branch of indicatif on github
- Use binary braille spinner
- Use fine-grained progress bar
- Improve template formatting
- Use SI units for bytes/s
type: changed
The --dht-node flag can be used to add DHT bootstrap nodes to new torrents.
This is the only piece of metainfo-related functionality in BEP 5, so we can mark BEP
5 as implemented.
type: added
Adds the command `imdl` torrent verify` to verify the contents of torrents.
This implementation is extremely naive. It does successfully verify torrents,
but it will produce unsatisfying results when a torrent fails verification. In
particular, it won't give any information about which pieces in a file were
corrupt.
type: added
To include only files that match a glob, pass `--glob GLOB`. To exclude
files that match a glob, pass `--glob GLOB`. Multiple globs may be
passed, with later globs taking precedence over earlier ones.
type: added
When no piece length is provided to imdl torrent create, a piece
length is selected based on the size of the input. The hueristic is
lifted directly from libtorrent.
Also adds a imdl torrent piece-length command, which prints a table
of the piece lengths chosen at different content sizes, which is useful
for understanding and debugging the piece length selection algorithm.
type: added
The `imdl torrent show` command displays information about on-disk
torrent files. The formatting of the command's output is copied from
torf, an excellent command-line torrent creator, editor, and viewer.
type: added
- Must be greater than zero
- Must be a power of two (but can override with `--allow uneven-piece-length`
- Must be greater than 16KiB (but can override with `--allow small-piece-length`
- Must be less than u32 max
type: changed
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