Rework `FinalError::display` into a `FinalError::Display` impl
[ouch.git] / README.md
blobee96167e5598d20941ea54dec458dc4e401df22e
1 # Ouch!
3 [![crates.io](https://img.shields.io/crates/v/ouch.svg?style=for-the-badge&logo=rust)](https://crates.io/crates/ouch) [![license](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge&logo=Open-Source-Initiative&logoColor=ffffff)](https://github.com/ouch-org/ouch/blob/main/LICENSE)
5 <!-- ![ouch_image](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR5ilNDTFZZ-Vy_ctm2YyAe8Yk0UT7lB2hIhg&usqp=CAU)  -->
7 `ouch` stands for **Obvious Unified Compression Helper**, and works on _Linux_, _Mac OS_ and _Windows_.
9 It is a CLI tool to compress and decompress files that aims on ease of usage.
11 <!-- TODO -->
12 <!--     - [Listing files](#Listing-the-elements-of-an-archive) -->
14 - [Usage](#usage)
15     - [Decompressing](#decompressing)
16     - [Compressing](#compressing)
17 - [Installation](#installation)
18     - [Latest binary](#downloading-the-latest-binary)
19     - [Compiling from source](#installing-from-source-code)
20 - [Supported Formats](#supported-formats)
21 - [Contributing](#contributing)
23 ## Usage
25 ### Decompressing
27 Run `ouch` and pass compressed files as arguments.
29 ```sh
30 # Decompress 'a.zip'
31 ouch a.zip
33 # Decompress multiple files
34 ouch a.zip b.tar.gz
35 ```
37 You can redirect the decompression results to a folder with the `-o/--output` flag.
39 ```sh
40 # Create 'pictures' folder and decompress inside of it
41 ouch a.zip -o pictures
42 ```
44 ### Compressing
46 Use the `compress` subcommand.
48 Accepts multiple files and folders, the **last** argument shall be the **output file**.
50 ```sh
51 # Compress four files into 'archive.zip'
52 ouch compress 1 2 3 4 archive.zip
54 # Compress folder and video into 'videos.tar.gz'
55 ouch compress videos/ meme.mp4 videos.tar.gz
57 # Compress one file using 4 compression formats
58 ouch compress file.txt compressed.gz.xz.bz.zst
60 # Compress all the files in current folder
61 ouch compress * files.zip
62 ```
64 `ouch` checks for the extensions of the **output file** to decide which formats should be used.
66 <!-- ### Listing the elements of an archive
68 * **Upcoming feature**
70 ```
71 # Shows the files and folders contained in videos.tar.xz
72 ouch list videos.tar.xz
73 ``` -->
75 ## Installation
77 ### Downloading the latest binary
79 WARNING: SCRIPT TEMPORARILY DISABLED.
81 This script downloads the latest binary and copies it to `/usr/bin`.
83 ```sh
84 curl -s https://raw.githubusercontent.com/vrmiguel/ouch/master/install.sh | sh
85 ```
87 ### Installing from source code
89 For compiling, check [the wiki guide](https://github.com/ouch-org/ouch/wiki/Compiling-and-installing-from-source-code).
92 ## Supported formats
94 |               | .tar | .zip | .bz, .bz2 | .gz | .xz, .lz, .lzma | .7z |
95 |:-------------:|:----:|:----:|:---------:| --- |:---------------:| --- |
96 | Decompression | ✓   | ✓   | ✓         | ✓  |   ✓            | ✗  |
97 |  Compression  | ✓   | ✓   | ✓         | ✓  |   ✓            | ✗  |
99 Note that formats can be chained:
100 - `.tar.gz`
101 - `.tar.xz`
102 - `.tar.gz.xz`
103 - `.tar.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.lz.lz.lz.lz.lz.lz.lz.lz.lz.lz.bz.bz.bz.bz.bz.bz.bz`
104 - `.gz.xz`
105 - etc...
107 ## Contributing
109 `ouch` is 100% made out of voluntary work, any small contribution is welcome!
111 - Open an issue.
112 - Open a pr.
113 - Share it to a friend.