Commit Graph

25 Commits

Author SHA1 Message Date
Casey Rodarmor
9158c230df
Skip hidden files, symlinks, and junk in created torrents
By default, skip the following when creating a torrent:

- Junk files, like `Thumbs.db`
- Files and directories that begin with a `.`
- Files and directories that have the OS or Windows hidden attribute set
- Symlinks

These can be overridden with, respectively:
- `--include-junk`
- `--include-hidden`
- `--include-hidden`
- `--follow-symlinks`

type: changed
2020-04-07 19:01:04 -07:00
Casey Rodarmor
3739a92857
Support creating multi-file torrents
type: added
2020-04-07 19:01:04 -07:00
Casey Rodarmor
551617de4f
Don't overwrite destination torrent without --force
type: changed
2020-04-07 19:01:04 -07:00
Casey Rodarmor
df3326510c
Write torrent to stdout if - is passed to --output
type: added
2020-04-07 19:01:03 -07:00
Casey Rodarmor
5a1de1acd2
Select piece length when none is provided
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
2020-04-07 19:01:03 -07:00
Casey Rodarmor
35a0e8f9b7
Improve torrent display formatting
- Use colors
- Use cut-friendly formatting when not writing to terminal
- Show sizes as number of bytes when not writing to terminal

type: changed
2020-04-07 19:01:03 -07:00
Casey Rodarmor
5c5dac1fe5
Add source to generated torrent with --source
Support adding a `source` key under the `info` dictionary. The `source`
key is commonly used to create distinct torrents for different trackers.

type: added
2020-04-07 19:01:03 -07:00
Casey Rodarmor
b9ca02fbaa
Show information about torrents after creation
type: changed
2020-04-07 19:01:03 -07:00
Casey Rodarmor
99a069a021
Add imdl torrent show
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
2020-04-07 19:01:02 -07:00
Casey Rodarmor
6df45e0244
Restrict piece length
- 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
2020-04-07 19:01:02 -07:00
Casey Rodarmor
635692fdfa
Accept --piece-length arguments with SI units
Valid units include MiB, KiB, and GiB.

type: changed
2020-04-07 19:01:02 -07:00
Casey Rodarmor
6461a00ba3
Test that wss:// trackers are accepted
type: testing
2020-04-07 19:01:00 -07:00
Casey Rodarmor
9dd8a56298
Release v0.0.1
- Add changelog
- Update publish-check recipe to match github actions
- Add publish recipe
- Update dependencies
- Add minimimal-deps compatibility check

type: release
2020-04-07 19:00:59 -07:00
Casey Rodarmor
e8ab0e1c4f
Open torrents with imdl create --open ...
Invokes an OS-dependent opener to open the `.torrent` file after
creation.

type: added
2020-04-07 19:00:59 -07:00
Casey Rodarmor
a8446c82db
Test UDP tracker URLs parse
Also change UDP tracker protocol extensions from unsupported to N/A.

type: testing
2020-04-07 19:00:59 -07:00
Casey Rodarmor
70e0091ec0
Add help messages to CLI flags and options
type: documentation
2020-04-07 19:00:58 -07:00
Casey Rodarmor
b83d8d7ef5
[torrent stats] Pretty print torrents if --print is passed
type: added
2020-04-07 19:00:58 -07:00
Casey Rodarmor
87e9b982b6
Sort Create opt struct fields
Sort fields of torrent::Create.

type: reform
2020-04-07 19:00:51 -07:00
Casey Rodarmor
1749fce2b2
Slighly improve readability of Hasher::hash_root
type: reform
2020-04-07 19:00:48 -07:00
Casey Rodarmor
d1f8f24d8e
Add colored output
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
2020-04-07 19:00:47 -07:00
Casey Rodarmor
b334fa49b2
Redirect stdin and stdout and capture for tests
type: testing
2020-04-07 19:00:47 -07:00
Casey Rodarmor
fd06943726
Rename: Environment -> Env
type: reform
2020-04-07 19:00:44 -07:00
Casey Rodarmor
7420c91553
Rename bencode::Error::ExtraData -> TrailingData
type: reform
2020-04-07 19:00:40 -07:00
Casey Rodarmor
9f83661374
Configure clippy and lint on push
Enable as many lints as I can stand. I'll definitely add more exceptions as
`clippy::pedantic` and `clippy::restriction` wear me down.

type: testing
2020-04-07 18:55:45 -07:00
Casey Rodarmor
98335f435d
Initial commit
type: added
2020-04-07 18:55:30 -07:00