Armin Friedl
53a15e5a7f
All checks were successful
continuous-integration/drone/push Build is passing
The log level can now be set by environment variable `XWIM_LOGLEVEL`. Alternatively a default log level per build type (determined by NDEBUG flag) is used. |
||
---|---|---|
doc | ||
src | ||
subprojects | ||
test | ||
.clang-format | ||
.drone.yml | ||
.gitignore | ||
meson.build | ||
README.md |
XWIM
Do What I Mean Extractor
Continuing the emacs tradition of "Do What I Mean" tools, xwim is a replacement for the excellent, but unfortunately unmaintained, dtrx. xwim is a command line tool that targets two problems with archives:
- Command line tools for extracting archives are often archaic and differ considerably between formats
- Inconsiderately packaged archives tend to spill their content over the directory they are extracted to
Usage
Invoking xwim
is as simple as:
xwim archive.tar.gz
This will extract the archive to the current folder. If the archive contains a single root folder it is just extracted as is. Otherwise xwim first creates a folder named after the archive and extracts the contents there.
Examples
Single root folder named after the archive
archive.tar.gz
|
-- archive/
|
-- file.txt
|
-- file2.txt
xwim will just extract the archive to the current directory.
Multiple files/folders in archive root
archive.tar.gz
|
-- archive/
| |
| -- file.txt
|
-- file2.txt
xwim
will create a folder archive
in the current directory and extract the
archive contents there.
Supported formats
xwim supports most formats supported by libarchive:
- 7-zip: 7z, 7zip
- zip: jar, zip
- bzip2: bz2, bzip2
- gzip: gz, gzip
- xzip: xz
- rar: rar
- tar with compression: tgz, tar.gz, tar.bz2, tar.xz
Install
xwim is currently released as a dynamically linked glibc binary only. The releases can be downloaded from https://git.friedl.net/incubator/xwim/releases and should run on most glibc based GNU/Linux distributions. The following dependencies have to be installed:
Approaching the first stable release we will release for more platforms.
Build
xwim is built with meson. To compile xwim from source you need:
Additionally you need some libraries installed:
# Get the source
git clone https://git.friedl.net/incubator/xwim.git
# Build xwim executable
cd xwim
meson build
cd build
meson compile
# Run executable on the test archive
# This will extract root.tar.gz to
# the current working directory
src/xwim test/archives/root.tar.gz
Contributing
While xwim is still in incubator phase (i.e. before version 1.0) it's main repository is hosted on https://git.friedl.net/incubator/xwim with a mirror on https://github.com/arminfriedl/xwim. With the first stable release it will most likely move to GitHub as it's main repository.
If you want to contribute, you can either issue a pull request on it's Github mirror (will be cherry picked into the main repository) or send patches to dev[at]friedl[dot]net.
If you are interested in a long-term co-maintainership you can also drop me a mail for an account on https://git.friedl.net.