···11# cmprss
2233**Status: Alpha.**
44-CLI is stable but likely contains bugs, and may have breaking changes.
44+CLI is relatively stable but likely contains bugs, and there may be future breaking changes.
5566A compression multi-tool for the CLI.
77Replace `tar` with something you can remember.
88[Relevant XKCD](https://xkcd.com/1168/).
991010+Currently supports:
1111+1212+- gzip
1313+- tar
1414+- xz
1515+1016## Usage
11171218The primary goal of the CLI is to make it easy and consistent to work with any compression format.
1319All of the examples will work with _any_ of the supported compression formats.
1414-Some formats will fail in certain scenarios, as not all compression formats support all types of input/output; for example `tar` is unable to support compressing from `stdin` and extracting to `stdout`, because it expects to operate on files.
2020+Though some formats will fail in certain scenarios as not all compression formats support all types of input/output.
2121+For example `tar` is unable to support compressing from `stdin` and extracting to `stdout`, because it expects to operate on files.
15221623All commands read from left to right, input is always either piped from `stdin` or the first filename(s) specified, and output is either `stdout` or the last filename/directory.
1724···2229Compress a file/directory to a `tar` archive:
23302431```bash
2525-cmprss tar filename # outputs to archive.tar
3232+cmprss tar filename # outputs to filename.tar
2633cmprss tar filename my_preferred_output_name.tar
2734```
2835···30373138```bash
3239cmprss tar dir_1/ dir_2/ combined.tar
3333-cmprss tar file_1.txt file_2.txt # outputs to archive.tar
4040+cmprss tar file_1.txt file_2.txt # outputs to file_1.txt.tar
3441```
35423643Extract a `tar` archive:
···4552Create and extract a `tar.gz` archive with pipes:
46534754```bash
4848-cmprss tar directory_name | cmprss gzip > directory.tar.gz
4949-cmprss gzip --extract directory.tar.gz | cmprss tar --extract new_directory
5555+cmprss tar directory | cmprss gzip > directory.tar.gz
5656+cmprss gzip --extract directory.tar.gz | cmprss tar -e new_directory
50575158# Or a full roundtrip in one line
5259cmprss tar directory_1/ directory_2/ | cmprss gzip | cmprss gzip -e | cmprss tar -e new_directory
5360```
54615555-## Supported formats
6262+## Contributing
56635757-- gzip
5858-- tar
5959-- xz
6060-6161-# Contributing
6262-6363-## Development Environment
6464+### Development Environment
64656566The primary supported developer environment is defined in the `flake.nix` file.
6667This is a [Nix Flake](https://nixos.wiki/wiki/Flakes) that pins versions of all packages used by `cmprss`.
···72737374If you run into any issues developing with either the Nix environment or a stable Rust environment, please open a Github issue with the details.
74757575-## Conventional Commits
7676+### Conventional Commits
76777778Commits should conform to the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) standard.
78797979-## Test Coverage
8080+### Test Coverage
80818182PRs that improve the test coverage are encouraged.
82838384Test coverage can be measured using `cargo llvm-cov report` and `cargo tarpaulin`.
84858585-## @arcuru
8686+### @arcuru
86878788I am the only developer on this right now, and I usually develop by committing directly to the `main` branch.
8889For larger features I _may_ go through a PR to run CI and to have some more easily discoverable documentation of a specific feature.
89909090-I will stop commiting directly to `main` as soon as someone else submits a non-trivial PR and then submits a request to remove this section of the README.
9191+I will stop committing directly to `main` as soon as someone else submits a non-trivial PR and then submits a request to remove this section of the README.